diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2020-01-21 06:03:39 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2020-01-21 06:03:39 +0000 |
commit | da91b7fd521edc6b00498247c91a58a3d8c132b5 (patch) | |
tree | 91c916dcc5c61a3a4eaa8a1207b2762b980e0759 /documentapi | |
parent | d6a77cbf0cf342f2091c9c92c58ace6ed4951b89 (diff) |
Unify and factor out common code.
Diffstat (limited to 'documentapi')
-rw-r--r-- | documentapi/src/vespa/documentapi/messagebus/messages/putdocumentmessage.cpp | 4 | ||||
-rw-r--r-- | documentapi/src/vespa/documentapi/messagebus/routablefactories60.cpp | 19 |
2 files changed, 15 insertions, 8 deletions
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/putdocumentmessage.cpp b/documentapi/src/vespa/documentapi/messagebus/messages/putdocumentmessage.cpp index 6753d269ad6..2dcaccbd861 100644 --- a/documentapi/src/vespa/documentapi/messagebus/messages/putdocumentmessage.cpp +++ b/documentapi/src/vespa/documentapi/messagebus/messages/putdocumentmessage.cpp @@ -21,12 +21,12 @@ PutDocumentMessage::PutDocumentMessage(document::Document::SP document) : setDocument(std::move(document)); } -PutDocumentMessage::~PutDocumentMessage() {} +PutDocumentMessage::~PutDocumentMessage() = default; DocumentReply::UP PutDocumentMessage::doCreateReply() const { - return DocumentReply::UP(new WriteDocumentReply(DocumentProtocol::REPLY_PUTDOCUMENT)); + return std::make_unique<WriteDocumentReply>(DocumentProtocol::REPLY_PUTDOCUMENT); } bool diff --git a/documentapi/src/vespa/documentapi/messagebus/routablefactories60.cpp b/documentapi/src/vespa/documentapi/messagebus/routablefactories60.cpp index 58367410ddc..7bae7dd7e77 100644 --- a/documentapi/src/vespa/documentapi/messagebus/routablefactories60.cpp +++ b/documentapi/src/vespa/documentapi/messagebus/routablefactories60.cpp @@ -452,6 +452,17 @@ RoutableFactories60::GetDocumentMessageFactory::doEncode(const DocumentMessage & return true; } +namespace { + +std::shared_ptr<document::Document> +decodeDocument(const document::DocumentTypeRepo & repo, document::ByteBuffer & buf) { + vespalib::nbostream stream(buf.getBufferAtPos(), buf.getRemaining()); + auto doc = std::make_shared<document::Document>(repo, stream); + buf.incPos(buf.getRemaining() - stream.size()); + return doc; +} + +} DocumentReply::UP RoutableFactories60::GetDocumentReplyFactory::doDecode(document::ByteBuffer &buf) const { @@ -460,9 +471,7 @@ RoutableFactories60::GetDocumentReplyFactory::doDecode(document::ByteBuffer &buf bool hasDocument = decodeBoolean(buf); document::Document * document = nullptr; if (hasDocument) { - vespalib::nbostream stream(buf.getBufferAtPos(), buf.getRemaining()); - auto doc = std::make_shared<document::Document>(_repo, stream); - buf.incPos(buf.getRemaining() - stream.size()); + auto doc = decodeDocument(_repo, buf); document = doc.get(); reply->setDocument(std::move(doc)); } @@ -522,9 +531,7 @@ RoutableFactories60::MapVisitorReplyFactory::doEncode(const DocumentReply &, ves void RoutableFactories60::PutDocumentMessageFactory::decodeInto(PutDocumentMessage & msg, document::ByteBuffer & buf) const { - vespalib::nbostream stream(buf.getBufferAtPos(), buf.getRemaining()); - msg.setDocument(make_shared<document::Document>(_repo, stream)); - buf.incPos(stream.rp()); + msg.setDocument(decodeDocument(_repo, buf)); msg.setTimestamp(static_cast<uint64_t>(decodeLong(buf))); decodeTasCondition(msg, buf); } |