summaryrefslogtreecommitdiffstats
path: root/documentapi
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2020-01-21 06:03:39 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2020-01-21 06:03:39 +0000
commitda91b7fd521edc6b00498247c91a58a3d8c132b5 (patch)
tree91c916dcc5c61a3a4eaa8a1207b2762b980e0759 /documentapi
parentd6a77cbf0cf342f2091c9c92c58ace6ed4951b89 (diff)
Unify and factor out common code.
Diffstat (limited to 'documentapi')
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/putdocumentmessage.cpp4
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/routablefactories60.cpp19
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);
}