aboutsummaryrefslogtreecommitdiffstats
path: root/storageapi
diff options
context:
space:
mode:
authorGeir Storli <geirst@oath.com>2017-11-16 12:13:11 +0000
committerGeir Storli <geirst@oath.com>2017-11-16 12:13:11 +0000
commit44372c19d4eef184e871c2d30654ef0067516575 (patch)
tree2c799d574f6e433d071fd6d8bfc7b53b56e719dd /storageapi
parent10edd5182871638bbfef82f48c068d3e6ead9248 (diff)
Add API function to encode a bucket.
Diffstat (limited to 'storageapi')
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/protocolserialization.h1
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/protocolserialization4_2.cpp24
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.cpp14
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.h1
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_1.cpp6
5 files changed, 27 insertions, 19 deletions
diff --git a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization.h b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization.h
index 53762003428..5ceeecd3f47 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization.h
+++ b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization.h
@@ -178,6 +178,7 @@ protected:
virtual SRep::UP onDecodeBatchPutRemoveReply(const SCmd&, BBuf&) const = 0;
virtual document::Bucket getBucket(document::ByteBuffer& buf) const = 0;
+ virtual void putBucket(const document::Bucket& bucket, vespalib::GrowableByteBuffer& buf) const = 0;
virtual document::BucketSpace getBucketSpace(document::ByteBuffer& buf) const = 0;
virtual api::BucketInfo getBucketInfo(document::ByteBuffer& buf) const = 0;
virtual void putBucketInfo(const api::BucketInfo& info, vespalib::GrowableByteBuffer& buf) const = 0;
diff --git a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization4_2.cpp b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization4_2.cpp
index 3d30385e28f..9e9b5d1f797 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization4_2.cpp
+++ b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization4_2.cpp
@@ -41,7 +41,7 @@ void ProtocolSerialization4_2::onEncode(
char* pos = buf.allocate(docBlockSize);
vdslib::DocumentList copy(msg.getOperations(), pos, docBlockSize);
buf.putBoolean(msg.keepTimeStamps());
- buf.putLong(msg.getBucketId().getRawId());
+ putBucket(msg.getBucket(), buf);
onEncodeBucketInfoCommand(buf, msg);
}
@@ -66,7 +66,7 @@ ProtocolSerialization4_2::onEncode(
{
// Serialization format - allow different types of serialization depending on source.
buf.putByte(0);
- buf.putLong(msg.getBucketId().getRawId());
+ putBucket(msg.getBucket(), buf);
buf.putInt(msg.getOperationCount());
for (uint32_t i = 0; i < msg.getOperationCount(); i++) {
@@ -162,7 +162,7 @@ void ProtocolSerialization4_2::onEncode(
GBBuf& buf, const api::GetCommand& msg) const
{
buf.putString(msg.getDocumentId().toString());
- buf.putLong(msg.getBucketId().getRawId());
+ putBucket(msg.getBucket(), buf);
buf.putLong(msg.getBeforeTimestamp());
buf.putBoolean(msg.getFieldSet() == "[header]");
onEncodeCommand(buf, msg);
@@ -185,7 +185,7 @@ void ProtocolSerialization4_2::onEncode(
GBBuf& buf, const api::RemoveCommand& msg) const
{
buf.putString(msg.getDocumentId().toString());
- buf.putLong(msg.getBucketId().getRawId());
+ putBucket(msg.getBucket(), buf);
buf.putLong(msg.getTimestamp());
onEncodeBucketInfoCommand(buf, msg);
}
@@ -204,7 +204,7 @@ ProtocolSerialization4_2::onDecodeRemoveCommand(BBuf& buf) const
void ProtocolSerialization4_2::onEncode(
GBBuf& buf, const api::RevertCommand& msg) const
{
- buf.putLong(msg.getBucketId().getRawId());
+ putBucket(msg.getBucket(), buf);
buf.putInt(msg.getRevertTokens().size());
for (uint32_t i=0, n=msg.getRevertTokens().size(); i<n; ++i) {
buf.putLong(msg.getRevertTokens()[i]);
@@ -228,7 +228,7 @@ ProtocolSerialization4_2::onDecodeRevertCommand(BBuf& buf) const
void ProtocolSerialization4_2::onEncode(
GBBuf& buf, const api::CreateBucketCommand& msg) const
{
- buf.putLong(msg.getBucketId().getRawId());
+ putBucket(msg.getBucket(), buf);
onEncodeBucketInfoCommand(buf, msg);
}
@@ -244,7 +244,7 @@ ProtocolSerialization4_2::onDecodeCreateBucketCommand(BBuf& buf) const
void ProtocolSerialization4_2::onEncode(
GBBuf& buf, const api::MergeBucketCommand& msg) const
{
- buf.putLong(msg.getBucketId().getRawId());
+ putBucket(msg.getBucket(), buf);
const std::vector<api::MergeBucketCommand::Node>& nodes(msg.getNodes());
buf.putShort(nodes.size());
for (uint32_t i=0; i<nodes.size(); ++i) {
@@ -278,7 +278,7 @@ ProtocolSerialization4_2::onDecodeMergeBucketCommand(BBuf& buf) const
void ProtocolSerialization4_2::onEncode(
GBBuf& buf, const api::GetBucketDiffCommand& msg) const
{
- buf.putLong(msg.getBucketId().getRawId());
+ putBucket(msg.getBucket(), buf);
const std::vector<api::MergeBucketCommand::Node>& nodes(msg.getNodes());
buf.putShort(nodes.size());
for (uint32_t i=0; i<nodes.size(); ++i) {
@@ -327,7 +327,7 @@ ProtocolSerialization4_2::onDecodeGetBucketDiffCommand(BBuf& buf) const
void ProtocolSerialization4_2::onEncode(
GBBuf& buf, const api::ApplyBucketDiffCommand& msg) const
{
- buf.putLong(msg.getBucketId().getRawId());
+ putBucket(msg.getBucket(), buf);
const std::vector<api::MergeBucketCommand::Node>& nodes(msg.getNodes());
buf.putShort(nodes.size());
for (uint32_t i=0; i<nodes.size(); ++i) {
@@ -431,7 +431,7 @@ ProtocolSerialization4_2::onDecodeRequestBucketInfoReply(const SCmd& cmd,
void ProtocolSerialization4_2::onEncode(
GBBuf& buf, const api::NotifyBucketChangeCommand& msg) const
{
- buf.putLong(msg.getBucketId().getRawId());
+ putBucket(msg.getBucket(), buf);
putBucketInfo(msg.getBucketInfo(), buf);
onEncodeCommand(buf, msg);
}
@@ -466,7 +466,7 @@ ProtocolSerialization4_2::onDecodeNotifyBucketChangeReply(const SCmd& cmd,
void ProtocolSerialization4_2::onEncode(
GBBuf& buf, const api::SplitBucketCommand& msg) const
{
- buf.putLong(msg.getBucketId().getRawId());
+ putBucket(msg.getBucket(), buf);
buf.putByte(msg.getMinSplitBits());
buf.putByte(msg.getMaxSplitBits());
buf.putInt(msg.getMinByteSize());
@@ -627,7 +627,7 @@ void
ProtocolSerialization4_2::onEncode(GBBuf& buf, const api::RemoveLocationCommand& msg) const
{
buf.putString(msg.getDocumentSelection());
- buf.putLong(msg.getBucketId().getRawId());
+ putBucket(msg.getBucket(), buf);
onEncodeCommand(buf, msg);
}
diff --git a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.cpp b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.cpp
index 096973e91e5..1b4f44a101c 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.cpp
+++ b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.cpp
@@ -19,6 +19,12 @@ ProtocolSerialization5_0::getBucket(document::ByteBuffer& buf) const
return document::Bucket(BucketSpace::placeHolder(), bucketId);
}
+void
+ProtocolSerialization5_0::putBucket(const document::Bucket& bucket, vespalib::GrowableByteBuffer& buf) const
+{
+ buf.putLong(bucket.getBucketId().getRawId());
+}
+
document::BucketSpace
ProtocolSerialization5_0::getBucketSpace(document::ByteBuffer&) const
{
@@ -106,7 +112,7 @@ void ProtocolSerialization5_0::onEncode(
GBBuf& buf, const api::PutCommand& msg) const
{
SH::putDocument(msg.getDocument().get(), buf);
- buf.putLong(msg.getBucketId().getRawId());
+ putBucket(msg.getBucket(), buf);
buf.putLong(msg.getTimestamp());
buf.putLong(msg.getUpdateTimestamp());
onEncodeBucketInfoCommand(buf, msg);
@@ -215,7 +221,7 @@ void ProtocolSerialization5_0::onEncode(
buf.putInt(0);
}
- buf.putLong(msg.getBucketId().getRawId());
+ putBucket(msg.getBucket(), buf);
buf.putLong(msg.getTimestamp());
buf.putLong(msg.getOldTimestamp());
onEncodeBucketInfoCommand(buf, msg);
@@ -281,7 +287,7 @@ void
ProtocolSerialization5_0::onEncode(
GBBuf& buf, const api::DeleteBucketCommand& msg) const
{
- buf.putLong(msg.getBucketId().getRawId());
+ putBucket(msg.getBucket(), buf);
onEncodeBucketInfoCommand(buf, msg);
putBucketInfo(msg.getBucketInfo(), buf);
}
@@ -505,7 +511,7 @@ void
ProtocolSerialization5_0::onEncode(
GBBuf& buf, const api::JoinBucketsCommand& msg) const
{
- buf.putLong(msg.getBucketId().getRawId());
+ putBucket(msg.getBucket(), buf);
buf.putInt(msg.getSourceBuckets().size());
for (uint32_t i=0, n=msg.getSourceBuckets().size(); i<n; ++i) {
buf.putLong(msg.getSourceBuckets()[i].getRawId());
diff --git a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.h b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.h
index 12f3ee07068..796db52f420 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.h
+++ b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.h
@@ -16,6 +16,7 @@ public:
const documentapi::LoadTypeSet& loadTypes);
document::Bucket getBucket(document::ByteBuffer& buf) const override;
+ void putBucket(const document::Bucket& bucket, vespalib::GrowableByteBuffer& buf) const override;
document::BucketSpace getBucketSpace(document::ByteBuffer& buf) const override;
api::BucketInfo getBucketInfo(document::ByteBuffer& buf) const override;
void putBucketInfo(const api::BucketInfo& info, vespalib::GrowableByteBuffer& buf) const override;
diff --git a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_1.cpp b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_1.cpp
index 07095b2b523..492f8297a3d 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_1.cpp
+++ b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_1.cpp
@@ -64,7 +64,7 @@ ProtocolSerialization5_1::ProtocolSerialization5_1(
void ProtocolSerialization5_1::onEncode(
GBBuf& buf, const api::SetBucketStateCommand& msg) const
{
- buf.putLong(msg.getBucketId().getRawId());
+ putBucket(msg.getBucket(), buf);
buf.putByte(static_cast<uint8_t>(msg.getState()));
onEncodeCommand(buf, msg);
}
@@ -102,7 +102,7 @@ void ProtocolSerialization5_1::onEncode(
GBBuf& buf, const api::GetCommand& msg) const
{
buf.putString(msg.getDocumentId().toString());
- buf.putLong(msg.getBucketId().getRawId());
+ putBucket(msg.getBucket(), buf);
buf.putLong(msg.getBeforeTimestamp());
buf.putString(msg.getFieldSet());
onEncodeCommand(buf, msg);
@@ -206,7 +206,7 @@ ProtocolSerialization5_1::onDecodeCreateVisitorCommand(BBuf& buf) const
void ProtocolSerialization5_1::onEncode(
GBBuf& buf, const api::CreateBucketCommand& msg) const
{
- buf.putLong(msg.getBucketId().getRawId());
+ putBucket(msg.getBucket(), buf);
buf.putBoolean(msg.getActive());
onEncodeBucketInfoCommand(buf, msg);
}