aboutsummaryrefslogtreecommitdiffstats
path: root/documentapi
diff options
context:
space:
mode:
authorTor Brede Vekterli <vekterli@oath.com>2018-01-17 16:23:46 +0000
committerGeir Storli <geirst@yahoo-inc.com>2018-02-01 13:30:37 +0000
commit2fbbefd54be3b72730a27c394b134b439d33c212 (patch)
tree2e72872cdfdb4576b350aac09839982a877f963e /documentapi
parent2053d6ad54fbebf0d0912291c734aca799fcfaa3 (diff)
Add visitor bucket space encoding to C++
Also remove MultiOperation support, since it has already been removed from the Java DocumentProtocol.
Diffstat (limited to 'documentapi')
-rw-r--r--documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/Messages60TestCase.java2
-rw-r--r--documentapi/src/tests/messages/CMakeLists.txt12
-rw-r--r--documentapi/src/tests/messages/messages50test.cpp56
-rw-r--r--documentapi/src/tests/messages/messages50test.h2
-rw-r--r--documentapi/src/tests/messages/messages52test.cpp2
-rw-r--r--documentapi/src/tests/messages/messages52test.h2
-rw-r--r--documentapi/src/tests/messages/messages60app.cpp5
-rw-r--r--documentapi/src/tests/messages/messages60test.cpp54
-rw-r--r--documentapi/src/tests/messages/messages60test.h13
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/CMakeLists.txt1
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/documentprotocol.cpp8
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/visitor.cpp4
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/routablefactories51.cpp13
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/routablefactories51.h3
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/routablefactories60.cpp18
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/routablefactories60.h25
16 files changed, 154 insertions, 66 deletions
diff --git a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/Messages60TestCase.java b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/Messages60TestCase.java
index 70ccdc1bd1b..ca54173701e 100644
--- a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/Messages60TestCase.java
+++ b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/Messages60TestCase.java
@@ -53,7 +53,7 @@ public class Messages60TestCase extends Messages52TestCase {
msg.setVisitorOrdering(OrderingSpecification.DESCENDING);
msg.setMaxBucketsPerVisitor(2);
msg.setBucketSpace(BUCKET_SPACE);
- assertEquals(BASE_MESSAGE_LENGTH + 184 + serializedLength(BUCKET_SPACE), serialize("CreateVisitorMessage", msg));
+ assertEquals(BASE_MESSAGE_LENGTH + 178 + serializedLength(BUCKET_SPACE), serialize("CreateVisitorMessage", msg));
for (Language lang : LANGUAGES) {
msg = (CreateVisitorMessage)deserialize("CreateVisitorMessage", DocumentProtocol.MESSAGE_CREATEVISITOR, lang);
diff --git a/documentapi/src/tests/messages/CMakeLists.txt b/documentapi/src/tests/messages/CMakeLists.txt
index c34320bd78d..b762eaca657 100644
--- a/documentapi/src/tests/messages/CMakeLists.txt
+++ b/documentapi/src/tests/messages/CMakeLists.txt
@@ -29,6 +29,18 @@ vespa_add_executable(documentapi_messages52_test_app TEST
documentapi
)
vespa_add_test(NAME documentapi_messages52_test_app COMMAND documentapi_messages52_test_app)
+vespa_add_executable(documentapi_messages60_test_app TEST
+ SOURCES
+ testbase.cpp
+ messages50test.cpp
+ messages51test.cpp
+ messages52test.cpp
+ messages60test.cpp
+ messages60app.cpp
+ DEPENDS
+ documentapi
+)
+vespa_add_test(NAME documentapi_messages60_test_app COMMAND documentapi_messages60_test_app)
vespa_add_executable(documentapi_error_codes_test_app_app TEST
SOURCES
error_codes_test.cpp
diff --git a/documentapi/src/tests/messages/messages50test.cpp b/documentapi/src/tests/messages/messages50test.cpp
index b50f30c1f91..db82bdce54d 100644
--- a/documentapi/src/tests/messages/messages50test.cpp
+++ b/documentapi/src/tests/messages/messages50test.cpp
@@ -31,7 +31,6 @@ Messages50Test::Messages50Test()
putTest(DocumentProtocol::MESSAGE_GETBUCKETSTATE, TEST_METHOD(Messages50Test::testGetBucketStateMessage));
putTest(DocumentProtocol::MESSAGE_GETDOCUMENT, TEST_METHOD(Messages50Test::testGetDocumentMessage));
putTest(DocumentProtocol::MESSAGE_MAPVISITOR, TEST_METHOD(Messages50Test::testMapVisitorMessage));
- putTest(DocumentProtocol::MESSAGE_MULTIOPERATION, TEST_METHOD(Messages50Test::testMultiOperationMessage));
putTest(DocumentProtocol::MESSAGE_PUTDOCUMENT, TEST_METHOD(Messages50Test::testPutDocumentMessage));
putTest(DocumentProtocol::MESSAGE_QUERYRESULT, TEST_METHOD(Messages50Test::testQueryResultMessage));
putTest(DocumentProtocol::MESSAGE_REMOVEDOCUMENT, TEST_METHOD(Messages50Test::testRemoveDocumentMessage));
@@ -51,7 +50,6 @@ Messages50Test::Messages50Test()
putTest(DocumentProtocol::REPLY_GETBUCKETSTATE, TEST_METHOD(Messages50Test::testGetBucketStateReply));
putTest(DocumentProtocol::REPLY_GETDOCUMENT, TEST_METHOD(Messages50Test::testGetDocumentReply));
putTest(DocumentProtocol::REPLY_MAPVISITOR, TEST_METHOD(Messages50Test::testMapVisitorReply));
- putTest(DocumentProtocol::REPLY_MULTIOPERATION, TEST_METHOD(Messages50Test::testMultiOperationReply));
putTest(DocumentProtocol::REPLY_PUTDOCUMENT, TEST_METHOD(Messages50Test::testPutDocumentReply));
putTest(DocumentProtocol::REPLY_QUERYRESULT, TEST_METHOD(Messages50Test::testQueryResultReply));
putTest(DocumentProtocol::REPLY_REMOVEDOCUMENT, TEST_METHOD(Messages50Test::testRemoveDocumentReply));
@@ -325,41 +323,6 @@ Messages50Test::testDocumentSummaryMessage()
}
bool
-Messages50Test::testMultiOperationMessage()
-{
- document::Document::SP doc =
- createDoc(getTypeRepo(), "testdoc", "doc:scheme:foo");
- std::vector<char> buffer(1024);
- document::BucketIdFactory factory;
-
- vdslib::WritableDocumentList doclist(getTypeRepoSp(),
- &buffer[0], buffer.size());
- ASSERT_TRUE(doclist.addPut(*doc));
-
- size_t n = MESSAGE_BASE_LENGTH;
- n += sizeof(uint32_t); // routable object type
- n += sizeof(uint64_t); // bucket id
- n += sizeof(uint32_t); // bytes in docblock
- n += sizeof(uint32_t); // num operations
- n += sizeof(vdslib::DocumentList::MetaEntry);
- n += doc->serialize()->getLength();
- n += 1; // boolean keepTimeStamps
-
- MultiOperationMessage msg(document::BucketId(16, factory.getBucketId(doc->getId()).getRawId()), doclist);
- EXPECT_EQUAL(n, serialize("MultiOperationMessage", msg));
- for (uint32_t lang = 0; lang < NUM_LANGUAGES; ++lang) {
- mbus::Routable::UP obj = deserialize("MultiOperationMessage", DocumentProtocol::MESSAGE_MULTIOPERATION, lang);
- if (EXPECT_TRUE(obj.get() != NULL)) {
- MultiOperationMessage &ref = static_cast<MultiOperationMessage&>(*obj);
- EXPECT_EQUAL((uint32_t)1, ref.getOperations().size());
- EXPECT_EQUAL(*doc, *dynamic_cast<document::Document*>(ref.getOperations().begin()->getDocument().get()));
- EXPECT_EQUAL(document::BucketId(16, factory.getBucketId(doc->getId()).getRawId()), ref.getBucketId());
- }
- }
- return true;
-}
-
-bool
Messages50Test::testGetDocumentMessage()
{
GetDocumentMessage tmp(document::DocumentId("doc:scheme:"), 0);
@@ -701,25 +664,6 @@ Messages50Test::testSearchResultMessage()
return true;
}
-
-bool
-Messages50Test::testMultiOperationReply()
-{
- WriteDocumentReply reply(DocumentProtocol::REPLY_MULTIOPERATION);
- reply.setHighestModificationTimestamp(30);
-
- EXPECT_EQUAL(13u, serialize("MultiOperationReply", reply));
-
- for (uint32_t lang = 0; lang < NUM_LANGUAGES; ++lang) {
- mbus::Routable::UP obj = deserialize("MultiOperationReply", DocumentProtocol::REPLY_MULTIOPERATION, lang);
- if (EXPECT_TRUE(obj.get() != NULL)) {
- WriteDocumentReply &ref = static_cast<WriteDocumentReply&>(*obj);
- EXPECT_EQUAL(30u, ref.getHighestModificationTimestamp());
- }
- }
- return true;
-}
-
bool
Messages50Test::testUpdateDocumentMessage()
{
diff --git a/documentapi/src/tests/messages/messages50test.h b/documentapi/src/tests/messages/messages50test.h
index 8711264ee7a..c764f814a45 100644
--- a/documentapi/src/tests/messages/messages50test.h
+++ b/documentapi/src/tests/messages/messages50test.h
@@ -33,8 +33,6 @@ public:
bool testGetDocumentReply();
bool testMapVisitorMessage();
bool testMapVisitorReply();
- bool testMultiOperationMessage();
- bool testMultiOperationReply();
bool testPutDocumentMessage();
bool testPutDocumentReply();
bool testQueryResultMessage();
diff --git a/documentapi/src/tests/messages/messages52test.cpp b/documentapi/src/tests/messages/messages52test.cpp
index 33eb5134dce..642fbc2fc41 100644
--- a/documentapi/src/tests/messages/messages52test.cpp
+++ b/documentapi/src/tests/messages/messages52test.cpp
@@ -21,7 +21,7 @@ createDoc(const DocumentTypeRepo &repo, const string &type_name, const string &i
}
-static const int MESSAGE_BASE_LENGTH = 5;
+static constexpr int MESSAGE_BASE_LENGTH = 5;
Messages52Test::Messages52Test()
{
diff --git a/documentapi/src/tests/messages/messages52test.h b/documentapi/src/tests/messages/messages52test.h
index c45f00fb4b4..a663ae15fdc 100644
--- a/documentapi/src/tests/messages/messages52test.h
+++ b/documentapi/src/tests/messages/messages52test.h
@@ -15,7 +15,7 @@ public:
bool testUpdateDocumentMessage();
bool testRemoveDocumentMessage();
-private:
+protected:
static size_t serializedLength(const string & str) {
return sizeof(int32_t) + str.size();
}
diff --git a/documentapi/src/tests/messages/messages60app.cpp b/documentapi/src/tests/messages/messages60app.cpp
new file mode 100644
index 00000000000..a6c626d5b20
--- /dev/null
+++ b/documentapi/src/tests/messages/messages60app.cpp
@@ -0,0 +1,5 @@
+// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "messages60test.h"
+
+TEST_APPHOOK(Messages60Test);
diff --git a/documentapi/src/tests/messages/messages60test.cpp b/documentapi/src/tests/messages/messages60test.cpp
new file mode 100644
index 00000000000..d26f1ef319f
--- /dev/null
+++ b/documentapi/src/tests/messages/messages60test.cpp
@@ -0,0 +1,54 @@
+// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "messages60test.h"
+#include <vespa/documentapi/documentapi.h>
+
+static constexpr int MESSAGE_BASE_LENGTH = 5;
+
+Messages60Test::Messages60Test() {
+ // This list MUST mirror the list of routable factories from the DocumentProtocol constructor that support
+ // version 6.x. When adding tests to this list, please KEEP THEM ORDERED alphabetically like they are now.
+ putTest(DocumentProtocol::MESSAGE_CREATEVISITOR, TEST_METHOD(Messages60Test::testCreateVisitorMessage));
+}
+
+// TODO code dupe with parent classes
+bool Messages60Test::testCreateVisitorMessage() {
+ CreateVisitorMessage tmp("SomeLibrary", "myvisitor", "newyork", "london");
+ tmp.setDocumentSelection("true and false or true");
+ tmp.getParameters().set("myvar", "somevalue");
+ tmp.getParameters().set("anothervar", uint64_t(34));
+ tmp.getBuckets().push_back(document::BucketId(16, 1234));
+ tmp.setVisitRemoves(true);
+ tmp.setFieldSet("foo bar");
+ tmp.setVisitorOrdering(document::OrderingSpecification::DESCENDING);
+ tmp.setMaxBucketsPerVisitor(2);
+ tmp.setBucketSpace("bjarne");
+
+ EXPECT_EQUAL(MESSAGE_BASE_LENGTH + serializedLength("bjarne") + 178, serialize("CreateVisitorMessage", tmp));
+
+ for (uint32_t lang = 0; lang < NUM_LANGUAGES; ++lang) {
+ mbus::Routable::UP obj = deserialize("CreateVisitorMessage", DocumentProtocol::MESSAGE_CREATEVISITOR, lang);
+ if (EXPECT_TRUE(obj)) {
+ auto& ref = dynamic_cast<CreateVisitorMessage&>(*obj);
+
+ EXPECT_EQUAL(string("SomeLibrary"), ref.getLibraryName());
+ EXPECT_EQUAL(string("myvisitor"), ref.getInstanceId());
+ EXPECT_EQUAL(string("newyork"), ref.getControlDestination());
+ EXPECT_EQUAL(string("london"), ref.getDataDestination());
+ EXPECT_EQUAL(string("true and false or true"), ref.getDocumentSelection());
+ EXPECT_EQUAL(string("foo bar"), ref.getFieldSet());
+ EXPECT_EQUAL(uint32_t(8), ref.getMaximumPendingReplyCount());
+ EXPECT_EQUAL(true, ref.visitRemoves());
+ EXPECT_EQUAL(false, ref.visitHeadersOnly());
+ EXPECT_EQUAL(false, ref.visitInconsistentBuckets());
+ EXPECT_EQUAL(size_t(1), ref.getBuckets().size());
+ EXPECT_EQUAL(document::BucketId(16, 1234), ref.getBuckets()[0]);
+ EXPECT_EQUAL(string("somevalue"), ref.getParameters().get("myvar"));
+ EXPECT_EQUAL(uint64_t(34), ref.getParameters().get("anothervar", uint64_t(1)));
+ EXPECT_EQUAL(document::OrderingSpecification::DESCENDING, ref.getVisitorOrdering());
+ EXPECT_EQUAL(uint32_t(2), ref.getMaxBucketsPerVisitor());
+ EXPECT_EQUAL(string("bjarne"), ref.getBucketSpace());
+ }
+ }
+ return true;
+} \ No newline at end of file
diff --git a/documentapi/src/tests/messages/messages60test.h b/documentapi/src/tests/messages/messages60test.h
new file mode 100644
index 00000000000..2b61c118f18
--- /dev/null
+++ b/documentapi/src/tests/messages/messages60test.h
@@ -0,0 +1,13 @@
+// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#pragma once
+
+#include "messages52test.h"
+
+class Messages60Test : public Messages52Test {
+protected:
+ // TODO finalize version
+ const vespalib::Version getVersion() const override { return vespalib::Version(6, 999, 0); }
+public:
+ Messages60Test();
+ bool testCreateVisitorMessage();
+};
diff --git a/documentapi/src/vespa/documentapi/messagebus/CMakeLists.txt b/documentapi/src/vespa/documentapi/messagebus/CMakeLists.txt
index 8de99ad78db..1df761b8af5 100644
--- a/documentapi/src/vespa/documentapi/messagebus/CMakeLists.txt
+++ b/documentapi/src/vespa/documentapi/messagebus/CMakeLists.txt
@@ -8,6 +8,7 @@ vespa_add_library(documentapi_documentapimessagebus OBJECT
routablefactories50.cpp
routablefactories51.cpp
routablefactories52.cpp
+ routablefactories60.cpp
routablerepository.cpp
routingpolicyfactories.cpp
routingpolicyrepository.cpp
diff --git a/documentapi/src/vespa/documentapi/messagebus/documentprotocol.cpp b/documentapi/src/vespa/documentapi/messagebus/documentprotocol.cpp
index a1837b6bcd0..b2588657825 100644
--- a/documentapi/src/vespa/documentapi/messagebus/documentprotocol.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/documentprotocol.cpp
@@ -3,6 +3,7 @@
#include "routablefactories50.h"
#include "routablefactories51.h"
#include "routablefactories52.h"
+#include "routablefactories60.h"
#include "routingpolicyfactories.h"
#include "routablerepository.h"
#include "routingpolicyrepository.h"
@@ -49,10 +50,12 @@ DocumentProtocol::DocumentProtocol(const LoadTypeSet& loadTypes,
vespalib::VersionSpecification version50(5, 0);
vespalib::VersionSpecification version51(5, 1);
vespalib::VersionSpecification version52(5, 115);
+ vespalib::VersionSpecification version6(6, 999); // TODO finalize version
std::vector<vespalib::VersionSpecification> from50 = { version50, version51, version52 };
std::vector<vespalib::VersionSpecification> from51 = { version51, version52 };
std::vector<vespalib::VersionSpecification> from52 = { version52 };
+ std::vector<vespalib::VersionSpecification> from6 = { version6 };
// Add 5.0 serialization
putRoutableFactory(MESSAGE_BATCHDOCUMENTUPDATE, IRoutableFactory::SP(new RoutableFactories50::BatchDocumentUpdateMessageFactory(*_repo)), from50);
@@ -65,7 +68,6 @@ DocumentProtocol::DocumentProtocol(const LoadTypeSet& loadTypes,
putRoutableFactory(MESSAGE_GETBUCKETSTATE, IRoutableFactory::SP(new RoutableFactories50::GetBucketStateMessageFactory()), from50);
putRoutableFactory(MESSAGE_GETDOCUMENT, IRoutableFactory::SP(new RoutableFactories50::GetDocumentMessageFactory()), from50);
putRoutableFactory(MESSAGE_MAPVISITOR, IRoutableFactory::SP(new RoutableFactories50::MapVisitorMessageFactory(*_repo)), from50);
- putRoutableFactory(MESSAGE_MULTIOPERATION, IRoutableFactory::SP(new RoutableFactories50::MultiOperationMessageFactory(_repo)), from50);
putRoutableFactory(MESSAGE_PUTDOCUMENT, IRoutableFactory::SP(new RoutableFactories50::PutDocumentMessageFactory(*_repo)), from50);
putRoutableFactory(MESSAGE_QUERYRESULT, IRoutableFactory::SP(new RoutableFactories50::QueryResultMessageFactory()), from50);
putRoutableFactory(MESSAGE_REMOVEDOCUMENT, IRoutableFactory::SP(new RoutableFactories50::RemoveDocumentMessageFactory()), from50);
@@ -84,7 +86,6 @@ DocumentProtocol::DocumentProtocol(const LoadTypeSet& loadTypes,
putRoutableFactory(REPLY_GETBUCKETSTATE, IRoutableFactory::SP(new RoutableFactories50::GetBucketStateReplyFactory()), from50);
putRoutableFactory(REPLY_GETDOCUMENT, IRoutableFactory::SP(new RoutableFactories50::GetDocumentReplyFactory(*_repo)), from50);
putRoutableFactory(REPLY_MAPVISITOR, IRoutableFactory::SP(new RoutableFactories50::MapVisitorReplyFactory()), from50);
- putRoutableFactory(REPLY_MULTIOPERATION, IRoutableFactory::SP(new RoutableFactories50::MultiOperationReplyFactory()), from50);
putRoutableFactory(REPLY_PUTDOCUMENT, IRoutableFactory::SP(new RoutableFactories50::PutDocumentReplyFactory()), from50);
putRoutableFactory(REPLY_QUERYRESULT, IRoutableFactory::SP(new RoutableFactories50::QueryResultReplyFactory()), from50);
putRoutableFactory(REPLY_REMOVEDOCUMENT, IRoutableFactory::SP(new RoutableFactories50::RemoveDocumentReplyFactory()), from50);
@@ -104,6 +105,9 @@ DocumentProtocol::DocumentProtocol(const LoadTypeSet& loadTypes,
putRoutableFactory(MESSAGE_PUTDOCUMENT, IRoutableFactory::SP(new RoutableFactories52::PutDocumentMessageFactory(*_repo)), from52);
putRoutableFactory(MESSAGE_UPDATEDOCUMENT, IRoutableFactory::SP(new RoutableFactories52::UpdateDocumentMessageFactory(*_repo)), from52);
putRoutableFactory(MESSAGE_REMOVEDOCUMENT, IRoutableFactory::SP(new RoutableFactories52::RemoveDocumentMessageFactory()), from52);
+
+ // Add 6.x serialization (TODO finalize version)
+ putRoutableFactory(MESSAGE_CREATEVISITOR, IRoutableFactory::SP(new RoutableFactories60::CreateVisitorMessageFactory(*_repo)), from6);
}
DocumentProtocol::~DocumentProtocol() { }
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/visitor.cpp b/documentapi/src/vespa/documentapi/messagebus/messages/visitor.cpp
index c870775fae7..44ec234b75e 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/visitor.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/visitor.cpp
@@ -11,7 +11,7 @@ CreateVisitorMessage::CreateVisitorMessage() :
_instanceId(),
_controlDestination(),
_dataDestination(),
- _bucketSpace(),
+ _bucketSpace("default"), // TODO repo
_docSelection(),
_maxPendingReplyCount(8),
_buckets(),
@@ -35,7 +35,7 @@ CreateVisitorMessage::CreateVisitorMessage(const string& libraryName,
_instanceId(instanceId),
_controlDestination(controlDestination),
_dataDestination(dataDestination),
- _bucketSpace(),
+ _bucketSpace("default"), // TODO repo
_docSelection(),
_maxPendingReplyCount(8),
_buckets(),
diff --git a/documentapi/src/vespa/documentapi/messagebus/routablefactories51.cpp b/documentapi/src/vespa/documentapi/messagebus/routablefactories51.cpp
index 2eb539c7d3d..15d485e6181 100644
--- a/documentapi/src/vespa/documentapi/messagebus/routablefactories51.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/routablefactories51.cpp
@@ -86,6 +86,7 @@ RoutableFactories51::CreateVisitorMessageFactory::doDecode(document::ByteBuffer
msg.setVisitorDispatcherVersion(50);
msg.setVisitorOrdering((document::OrderingSpecification::Order)decodeInt(buf));
msg.setMaxBucketsPerVisitor(decodeInt(buf));
+ msg.setBucketSpace(decodeBucketSpace(buf));
return ret;
}
@@ -124,8 +125,18 @@ RoutableFactories51::CreateVisitorMessageFactory::doEncode(const DocumentMessage
buf.putInt(msg.getVisitorOrdering());
buf.putInt(msg.getMaxBucketsPerVisitor());
+ return encodeBucketSpace(msg.getBucketSpace(), buf);
+}
- return true;
+bool RoutableFactories51::CreateVisitorMessageFactory::encodeBucketSpace(
+ vespalib::stringref bucketSpace,
+ vespalib::GrowableByteBuffer& buf) const {
+ (void) buf;
+ return (bucketSpace == "default"); // TODO used fixed repo here
+}
+
+string RoutableFactories51::CreateVisitorMessageFactory::decodeBucketSpace(document::ByteBuffer&) const {
+ return "default"; // TODO fixed bucket repo
}
DocumentMessage::UP
diff --git a/documentapi/src/vespa/documentapi/messagebus/routablefactories51.h b/documentapi/src/vespa/documentapi/messagebus/routablefactories51.h
index 06efc3df6bd..fc20324b418 100644
--- a/documentapi/src/vespa/documentapi/messagebus/routablefactories51.h
+++ b/documentapi/src/vespa/documentapi/messagebus/routablefactories51.h
@@ -130,6 +130,9 @@ public:
protected:
DocumentMessage::UP doDecode(document::ByteBuffer &buf) const override;
bool doEncode(const DocumentMessage &msg, vespalib::GrowableByteBuffer &buf) const override;
+
+ virtual bool encodeBucketSpace(vespalib::stringref bucketSpace, vespalib::GrowableByteBuffer& buf) const;
+ virtual string decodeBucketSpace(document::ByteBuffer&) const;
public:
CreateVisitorMessageFactory(const document::DocumentTypeRepo &r) : _repo(r) {}
};
diff --git a/documentapi/src/vespa/documentapi/messagebus/routablefactories60.cpp b/documentapi/src/vespa/documentapi/messagebus/routablefactories60.cpp
new file mode 100644
index 00000000000..45a4a5195d1
--- /dev/null
+++ b/documentapi/src/vespa/documentapi/messagebus/routablefactories60.cpp
@@ -0,0 +1,18 @@
+// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "routablefactories60.h"
+
+namespace documentapi {
+
+bool RoutableFactories60::CreateVisitorMessageFactory::encodeBucketSpace(
+ vespalib::stringref bucketSpace,
+ vespalib::GrowableByteBuffer& buf) const {
+ buf.putString(bucketSpace);
+ return true;
+}
+
+string RoutableFactories60::CreateVisitorMessageFactory::decodeBucketSpace(document::ByteBuffer& buf) const {
+ return decodeString(buf);
+}
+
+} \ No newline at end of file
diff --git a/documentapi/src/vespa/documentapi/messagebus/routablefactories60.h b/documentapi/src/vespa/documentapi/messagebus/routablefactories60.h
new file mode 100644
index 00000000000..22b9e0f3307
--- /dev/null
+++ b/documentapi/src/vespa/documentapi/messagebus/routablefactories60.h
@@ -0,0 +1,25 @@
+// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#pragma once
+
+#include "routablefactories52.h"
+
+namespace documentapi {
+/**
+ * This class encapsulates all the {@link RoutableFactory} classes needed to implement factories for the document
+ * routable. When adding new factories to this class, please KEEP THE THEM ORDERED alphabetically like they are now.
+ */
+class RoutableFactories60 : public RoutableFactories52 {
+public:
+ RoutableFactories60() = delete;
+
+ class CreateVisitorMessageFactory : public RoutableFactories52::CreateVisitorMessageFactory {
+ bool encodeBucketSpace(vespalib::stringref bucketSpace, vespalib::GrowableByteBuffer& buf) const override;
+ string decodeBucketSpace(document::ByteBuffer&) const override;
+ public:
+ CreateVisitorMessageFactory(const document::DocumentTypeRepo& r)
+ : RoutableFactories52::CreateVisitorMessageFactory(r) {}
+ };
+
+};
+
+} \ No newline at end of file