summaryrefslogtreecommitdiffstats
path: root/documentapi
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2020-01-20 15:50:01 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2020-01-20 15:50:01 +0000
commit1f9cb926b91659840e687f9cab0f508522d58690 (patch)
treebff0152fd295b4d88f6a65089c09db82b6e00810 /documentapi
parent1d3fe1bedb648cfd497eeee61478fa45f332255b (diff)
Make it known that getting serialized size will always be expensive.
Diffstat (limited to 'documentapi')
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/documentstate.cpp16
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/routablefactories60.cpp17
2 files changed, 14 insertions, 19 deletions
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/documentstate.cpp b/documentapi/src/vespa/documentapi/messagebus/messages/documentstate.cpp
index 718611dfc04..6c8394b1b4c 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/documentstate.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/documentstate.cpp
@@ -15,12 +15,11 @@ DocumentState::DocumentState(const DocumentState& o)
: _gid(o._gid), _timestamp(o._timestamp), _removeEntry(o._removeEntry)
{
if (o._docId.get() != 0) {
- _docId.reset(new document::DocumentId(*o._docId));
+ _docId = std::make_unique<document::DocumentId>(*o._docId);
}
}
-DocumentState::DocumentState(const document::DocumentId& id,
- uint64_t timestamp, bool removeEntry)
+DocumentState::DocumentState(const document::DocumentId& id, uint64_t timestamp, bool removeEntry)
: _docId(new document::DocumentId(id)),
_gid(_docId->getGlobalId()),
_timestamp(timestamp),
@@ -28,8 +27,7 @@ DocumentState::DocumentState(const document::DocumentId& id,
{
}
-DocumentState::DocumentState(const document::GlobalId& gid,
- uint64_t timestamp, bool removeEntry)
+DocumentState::DocumentState(const document::GlobalId& gid, uint64_t timestamp, bool removeEntry)
: _gid(gid), _timestamp(timestamp), _removeEntry(removeEntry) {}
DocumentState::DocumentState(document::ByteBuffer& buf)
@@ -39,10 +37,10 @@ DocumentState::DocumentState(document::ByteBuffer& buf)
buf.getByte(hasDocId);
if (hasDocId) {
vespalib::nbostream stream(buf.getBufferAtPos(), buf.getRemaining());
- _docId.reset(new document::DocumentId(stream));
+ _docId = std::make_unique<document::DocumentId>(stream);
buf.incPos(stream.rp());
}
- char* gid = buf.getBufferAtPos();
+ const char* gid = buf.getBufferAtPos();
buf.incPos(document::GlobalId::LENGTH);
_gid.set(gid);
buf.getLongNetwork((int64_t&) _timestamp);
@@ -55,8 +53,8 @@ DocumentState&
DocumentState::operator=(const DocumentState& other)
{
_docId.reset();
- if (other._docId.get() != 0) {
- _docId.reset(new document::DocumentId(*other._docId));
+ if (other._docId) {
+ _docId = std::make_unique<document::DocumentId>(*other._docId);
}
_gid = other._gid;
_timestamp = other._timestamp;
diff --git a/documentapi/src/vespa/documentapi/messagebus/routablefactories60.cpp b/documentapi/src/vespa/documentapi/messagebus/routablefactories60.cpp
index 2fe9ffa3da9..58367410ddc 100644
--- a/documentapi/src/vespa/documentapi/messagebus/routablefactories60.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/routablefactories60.cpp
@@ -438,14 +438,12 @@ RoutableFactories60::GetBucketStateReplyFactory::doEncode(const DocumentReply &o
DocumentMessage::UP
RoutableFactories60::GetDocumentMessageFactory::doDecode(document::ByteBuffer &buf) const
{
- return DocumentMessage::UP(
- new GetDocumentMessage(decodeDocumentId(buf),
- decodeString(buf)));
+ document::DocumentId docId = decodeDocumentId(buf);
+ return std::make_unique<GetDocumentMessage>(docId, decodeString(buf));
}
bool
-RoutableFactories60::GetDocumentMessageFactory::doEncode(const DocumentMessage &obj,
- vespalib::GrowableByteBuffer &buf) const
+RoutableFactories60::GetDocumentMessageFactory::doEncode(const DocumentMessage &obj, vespalib::GrowableByteBuffer &buf) const
{
const GetDocumentMessage &msg = static_cast<const GetDocumentMessage&>(obj);
@@ -526,7 +524,7 @@ 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(buf.getRemaining() - stream.size());
+ buf.incPos(stream.rp());
msg.setTimestamp(static_cast<uint64_t>(decodeLong(buf)));
decodeTasCondition(msg, buf);
}
@@ -550,9 +548,6 @@ RoutableFactories60::PutDocumentReplyFactory::doDecode(document::ByteBuffer &buf
{
auto reply = make_unique<WriteDocumentReply>(DocumentProtocol::REPLY_PUTDOCUMENT);
reply->setHighestModificationTimestamp(decodeLong(buf));
-
- // Doing an explicit move here to force converting result to an rvalue.
- // This is done automatically in GCC >= 5.
return reply;
}
@@ -768,7 +763,9 @@ RoutableFactories60::StatDocumentReplyFactory::doEncode(const DocumentReply &, v
void
RoutableFactories60::UpdateDocumentMessageFactory::decodeInto(UpdateDocumentMessage & msg, document::ByteBuffer & buf) const {
- msg.setDocumentUpdate(document::DocumentUpdate::createHEAD(_repo, buf));
+ vespalib::nbostream stream(buf.getBufferAtPos(), buf.getRemaining());
+ msg.setDocumentUpdate(document::DocumentUpdate::createHEAD(_repo, stream));
+ buf.incPos(stream.rp());
msg.setOldTimestamp(static_cast<uint64_t>(decodeLong(buf)));
msg.setNewTimestamp(static_cast<uint64_t>(decodeLong(buf)));
decodeTasCondition(msg, buf);