summaryrefslogtreecommitdiffstats
path: root/persistence
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2022-01-06 12:44:51 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2022-01-06 13:51:43 +0000
commit20abbaa6eb1b411bbc43b98c3bb5bc8e79a86153 (patch)
treed0eb22f90787408b402848f06b8b5f578542c3d4 /persistence
parent3110d9380650e0f68fad2a621ea71d083519446a (diff)
Use enum class for the flags.
Diffstat (limited to 'persistence')
-rw-r--r--persistence/src/tests/dummyimpl/dummypersistence_test.cpp16
-rw-r--r--persistence/src/tests/spi/clusterstatetest.cpp8
-rw-r--r--persistence/src/vespa/persistence/dummyimpl/dummypersistence.cpp7
-rw-r--r--persistence/src/vespa/persistence/spi/docentry.cpp36
-rw-r--r--persistence/src/vespa/persistence/spi/docentry.h20
-rw-r--r--persistence/src/vespa/persistence/spi/test.cpp4
6 files changed, 44 insertions, 47 deletions
diff --git a/persistence/src/tests/dummyimpl/dummypersistence_test.cpp b/persistence/src/tests/dummyimpl/dummypersistence_test.cpp
index 3b30f5e29ca..2c245f377e1 100644
--- a/persistence/src/tests/dummyimpl/dummypersistence_test.cpp
+++ b/persistence/src/tests/dummyimpl/dummypersistence_test.cpp
@@ -19,14 +19,14 @@ namespace {
struct Fixture {
BucketContent content;
- void insert(DocumentId id, Timestamp timestamp, int meta_flags) {
+ void insert(DocumentId id, Timestamp timestamp, DocumentMetaFlags meta_flags) {
content.insert(DocEntry::create(timestamp, meta_flags, id));
}
Fixture() {
- insert(DocumentId("id:ns:type::test:3"), Timestamp(3), NONE);
- insert(DocumentId("id:ns:type::test:1"), Timestamp(1), NONE);
- insert(DocumentId("id:ns:type::test:2"), Timestamp(2), NONE);
+ insert(DocumentId("id:ns:type::test:3"), Timestamp(3), DocumentMetaFlags::NONE);
+ insert(DocumentId("id:ns:type::test:1"), Timestamp(1), DocumentMetaFlags::NONE);
+ insert(DocumentId("id:ns:type::test:2"), Timestamp(2), DocumentMetaFlags::NONE);
}
};
@@ -63,13 +63,13 @@ TEST_F("require that BucketContent can provide bucket info", Fixture) {
uint32_t lastChecksum = 0;
EXPECT_NOT_EQUAL(lastChecksum, f.content.getBucketInfo().getChecksum());
lastChecksum = f.content.getBucketInfo().getChecksum();
- f.insert(DocumentId("id:ns:type::test:3"), Timestamp(4), NONE);
+ f.insert(DocumentId("id:ns:type::test:3"), Timestamp(4), DocumentMetaFlags::NONE);
EXPECT_NOT_EQUAL(lastChecksum, f.content.getBucketInfo().getChecksum());
lastChecksum = f.content.getBucketInfo().getChecksum();
- f.insert(DocumentId("id:ns:type::test:2"), Timestamp(5), REMOVE_ENTRY);
+ f.insert(DocumentId("id:ns:type::test:2"), Timestamp(5), DocumentMetaFlags::REMOVE_ENTRY);
EXPECT_NOT_EQUAL(lastChecksum, f.content.getBucketInfo().getChecksum());
- f.insert(DocumentId("id:ns:type::test:1"), Timestamp(6), REMOVE_ENTRY);
- f.insert(DocumentId("id:ns:type::test:3"), Timestamp(7), REMOVE_ENTRY);
+ f.insert(DocumentId("id:ns:type::test:1"), Timestamp(6), DocumentMetaFlags::REMOVE_ENTRY);
+ f.insert(DocumentId("id:ns:type::test:3"), Timestamp(7), DocumentMetaFlags::REMOVE_ENTRY);
EXPECT_EQUAL(0u, f.content.getBucketInfo().getChecksum());
}
diff --git a/persistence/src/tests/spi/clusterstatetest.cpp b/persistence/src/tests/spi/clusterstatetest.cpp
index 205661ba930..b044552d672 100644
--- a/persistence/src/tests/spi/clusterstatetest.cpp
+++ b/persistence/src/tests/spi/clusterstatetest.cpp
@@ -266,7 +266,7 @@ TEST(DocEntryTest, test_basics) {
}
TEST(DocEntryTest, test_meta_only) {
- DocEntry::UP e = DocEntry::create(Timestamp(9), 0);
+ DocEntry::UP e = DocEntry::create(Timestamp(9), DocumentMetaFlags::NONE);
EXPECT_EQ(9, e->getTimestamp());
EXPECT_FALSE(e->isRemove());
EXPECT_EQ(24, e->getSize());
@@ -274,13 +274,13 @@ TEST(DocEntryTest, test_meta_only) {
EXPECT_EQ(nullptr, e->getDocument());
EXPECT_EQ(nullptr, e->getDocumentId());
- DocEntry::UP r = DocEntry::create(Timestamp(666), 1);
+ DocEntry::UP r = DocEntry::create(Timestamp(666), DocumentMetaFlags::REMOVE_ENTRY);
EXPECT_EQ(666, r->getTimestamp());
EXPECT_TRUE(r->isRemove());
}
TEST(DocEntryTest, test_docid_only) {
- DocEntry::UP e = DocEntry::create(Timestamp(9), 0, DocumentId("id:test:test::1"));
+ DocEntry::UP e = DocEntry::create(Timestamp(9), DocumentMetaFlags::NONE, DocumentId("id:test:test::1"));
EXPECT_EQ(9, e->getTimestamp());
EXPECT_FALSE(e->isRemove());
EXPECT_EQ(48, e->getSize());
@@ -291,7 +291,7 @@ TEST(DocEntryTest, test_docid_only) {
TEST(DocEntryTest, test_document_only) {
document::TestDocMan testDocMan;
- DocEntry::UP e = DocEntry::create(Timestamp(9), 0, testDocMan.createRandomDocument(0, 1000));
+ DocEntry::UP e = DocEntry::create(Timestamp(9), testDocMan.createRandomDocument(0, 1000));
EXPECT_EQ(9, e->getTimestamp());
EXPECT_FALSE(e->isRemove());
EXPECT_EQ(664, e->getSize());
diff --git a/persistence/src/vespa/persistence/dummyimpl/dummypersistence.cpp b/persistence/src/vespa/persistence/dummyimpl/dummypersistence.cpp
index 19c03a97f05..a85c1c49752 100644
--- a/persistence/src/vespa/persistence/dummyimpl/dummypersistence.cpp
+++ b/persistence/src/vespa/persistence/dummyimpl/dummypersistence.cpp
@@ -435,7 +435,7 @@ DummyPersistence::putAsync(const Bucket& b, Timestamp t, Document::SP doc, Conte
}
} else {
LOG(spam, "Inserting document %s", doc->toString(true).c_str());
- auto entry = DocEntry::create(t, NONE, Document::UP(doc->clone()));
+ auto entry = DocEntry::create(t, Document::UP(doc->clone()));
(*bc)->insert(std::move(entry));
bc.reset();
onComplete->onComplete(std::make_unique<Result>());
@@ -493,7 +493,7 @@ DummyPersistence::removeAsync(const Bucket& b, std::vector<TimeStampAndDocumentI
}
DocEntry::SP entry((*bc)->getEntry(id));
numRemoves += (entry.get() && !entry->isRemove()) ? 1 : 0;
- auto remEntry = DocEntry::create(t, REMOVE_ENTRY, id);
+ auto remEntry = DocEntry::create(t, DocumentMetaFlags::REMOVE_ENTRY, id);
if ((*bc)->hasTimestamp(t)) {
(*bc)->eraseEntry(t);
@@ -658,8 +658,7 @@ DummyPersistence::iterate(IteratorId id, uint64_t maxByteSize, Context& ctx) con
assert(entry->getDocument());
// Create new document with only wanted fields.
Document::UP filtered(FieldSet::createDocumentSubsetCopy(*entry->getDocument(), *it->_fieldSet));
- auto ret = DocEntry::create(entry->getTimestamp(), entry->getFlags(),
- std::move(filtered), entry->getDocumentSize());
+ auto ret = DocEntry::create(entry->getTimestamp(), std::move(filtered), entry->getDocumentSize());
entries.push_back(std::move(ret));
} else {
// Use entry as-is.
diff --git a/persistence/src/vespa/persistence/spi/docentry.cpp b/persistence/src/vespa/persistence/spi/docentry.cpp
index e586b4e414f..3235de25d46 100644
--- a/persistence/src/vespa/persistence/spi/docentry.cpp
+++ b/persistence/src/vespa/persistence/spi/docentry.cpp
@@ -11,7 +11,7 @@ namespace {
class DocEntryWithId final : public DocEntry {
public:
- DocEntryWithId(Timestamp t, int metaFlags, const DocumentId &docId);
+ DocEntryWithId(Timestamp t, DocumentMetaFlags metaFlags, const DocumentId &docId);
~DocEntryWithId();
vespalib::string toString() const override;
const DocumentId* getDocumentId() const override { return _documentId.get(); }
@@ -22,7 +22,7 @@ private:
class DocEntryWithDoc final : public DocEntry {
public:
- DocEntryWithDoc(Timestamp t, int metaFlags, DocumentUP doc);
+ DocEntryWithDoc(Timestamp t, DocumentUP doc);
/**
* Constructor that can be used by providers that already know
@@ -30,7 +30,7 @@ public:
* call to getSerializedSize can be avoided. This value shall be the size of the document _before_
* any field filtering is performed.
*/
- DocEntryWithDoc(Timestamp t, int metaFlags, DocumentUP doc, size_t serializedDocumentSize);
+ DocEntryWithDoc(Timestamp t, DocumentUP doc, size_t serializedDocumentSize);
~DocEntryWithDoc();
vespalib::string toString() const override;
const Document* getDocument() const override { return _document.get(); }
@@ -41,17 +41,17 @@ private:
DocumentUP _document;
};
-DocEntryWithDoc::DocEntryWithDoc(Timestamp t, int metaFlags, DocumentUP doc)
- : DocEntry(t, metaFlags, doc->serialize().size()),
+DocEntryWithDoc::DocEntryWithDoc(Timestamp t, DocumentUP doc)
+ : DocEntry(t, DocumentMetaFlags::NONE, doc->serialize().size()),
_document(std::move(doc))
{ }
-DocEntryWithDoc::DocEntryWithDoc(Timestamp t, int metaFlags, DocumentUP doc, size_t serializedDocumentSize)
- : DocEntry(t, metaFlags, serializedDocumentSize),
+DocEntryWithDoc::DocEntryWithDoc(Timestamp t, DocumentUP doc, size_t serializedDocumentSize)
+ : DocEntry(t, DocumentMetaFlags::NONE, serializedDocumentSize),
_document(std::move(doc))
{ }
-DocEntryWithId::DocEntryWithId(Timestamp t, int metaFlags, const DocumentId& docId)
+DocEntryWithId::DocEntryWithId(Timestamp t, DocumentMetaFlags metaFlags, const DocumentId& docId)
: DocEntry(t, metaFlags, docId.getSerializedSize()),
_documentId(std::make_unique<DocumentId>(docId))
{ }
@@ -63,7 +63,7 @@ vespalib::string
DocEntryWithId::toString() const
{
std::ostringstream out;
- out << "DocEntry(" << getTimestamp() << ", " << getFlags() << ", " << *_documentId << ")";
+ out << "DocEntry(" << getTimestamp() << ", " << int(getFlags()) << ", " << *_documentId << ")";
return out.str();
}
@@ -71,7 +71,7 @@ vespalib::string
DocEntryWithDoc::toString() const
{
std::ostringstream out;
- out << "DocEntry(" << getTimestamp() << ", " << getFlags() << ", ";
+ out << "DocEntry(" << getTimestamp() << ", " << int(getFlags()) << ", ";
if (_document.get()) {
out << "Doc(" << _document->getId() << ")";
} else {
@@ -84,20 +84,20 @@ DocEntryWithDoc::toString() const
}
DocEntry::UP
-DocEntry::create(Timestamp t, int metaFlags) {
- return std::make_unique<DocEntry>(t, metaFlags);
+DocEntry::create(Timestamp t, DocumentMetaFlags metaFlags) {
+ return UP(new DocEntry(t, metaFlags));
}
DocEntry::UP
-DocEntry::create(Timestamp t, int metaFlags, const DocumentId &docId) {
+DocEntry::create(Timestamp t, DocumentMetaFlags metaFlags, const DocumentId &docId) {
return std::make_unique<DocEntryWithId>(t, metaFlags, docId);
}
DocEntry::UP
-DocEntry::create(Timestamp t, int metaFlags, DocumentUP doc) {
- return std::make_unique<DocEntryWithDoc>(t, metaFlags, std::move(doc));
+DocEntry::create(Timestamp t, DocumentUP doc) {
+ return std::make_unique<DocEntryWithDoc>(t, std::move(doc));
}
DocEntry::UP
-DocEntry::create(Timestamp t, int metaFlags, DocumentUP doc, SizeType serializedDocumentSize) {
- return std::make_unique<DocEntryWithDoc>(t, metaFlags, std::move(doc), serializedDocumentSize);
+DocEntry::create(Timestamp t, DocumentUP doc, SizeType serializedDocumentSize) {
+ return std::make_unique<DocEntryWithDoc>(t, std::move(doc), serializedDocumentSize);
}
DocEntry::~DocEntry() = default;
@@ -111,7 +111,7 @@ vespalib::string
DocEntry::toString() const
{
std::ostringstream out;
- out << "DocEntry(" << _timestamp << ", " << _metaFlags << ", metadata only)";
+ out << "DocEntry(" << _timestamp << ", " << int(_metaFlags) << ", metadata only)";
return out.str();
}
diff --git a/persistence/src/vespa/persistence/spi/docentry.h b/persistence/src/vespa/persistence/spi/docentry.h
index 90be8eedc0c..d2da3f03881 100644
--- a/persistence/src/vespa/persistence/spi/docentry.h
+++ b/persistence/src/vespa/persistence/spi/docentry.h
@@ -17,7 +17,7 @@
namespace storage::spi {
-enum DocumentMetaFlags {
+enum class DocumentMetaFlags {
NONE = 0x0,
REMOVE_ENTRY = 0x1
};
@@ -28,15 +28,14 @@ public:
using UP = std::unique_ptr<DocEntry>;
using SP = std::shared_ptr<DocEntry>;
- DocEntry(Timestamp t, int metaFlags) : DocEntry(t, metaFlags, 0) { }
DocEntry(const DocEntry &) = delete;
DocEntry & operator=(const DocEntry &) = delete;
DocEntry(DocEntry &&) = delete;
DocEntry & operator=(DocEntry &&) = delete;
virtual ~DocEntry();
- bool isRemove() const { return (_metaFlags & REMOVE_ENTRY); }
+ bool isRemove() const { return (_metaFlags == DocumentMetaFlags::REMOVE_ENTRY); }
Timestamp getTimestamp() const { return _timestamp; }
- int getFlags() const { return _metaFlags; }
+ DocumentMetaFlags getFlags() const { return _metaFlags; }
/**
* @return In-memory size of this doc entry, including document instance.
* In essence: serialized size of document + sizeof(DocEntry).
@@ -55,19 +54,20 @@ public:
virtual const Document* getDocument() const { return nullptr; }
virtual const DocumentId* getDocumentId() const { return nullptr; }
virtual DocumentUP releaseDocument();
- static UP create(Timestamp t, int metaFlags);
- static UP create(Timestamp t, int metaFlags, const DocumentId &docId);
- static UP create(Timestamp t, int metaFlags, DocumentUP doc);
- static UP create(Timestamp t, int metaFlags, DocumentUP doc, SizeType serializedDocumentSize);
+ static UP create(Timestamp t, DocumentMetaFlags metaFlags);
+ static UP create(Timestamp t, DocumentMetaFlags metaFlags, const DocumentId &docId);
+ static UP create(Timestamp t, DocumentUP doc);
+ static UP create(Timestamp t, DocumentUP doc, SizeType serializedDocumentSize);
protected:
- DocEntry(Timestamp t, int metaFlags, SizeType size)
+ DocEntry(Timestamp t, DocumentMetaFlags metaFlags, SizeType size)
: _timestamp(t),
_metaFlags(metaFlags),
_size(size)
{}
private:
+ DocEntry(Timestamp t, DocumentMetaFlags metaFlags) : DocEntry(t, metaFlags, 0) { }
Timestamp _timestamp;
- int _metaFlags;
+ DocumentMetaFlags _metaFlags;
SizeType _size;
};
diff --git a/persistence/src/vespa/persistence/spi/test.cpp b/persistence/src/vespa/persistence/spi/test.cpp
index 0f10b839f98..9aaa26adb59 100644
--- a/persistence/src/vespa/persistence/spi/test.cpp
+++ b/persistence/src/vespa/persistence/spi/test.cpp
@@ -21,9 +21,7 @@ std::unique_ptr<DocEntry>
cloneDocEntry(const DocEntry & e) {
std::unique_ptr<DocEntry> ret;
if (e.getDocument()) {
- ret = DocEntry::create(e.getTimestamp(), e.getFlags(),
- std::make_unique<Document>(*e.getDocument()),
- e.getDocumentSize());
+ ret = DocEntry::create(e.getTimestamp(), std::make_unique<Document>(*e.getDocument()), e.getDocumentSize());
} else if (e.getDocumentId()) {
ret = DocEntry::create(e.getTimestamp(), e.getFlags(), *e.getDocumentId());
} else {