diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2017-08-24 17:47:41 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2017-08-24 17:47:41 +0200 |
commit | e12f3f8bafd8258ae091890f42709b64948a462e (patch) | |
tree | 25774f32e873cae3d22a641ca61e2d0725b86837 /documentapi/src | |
parent | 54db78e20f3bf04d498a5e6a3c4459ec7fee506a (diff) |
Separate interface with a const getXXX for readonly and another getXXXSP when you really need the SP.
Diffstat (limited to 'documentapi/src')
10 files changed, 38 insertions, 44 deletions
diff --git a/documentapi/src/tests/messagebus/messagebus_test.cpp b/documentapi/src/tests/messagebus/messagebus_test.cpp index 7cad7356c8e..d8920b0577b 100644 --- a/documentapi/src/tests/messagebus/messagebus_test.cpp +++ b/documentapi/src/tests/messagebus/messagebus_test.cpp @@ -81,7 +81,7 @@ void Test::testMessage() { new document::DocumentUpdate(*testdoc_type, document::DocumentId(document::DocIdString( "testdoc", "testme2"))))); - EXPECT_TRUE(!(upd1.getDocumentUpdate()->getId() == upd2.getDocumentUpdate()->getId())); + EXPECT_TRUE(!(upd1.getDocumentUpdate().getId() == upd2.getDocumentUpdate().getId())); DocumentMessage& msg2 = static_cast<DocumentMessage&>(upd2); EXPECT_TRUE(msg2.getType() == DocumentProtocol::MESSAGE_UPDATEDOCUMENT); diff --git a/documentapi/src/tests/messages/messages50test.cpp b/documentapi/src/tests/messages/messages50test.cpp index 8c20ef77201..964e4e12288 100644 --- a/documentapi/src/tests/messages/messages50test.cpp +++ b/documentapi/src/tests/messages/messages50test.cpp @@ -444,8 +444,8 @@ Messages50Test::testPutDocumentMessage() mbus::Routable::UP obj = deserialize("PutDocumentMessage", DocumentProtocol::MESSAGE_PUTDOCUMENT, lang); if (EXPECT_TRUE(obj.get() != NULL)) { PutDocumentMessage &ref = static_cast<PutDocumentMessage&>(*obj); - EXPECT_TRUE(ref.getDocument()->getType().getName() == "testdoc"); - EXPECT_TRUE(ref.getDocument()->getId().toString() == "doc:scheme:"); + EXPECT_TRUE(ref.getDocument().getType().getName() == "testdoc"); + EXPECT_TRUE(ref.getDocument().getId().toString() == "doc:scheme:"); EXPECT_EQUAL(666u, ref.getTimestamp()); EXPECT_EQUAL(37u, ref.getApproxSize()); } @@ -737,7 +737,7 @@ Messages50Test::testUpdateDocumentMessage() mbus::Routable::UP obj = deserialize("UpdateDocumentMessage", DocumentProtocol::MESSAGE_UPDATEDOCUMENT, lang); if (EXPECT_TRUE(obj.get() != NULL)) { UpdateDocumentMessage &ref = static_cast<UpdateDocumentMessage&>(*obj); - EXPECT_EQUAL(*upd, *ref.getDocumentUpdate()); + EXPECT_EQUAL(*upd, ref.getDocumentUpdate()); EXPECT_EQUAL(666u, ref.getOldTimestamp()); EXPECT_EQUAL(777u, ref.getNewTimestamp()); EXPECT_EQUAL(85u, ref.getApproxSize()); @@ -1047,8 +1047,8 @@ Messages50Test::testGetDocumentReply() if (EXPECT_TRUE(obj.get() != NULL)) { GetDocumentReply &ref = static_cast<GetDocumentReply&>(*obj); - EXPECT_EQUAL(string("testdoc"), ref.getDocument()->getType().getName()); - EXPECT_EQUAL(string("doc:scheme:"), ref.getDocument()->getId().toString()); + EXPECT_EQUAL(string("testdoc"), ref.getDocument().getType().getName()); + EXPECT_EQUAL(string("doc:scheme:"), ref.getDocument().getId().toString()); } } return true; diff --git a/documentapi/src/tests/messages/messages52test.cpp b/documentapi/src/tests/messages/messages52test.cpp index d6394012688..33eb5134dce 100644 --- a/documentapi/src/tests/messages/messages52test.cpp +++ b/documentapi/src/tests/messages/messages52test.cpp @@ -52,8 +52,8 @@ Messages52Test::testPutDocumentMessage() if (EXPECT_TRUE(routableUp.get() != nullptr)) { auto & deserializedMsg = static_cast<PutDocumentMessage &>(*routableUp); - EXPECT_EQUAL(msg.getDocument()->getType().getName(), deserializedMsg.getDocument()->getType().getName()); - EXPECT_EQUAL(msg.getDocument()->getId().toString(), deserializedMsg.getDocument()->getId().toString()); + EXPECT_EQUAL(msg.getDocument().getType().getName(), deserializedMsg.getDocument().getType().getName()); + EXPECT_EQUAL(msg.getDocument().getId().toString(), deserializedMsg.getDocument().getId().toString()); EXPECT_EQUAL(msg.getTimestamp(), deserializedMsg.getTimestamp()); EXPECT_EQUAL(67u, deserializedMsg.getApproxSize()); EXPECT_EQUAL(msg.getCondition().getSelection(), deserializedMsg.getCondition().getSelection()); @@ -90,8 +90,7 @@ Messages52Test::testUpdateDocumentMessage() const DocumentTypeRepo & repo = getTypeRepo(); const document::DocumentType & docType = *repo.getDocumentType("testdoc"); - document::DocumentUpdate::SP docUpdate(new document::DocumentUpdate(docType, - document::DocumentId("doc:scheme:"))); + auto docUpdate = std::make_shared<document::DocumentUpdate>(docType, document::DocumentId("doc:scheme:")); docUpdate->addFieldPathUpdate(document::FieldPathUpdate::CP( new document::RemoveFieldPathUpdate("intfield", "testdoc.intfield > 0"))); @@ -108,7 +107,7 @@ Messages52Test::testUpdateDocumentMessage() if (EXPECT_TRUE(routableUp.get() != nullptr)) { auto & deserializedMsg = static_cast<UpdateDocumentMessage &>(*routableUp); - EXPECT_EQUAL(*msg.getDocumentUpdate(), *deserializedMsg.getDocumentUpdate()); + EXPECT_EQUAL(msg.getDocumentUpdate(), deserializedMsg.getDocumentUpdate()); EXPECT_EQUAL(msg.getOldTimestamp(), deserializedMsg.getOldTimestamp()); EXPECT_EQUAL(msg.getNewTimestamp(), deserializedMsg.getNewTimestamp()); EXPECT_EQUAL(115u, deserializedMsg.getApproxSize()); diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/getdocumentreply.h b/documentapi/src/vespa/documentapi/messagebus/messages/getdocumentreply.h index f4feb712d8d..2cff36325ab 100644 --- a/documentapi/src/vespa/documentapi/messagebus/messages/getdocumentreply.h +++ b/documentapi/src/vespa/documentapi/messagebus/messages/getdocumentreply.h @@ -38,7 +38,8 @@ public: * * @return The document. */ - const DocumentSP & getDocument() const { return _document; } + const document::Document & getDocument() const { return *_document; } + bool hasDocument() const { return _document.get() != nullptr; } /** * Sets the document retrieved. diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/putdocumentmessage.h b/documentapi/src/vespa/documentapi/messagebus/messages/putdocumentmessage.h index 38419bafa40..9bc1c088dfa 100644 --- a/documentapi/src/vespa/documentapi/messagebus/messages/putdocumentmessage.h +++ b/documentapi/src/vespa/documentapi/messagebus/messages/putdocumentmessage.h @@ -13,15 +13,11 @@ private: uint64_t _time; protected: - // Implements DocumentMessage. DocumentReply::UP doCreateReply() const override; public: - /** - * Convenience typedef. - */ - typedef std::unique_ptr<PutDocumentMessage> UP; - typedef std::shared_ptr<PutDocumentMessage> SP; + using UP = std::unique_ptr<PutDocumentMessage>; + using SP = std::shared_ptr<PutDocumentMessage>; /** * Constructs a new document message for deserialization. @@ -41,7 +37,8 @@ public: * * @return The document. */ - const DocumentSP & getDocument() const { return _document; } + const DocumentSP & getDocumentSP() const { return _document; } + const document::Document & getDocument() const { return *_document; } /** * Sets the document to put. @@ -63,13 +60,9 @@ public: * @param time The timestamp to set. */ void setTimestamp(uint64_t time) { _time = time; } - bool hasSequenceId() const override; - uint64_t getSequenceId() const override; - uint32_t getType() const override; - string toString() const override { return "putdocumentmessage"; } }; diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/updatedocumentmessage.h b/documentapi/src/vespa/documentapi/messagebus/messages/updatedocumentmessage.h index c1ce6224c5c..3a320960515 100644 --- a/documentapi/src/vespa/documentapi/messagebus/messages/updatedocumentmessage.h +++ b/documentapi/src/vespa/documentapi/messagebus/messages/updatedocumentmessage.h @@ -42,8 +42,8 @@ public: * * @return The update. */ - const DocumentUpdateSP & getDocumentUpdate() const { return _documentUpdate; } - + const DocumentUpdateSP & getDocumentUpdateSP() const { return _documentUpdate; } + const document::DocumentUpdate & getDocumentUpdate() const { return *_documentUpdate; } /** * Sets the document update to perform. * diff --git a/documentapi/src/vespa/documentapi/messagebus/policies/documentrouteselectorpolicy.cpp b/documentapi/src/vespa/documentapi/messagebus/policies/documentrouteselectorpolicy.cpp index 011b54305bb..6756f694267 100644 --- a/documentapi/src/vespa/documentapi/messagebus/policies/documentrouteselectorpolicy.cpp +++ b/documentapi/src/vespa/documentapi/messagebus/policies/documentrouteselectorpolicy.cpp @@ -124,12 +124,10 @@ DocumentRouteSelectorPolicy::select(mbus::RoutingContext &context, const vespali const mbus::Message &msg = context.getMessage(); switch(msg.getType()) { case DocumentProtocol::MESSAGE_PUTDOCUMENT: - return it->second->contains(*static_cast<const PutDocumentMessage&>(msg).getDocument()) == - Result::True; + return it->second->contains(static_cast<const PutDocumentMessage&>(msg).getDocument()) == Result::True; case DocumentProtocol::MESSAGE_UPDATEDOCUMENT: - return it->second->contains(*static_cast<const UpdateDocumentMessage&>(msg).getDocumentUpdate()) != - Result::False; + return it->second->contains(static_cast<const UpdateDocumentMessage&>(msg).getDocumentUpdate()) != Result::False; case DocumentProtocol::MESSAGE_MULTIOPERATION: { diff --git a/documentapi/src/vespa/documentapi/messagebus/policies/searchcolumnpolicy.cpp b/documentapi/src/vespa/documentapi/messagebus/policies/searchcolumnpolicy.cpp index a6b1e200cd4..38610aca551 100644 --- a/documentapi/src/vespa/documentapi/messagebus/policies/searchcolumnpolicy.cpp +++ b/documentapi/src/vespa/documentapi/messagebus/policies/searchcolumnpolicy.cpp @@ -53,20 +53,20 @@ SearchColumnPolicy::select(mbus::RoutingContext &context) const mbus::Message &msg = context.getMessage(); switch(msg.getType()) { case DocumentProtocol::MESSAGE_PUTDOCUMENT: - id = &static_cast<const PutDocumentMessage&>(msg).getDocument()->getId(); + id = &static_cast<const PutDocumentMessage&>(msg).getDocument().getId(); break; case DocumentProtocol::MESSAGE_GETDOCUMENT: - id = &static_cast<const GetDocumentMessage&>(msg).getDocumentId(); + id = &static_cast<const GetDocumentMessage&>(msg).getDocumentId(); break; case DocumentProtocol::MESSAGE_REMOVEDOCUMENT: - id = &static_cast<const RemoveDocumentMessage&>(msg).getDocumentId(); + id = &static_cast<const RemoveDocumentMessage&>(msg).getDocumentId(); break; case DocumentProtocol::MESSAGE_UPDATEDOCUMENT: - id = &static_cast<const UpdateDocumentMessage&>(msg).getDocumentUpdate()->getId(); - break; + id = &static_cast<const UpdateDocumentMessage&>(msg).getDocumentUpdate().getId(); + break; case DocumentProtocol::MESSAGE_MULTIOPERATION: bucketId = (static_cast<const MultiOperationMessage&>(msg)).getBucketId(); diff --git a/documentapi/src/vespa/documentapi/messagebus/policies/storagepolicy.cpp b/documentapi/src/vespa/documentapi/messagebus/policies/storagepolicy.cpp index cace5b6576a..b7b451e8ddf 100644 --- a/documentapi/src/vespa/documentapi/messagebus/policies/storagepolicy.cpp +++ b/documentapi/src/vespa/documentapi/messagebus/policies/storagepolicy.cpp @@ -119,7 +119,7 @@ StoragePolicy::doSelect(mbus::RoutingContext &context) document::BucketId id; switch(msg.getType()) { case DocumentProtocol::MESSAGE_PUTDOCUMENT: - id = _bucketIdFactory.getBucketId(static_cast<const PutDocumentMessage&>(msg).getDocument()->getId()); + id = _bucketIdFactory.getBucketId(static_cast<const PutDocumentMessage&>(msg).getDocument().getId()); break; case DocumentProtocol::MESSAGE_GETDOCUMENT: @@ -131,7 +131,7 @@ StoragePolicy::doSelect(mbus::RoutingContext &context) break; case DocumentProtocol::MESSAGE_UPDATEDOCUMENT: - id = _bucketIdFactory.getBucketId(static_cast<const UpdateDocumentMessage&>(msg).getDocumentUpdate()->getId()); + id = _bucketIdFactory.getBucketId(static_cast<const UpdateDocumentMessage&>(msg).getDocumentUpdate().getId()); break; case DocumentProtocol::MESSAGE_MULTIOPERATION: diff --git a/documentapi/src/vespa/documentapi/messagebus/routablefactories50.cpp b/documentapi/src/vespa/documentapi/messagebus/routablefactories50.cpp index b566e36d8d5..504b3fcdf4f 100644 --- a/documentapi/src/vespa/documentapi/messagebus/routablefactories50.cpp +++ b/documentapi/src/vespa/documentapi/messagebus/routablefactories50.cpp @@ -567,13 +567,16 @@ RoutableFactories50::GetDocumentReplyFactory::doDecode(document::ByteBuffer &buf GetDocumentReply &reply = static_cast<GetDocumentReply&>(*ret); bool hasDocument = decodeBoolean(buf); + document::Document * document = nullptr; if (hasDocument) { - reply.setDocument(std::make_shared<document::Document>(_repo, buf)); + auto doc = std::make_shared<document::Document>(_repo, buf); + document = doc.get(); + reply.setDocument(std::move(doc)); } int64_t lastModified = decodeLong(buf); reply.setLastModified(lastModified); - if (reply.getDocument()) { - reply.getDocument()->setLastModified(lastModified); + if (hasDocument) { + document->setLastModified(lastModified); } return ret; @@ -584,10 +587,10 @@ RoutableFactories50::GetDocumentReplyFactory::doEncode(const DocumentReply &obj, { const GetDocumentReply &reply = static_cast<const GetDocumentReply&>(obj); - buf.putByte(reply.getDocument().get() == NULL ? 0 : 1); - if (reply.getDocument().get() != NULL) { + buf.putByte(reply.hasDocument() ? 1 : 0); + if (reply.hasDocument()) { nbostream stream; - reply.getDocument()->serialize(stream); + reply.getDocument().serialize(stream); buf.putBytes(stream.peek(), stream.size()); } buf.putLong(reply.getLastModified()); @@ -691,7 +694,7 @@ RoutableFactories50::PutDocumentMessageFactory::doEncode(const DocumentMessage & auto & msg = static_cast<const PutDocumentMessage &>(obj); nbostream stream; - msg.getDocument()->serialize(stream); + msg.getDocument().serialize(stream); buf.putBytes(stream.peek(), stream.size()); buf.putLong(static_cast<int64_t>(msg.getTimestamp())); @@ -948,7 +951,7 @@ RoutableFactories50::UpdateDocumentMessageFactory::doEncode(const DocumentMessag const UpdateDocumentMessage &msg = static_cast<const UpdateDocumentMessage&>(obj); vespalib::nbostream stream; - msg.getDocumentUpdate()->serializeHEAD(stream); + msg.getDocumentUpdate().serializeHEAD(stream); buf.putBytes(stream.peek(), stream.size()); buf.putLong((int64_t)msg.getOldTimestamp()); buf.putLong((int64_t)msg.getNewTimestamp()); |