summaryrefslogtreecommitdiffstats
path: root/storageapi
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@oath.com>2018-03-16 22:03:09 +0100
committerHenning Baldersheim <balder@oath.com>2018-03-19 09:59:20 +0100
commit9335569e415a04beaab3ebcb62e02faf37be7ad3 (patch)
tree0468dce784c03994f0de8e70a5ad9be3da109dbe /storageapi
parentf52a07e96ccf1baf2b4bbfa148bff540ba35357d (diff)
Remove MultiOperation
Conflicts: storage/src/tests/persistence/filestorage/filestormanagertest.cpp storage/src/vespa/storage/persistence/persistencethread.cpp Fix merge conflict.
Diffstat (limited to 'storageapi')
-rw-r--r--storageapi/src/tests/mbusprot/mbusprot.4.2.serialization.V_4_2_STABLE4
-rw-r--r--storageapi/src/tests/mbusprot/storageprotocoltest.cpp27
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/protocolserialization.cpp31
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/protocolserialization.h15
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/protocolserialization4_2.cpp50
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/protocolserialization4_2.h9
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.cpp27
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.h8
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_1.cpp22
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/storagecommand.cpp4
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/storagecommand.h2
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/storagereply.cpp11
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/storagereply.h4
-rw-r--r--storageapi/src/vespa/storageapi/message/CMakeLists.txt1
-rw-r--r--storageapi/src/vespa/storageapi/message/batch.cpp1
-rw-r--r--storageapi/src/vespa/storageapi/message/batch.h4
-rw-r--r--storageapi/src/vespa/storageapi/message/bucketsplitting.h6
-rw-r--r--storageapi/src/vespa/storageapi/message/multioperation.cpp108
-rw-r--r--storageapi/src/vespa/storageapi/message/multioperation.h92
-rw-r--r--storageapi/src/vespa/storageapi/message/removelocation.cpp6
-rw-r--r--storageapi/src/vespa/storageapi/message/removelocation.h4
-rw-r--r--storageapi/src/vespa/storageapi/message/visitor.h7
-rw-r--r--storageapi/src/vespa/storageapi/messageapi/messagehandler.h8
-rw-r--r--storageapi/src/vespa/storageapi/messageapi/storagemessage.cpp3
-rw-r--r--storageapi/src/vespa/storageapi/messageapi/storagemessage.h4
25 files changed, 48 insertions, 410 deletions
diff --git a/storageapi/src/tests/mbusprot/mbusprot.4.2.serialization.V_4_2_STABLE b/storageapi/src/tests/mbusprot/mbusprot.4.2.serialization.V_4_2_STABLE
index 4ee14c628b4..5045a98b037 100644
--- a/storageapi/src/tests/mbusprot/mbusprot.4.2.serialization.V_4_2_STABLE
+++ b/storageapi/src/tests/mbusprot/mbusprot.4.2.serialization.V_4_2_STABLE
@@ -62,9 +62,5 @@ MessageType(18, Visitor Create)
\00\00\00\12\00\00\00\07library\00\00\00\02id\00\00\00\0ddoc selection\00\00\00\01\00\00\00\0bcontroldest\00\00\00\08datadest\00\00\00\02\00\00\00\00\00\00\00{\00\00\00\00\00\00\01\c8\00\00\00\02@\00\00\00\00\00\00\01@\00\00\00\00\00\00\02\00\01\01\00\00\00d\00\00\00\03\00\00\00\0dinto darkness\00\00\00\09bind them\00\00\00\08one ring\00\00\00\10to rule them all\00\00\00\0bone ring to\00\00\00\0dfind them and\00\00\00\00\00\00\00\00\01\ff\ff
MessageType(19, Visitor Create Reply, reply of Visitor Create)
\00\00\00\13\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\01
-MessageType(70, MultiOperation)
-\00\00\00F\00\00'\10\01\00\00\00\00\00\00\00\00\00\00\00\a6&\00\00$\00\00\00\ca&\00\00F\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\1edoc:test:test\00\01testdoctype1\00\00\01\00\00\00=\00\01\05\00= ;This is the contents of the test document.
It ain't much.
\00\00P\00\00\f1\f1\f1\f1\f1\00\00\00\00\00\00\00\00\01\ff\ff
-MessageType(71, MultiOperation Reply, reply of MultiOperation)
-\00\00\00GP\00\00\f1\f1\f1\f1\f1\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\01 \ No newline at end of file
diff --git a/storageapi/src/tests/mbusprot/storageprotocoltest.cpp b/storageapi/src/tests/mbusprot/storageprotocoltest.cpp
index a04b0d71e96..73fbb43a4e9 100644
--- a/storageapi/src/tests/mbusprot/storageprotocoltest.cpp
+++ b/storageapi/src/tests/mbusprot/storageprotocoltest.cpp
@@ -5,7 +5,6 @@
#include <vespa/storageapi/message/bucketsplitting.h>
#include <vespa/storageapi/message/internal.h>
#include <vespa/storageapi/message/removelocation.h>
-#include <vespa/storageapi/message/multioperation.h>
#include <vespa/storageapi/message/batch.h>
#include <vespa/storageapi/mbusprot/storageprotocol.h>
#include <vespa/storageapi/mbusprot/storagecommand.h>
@@ -92,7 +91,6 @@ struct StorageProtocolTest : public CppUnit::TestFixture {
void testSplitBucket51();
void testSplitBucketChain51();
void testJoinBuckets51();
- void testMultiOperation51();
void testBatchPutRemove51();
void testCreateVisitor51();
void testDestroyVisitor51();
@@ -135,7 +133,6 @@ struct StorageProtocolTest : public CppUnit::TestFixture {
CPPUNIT_TEST(testCreateVisitor51);
CPPUNIT_TEST(testDestroyVisitor51);
CPPUNIT_TEST(testRemoveLocation51);
- CPPUNIT_TEST(testMultiOperation51);
CPPUNIT_TEST(testBatchPutRemove51);
CPPUNIT_TEST(testInternalMessage);
CPPUNIT_TEST(testSetBucketState51);
@@ -784,30 +781,6 @@ StorageProtocolTest::testApplyBucketDiff51()
}
void
-StorageProtocolTest::testMultiOperation51()
-{
- ScopedName test("testMultiOperation51");
-
- document::BucketId bucketId(20, 0xf1f1f1f1f1ull);
- document::Bucket bucket(makeDocumentBucket(bucketId));
- DocumentTypeRepo::SP repo(new DocumentTypeRepo);
- MultiOperationCommand::SP
- cmd(new MultiOperationCommand(repo, bucket, 10000));
- cmd->getOperations().addPut(*_testDoc);
- MultiOperationCommand::SP cmd2(copyCommand(cmd, _version5_1));
- CPPUNIT_ASSERT_EQUAL(bucketId, cmd2->getBucketId());
- CPPUNIT_ASSERT_EQUAL(*_testDoc,
- *cmd2->getOperations().begin()->getDocument());
-
- MultiOperationReply::SP reply(new MultiOperationReply(*cmd2));
- MultiOperationReply::SP reply2(copyReply(reply));
-
- recordOutput(*cmd2);
- recordOutput(*reply2);
- recordSerialization50();
-}
-
-void
StorageProtocolTest::testBatchPutRemove51()
{
ScopedName test("testBatchPutRemove51");
diff --git a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization.cpp b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization.cpp
index dcc2239ac06..98beda4d483 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization.cpp
+++ b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization.cpp
@@ -4,16 +4,13 @@
#include "serializationhelper.h"
#include "storagecommand.h"
#include "storagereply.h"
-
-#include <vespa/storageapi/messageapi/storagemessage.h>
-#include <vespa/storageapi/message/bucket.h>
#include <vespa/storageapi/message/bucketsplitting.h>
-#include <vespa/storageapi/message/persistence.h>
-#include <vespa/storageapi/message/multioperation.h>
-#include <vespa/storageapi/message/batch.h>
+#include <vespa/storageapi/message/visitor.h>
#include <vespa/storageapi/message/removelocation.h>
+#include <vespa/storageapi/message/batch.h>
#include <vespa/vespalib/util/exceptions.h>
-#include <vespa/vespalib/util/growablebytebuffer.h>
+
+
#include <sstream>
#include <vespa/log/log.h>
@@ -21,8 +18,7 @@ LOG_SETUP(".storage.api.mbusprot.serialization.base");
namespace storage::mbusprot {
-ProtocolSerialization::ProtocolSerialization(
- const document::DocumentTypeRepo::SP& repo)
+ProtocolSerialization::ProtocolSerialization(const document::DocumentTypeRepo::SP& repo)
: _repo(repo)
{
}
@@ -118,12 +114,6 @@ ProtocolSerialization::encode(const api::StorageMessage& msg) const
case api::MessageType::JOINBUCKETS_REPLY_ID:
onEncode(buf, static_cast<const api::JoinBucketsReply&>(msg));
break;
- case api::MessageType::MULTIOPERATION_ID:
- onEncode(buf, static_cast<const api::MultiOperationCommand&>(msg));
- break;
- case api::MessageType::MULTIOPERATION_REPLY_ID:
- onEncode(buf, static_cast<const api::MultiOperationReply&>(msg));
- break;
case api::MessageType::VISITOR_CREATE_ID:
onEncode(buf, static_cast<const api::CreateVisitorCommand&>(msg));
break;
@@ -209,8 +199,6 @@ ProtocolSerialization::decodeCommand(mbus::BlobRef data) const
cmd = onDecodeSplitBucketCommand(buf); break;
case api::MessageType::JOINBUCKETS_ID:
cmd = onDecodeJoinBucketsCommand(buf); break;
- case api::MessageType::MULTIOPERATION_ID:
- cmd = onDecodeMultiOperationCommand(buf); break;
case api::MessageType::VISITOR_CREATE_ID:
cmd = onDecodeCreateVisitorCommand(buf); break;
case api::MessageType::VISITOR_DESTROY_ID:
@@ -228,12 +216,11 @@ ProtocolSerialization::decodeCommand(mbus::BlobRef data) const
throw vespalib::IllegalArgumentException(ost.str(), VESPA_STRLOC);
}
}
- return StorageCommand::UP(new StorageCommand(SCmd::SP(cmd.release())));
+ return std::make_unique<StorageCommand>(std::move(cmd));
}
StorageReply::UP
-ProtocolSerialization::decodeReply(mbus::BlobRef data,
- const api::StorageCommand& cmd) const
+ProtocolSerialization::decodeReply(mbus::BlobRef data, const api::StorageCommand& cmd) const
{
LOG(spam, "Decode %d bytes of data.", data.size());
if (data.size() < sizeof(int32_t)) {
@@ -276,8 +263,6 @@ ProtocolSerialization::decodeReply(mbus::BlobRef data,
reply = onDecodeSplitBucketReply(cmd, buf); break;
case api::MessageType::JOINBUCKETS_REPLY_ID:
reply = onDecodeJoinBucketsReply(cmd, buf); break;
- case api::MessageType::MULTIOPERATION_REPLY_ID:
- reply = onDecodeMultiOperationReply(cmd, buf); break;
case api::MessageType::VISITOR_CREATE_REPLY_ID:
reply = onDecodeCreateVisitorReply(cmd, buf); break;
case api::MessageType::VISITOR_DESTROY_REPLY_ID:
@@ -295,7 +280,7 @@ ProtocolSerialization::decodeReply(mbus::BlobRef data,
throw vespalib::IllegalArgumentException(ost.str(), VESPA_STRLOC);
}
}
- return StorageReply::UP(new StorageReply(SRep::SP(reply.release())));
+ return std::make_unique<StorageReply>(std::move(reply));
}
}
diff --git a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization.h b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization.h
index d1e5783e609..532b50ac680 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization.h
+++ b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization.h
@@ -17,8 +17,7 @@ namespace mbus {
namespace vespalib {
class GrowableByteBuffer;
}
-namespace storage {
-namespace api {
+namespace storage::api {
class StorageCommand;
class StorageReply;
class PutCommand;
@@ -49,8 +48,6 @@ class JoinBucketsCommand;
class JoinBucketsReply;
class SetBucketStateCommand;
class SetBucketStateReply;
-class MultiOperationCommand;
-class MultiOperationReply;
class CreateVisitorCommand;
class RemoveLocationCommand;
class RemoveLocationReply;
@@ -60,7 +57,7 @@ class BatchDocumentUpdateCommand;
class BatchDocumentUpdateReply;
}
-namespace mbusprot {
+namespace storage::mbusprot {
class SerializationHelper;
class StorageCommand;
@@ -123,8 +120,6 @@ protected:
virtual void onEncode(GBBuf&, const api::JoinBucketsReply&) const = 0;
virtual void onEncode(GBBuf&, const api::SetBucketStateCommand&) const = 0;
virtual void onEncode(GBBuf&, const api::SetBucketStateReply&) const = 0;
- virtual void onEncode(GBBuf&, const api::MultiOperationCommand&) const = 0;
- virtual void onEncode(GBBuf&, const api::MultiOperationReply&) const = 0;
virtual void onEncode(GBBuf&, const api::CreateVisitorCommand&) const = 0;
virtual void onEncode(GBBuf&, const api::CreateVisitorReply&) const = 0;
virtual void onEncode(GBBuf&, const api::DestroyVisitorCommand&) const = 0;
@@ -166,8 +161,6 @@ protected:
virtual SRep::UP onDecodeJoinBucketsReply(const SCmd&, BBuf&) const = 0;
virtual SCmd::UP onDecodeSetBucketStateCommand(BBuf&) const = 0;
virtual SRep::UP onDecodeSetBucketStateReply(const SCmd&, BBuf&) const = 0;
- virtual SCmd::UP onDecodeMultiOperationCommand(BBuf&) const = 0;
- virtual SRep::UP onDecodeMultiOperationReply(const SCmd&, BBuf&) const = 0;
virtual SCmd::UP onDecodeCreateVisitorCommand(BBuf&) const = 0;
virtual SRep::UP onDecodeCreateVisitorReply(const SCmd&, BBuf&) const = 0;
virtual SCmd::UP onDecodeDestroyVisitorCommand(BBuf&) const = 0;
@@ -186,6 +179,4 @@ protected:
};
-} // mbusprot
-} // storage
-
+}
diff --git a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization4_2.cpp b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization4_2.cpp
index cd8e4992ba5..0f8a7bc0206 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization4_2.cpp
+++ b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization4_2.cpp
@@ -5,27 +5,19 @@
#include "serializationhelper.h"
#include "storagecommand.h"
#include "storagereply.h"
-#include "storageprotocol.h"
-#include <vespa/messagebus/blob.h>
-#include <vespa/messagebus/blobref.h>
-#include <vespa/storageapi/messageapi/storagemessage.h>
-#include <vespa/storageapi/message/bucket.h>
#include <vespa/storageapi/message/bucketsplitting.h>
-#include <vespa/storageapi/message/persistence.h>
#include <vespa/storageapi/message/batch.h>
-#include <vespa/storageapi/message/multioperation.h>
-
+#include <vespa/storageapi/message/visitor.h>
#include <vespa/storageapi/message/removelocation.h>
-#include <vespa/vespalib/util/growablebytebuffer.h>
#include <vespa/vespalib/util/exceptions.h>
+
#include <vespa/log/log.h>
LOG_SETUP(".storage.api.mbusprot.serialization.4_2");
using document::BucketSpace;
-namespace storage {
-namespace mbusprot {
+namespace storage::mbusprot {
ProtocolSerialization4_2::ProtocolSerialization4_2(
const document::DocumentTypeRepo::SP& repo)
@@ -33,33 +25,6 @@ ProtocolSerialization4_2::ProtocolSerialization4_2(
{
}
-void ProtocolSerialization4_2::onEncode(
- GBBuf& buf, const api::MultiOperationCommand& msg) const
-{
- uint64_t docBlockSize = msg.getOperations().spaceNeeded();
- buf.putInt(docBlockSize);
- char* pos = buf.allocate(docBlockSize);
- vdslib::DocumentList copy(msg.getOperations(), pos, docBlockSize);
- buf.putBoolean(msg.keepTimeStamps());
- putBucket(msg.getBucket(), buf);
- onEncodeBucketInfoCommand(buf, msg);
-}
-
-api::StorageCommand::UP
-ProtocolSerialization4_2::onDecodeMultiOperationCommand(BBuf& buf) const
-{
- uint32_t length = SH::getInt(buf);
- std::vector<char> buffer(length);
- buf.getBytes(&buffer[0], length);
- bool keepTimestamps = SH::getBoolean(buf);
- document::Bucket bucket = getBucket(buf);
- api::MultiOperationCommand::UP msg(
- new api::MultiOperationCommand(getTypeRepoSp(),
- bucket, buffer, keepTimestamps));
- onDecodeBucketInfoCommand(buf, *msg);
- return api::StorageCommand::UP(msg.release());
-}
-
void
ProtocolSerialization4_2::onEncode(
GBBuf& buf, const api::BatchPutRemoveCommand& msg) const
@@ -512,13 +477,11 @@ api::StorageReply::UP
ProtocolSerialization4_2::onDecodeSetBucketStateReply(const SCmd&,
BBuf&) const
{
- throw vespalib::IllegalStateException("Unsupported deserialization",
- VESPA_STRLOC);
+ throw vespalib::IllegalStateException("Unsupported deserialization", VESPA_STRLOC);
}
void
-ProtocolSerialization4_2::onEncode(
- GBBuf& buf, const api::CreateVisitorCommand& msg) const
+ProtocolSerialization4_2::onEncode(GBBuf& buf, const api::CreateVisitorCommand& msg) const
{
putBucketSpace(msg.getBucketSpace(), buf);
buf.putString(msg.getLibraryName());
@@ -706,5 +669,4 @@ ProtocolSerialization4_2::onDecodeDiffEntry(
entry._hasMask = SH::getShort(buf);
}
-} // mbusprot
-} // storage
+}
diff --git a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization4_2.h b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization4_2.h
index 3adae600dac..56d832ad4f8 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization4_2.h
+++ b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization4_2.h
@@ -3,8 +3,7 @@
#include "protocolserialization.h"
-namespace storage {
-namespace mbusprot {
+namespace storage::mbusprot {
class ProtocolSerialization4_2 : public ProtocolSerialization {
public:
@@ -22,7 +21,6 @@ protected:
void onEncode(GBBuf&, const api::NotifyBucketChangeCommand&) const override;
void onEncode(GBBuf&, const api::NotifyBucketChangeReply&) const override;
void onEncode(GBBuf&, const api::SplitBucketCommand&) const override;
- void onEncode(GBBuf&, const api::MultiOperationCommand&) const override;
void onEncode(GBBuf&, const api::CreateVisitorCommand&) const override;
void onEncode(GBBuf&, const api::DestroyVisitorCommand&) const override;
void onEncode(GBBuf&, const api::DestroyVisitorReply&) const override;
@@ -55,7 +53,6 @@ protected:
SCmd::UP onDecodeSplitBucketCommand(BBuf&) const override;
SCmd::UP onDecodeSetBucketStateCommand(BBuf&) const override;
SRep::UP onDecodeSetBucketStateReply(const SCmd&, BBuf&) const override;
- SCmd::UP onDecodeMultiOperationCommand(BBuf&) const override;
SCmd::UP onDecodeCreateVisitorCommand(BBuf&) const override;
SCmd::UP onDecodeDestroyVisitorCommand(BBuf&) const override;
SRep::UP onDecodeDestroyVisitorReply(const SCmd&, BBuf&) const override;
@@ -74,6 +71,4 @@ protected:
virtual void onDecodeDiffEntry(BBuf&, api::GetBucketDiffCommand::Entry&) const;
};
-} // mbusprot
-} // storage
-
+}
diff --git a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.cpp b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.cpp
index 355a7871cc6..6351818df6b 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.cpp
+++ b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.cpp
@@ -5,15 +5,14 @@
#include "storagecommand.h"
#include "storagereply.h"
#include <vespa/storageapi/message/bucketsplitting.h>
-#include <vespa/storageapi/message/multioperation.h>
+#include <vespa/storageapi/message/visitor.h>
#include <vespa/document/bucket/fixed_bucket_spaces.h>
#include <sstream>
using document::BucketSpace;
using document::FixedBucketSpaces;
-namespace storage {
-namespace mbusprot {
+namespace storage::mbusprot {
document::Bucket
ProtocolSerialization5_0::getBucket(document::ByteBuffer& buf) const
@@ -509,22 +508,6 @@ ProtocolSerialization5_0::onDecodeSplitBucketReply(const SCmd& cmd,
return api::StorageReply::UP(msg.release());
}
-void ProtocolSerialization5_0::onEncode(
- GBBuf& buf, const api::MultiOperationReply& msg) const
-{
- onEncodeBucketInfoReply(buf, msg);
-}
-
-api::StorageReply::UP
-ProtocolSerialization5_0::onDecodeMultiOperationReply(const SCmd& cmd,
- BBuf& buf) const
-{
- api::MultiOperationReply::UP msg(new api::MultiOperationReply(
- static_cast<const api::MultiOperationCommand&>(cmd)));
- onDecodeBucketInfoReply(buf, *msg);
- return api::StorageReply::UP(msg.release());
-}
-
void
ProtocolSerialization5_0::onEncode(
GBBuf& buf, const api::JoinBucketsCommand& msg) const
@@ -612,8 +595,7 @@ ProtocolSerialization5_0::onDecodeBucketReply(
}
void
-ProtocolSerialization5_0::onEncode(
- GBBuf& buf, const api::CreateVisitorReply& msg) const
+ProtocolSerialization5_0::onEncode(GBBuf& buf, const api::CreateVisitorReply& msg) const
{
onEncodeReply(buf, msg);
buf.putInt(msg.getVisitorStatistics().getBucketsVisited());
@@ -707,5 +689,4 @@ ProtocolSerialization5_0::onDecodeCreateVisitorCommand(BBuf& buf) const
return cvc;
}
-} // mbusprot
-} // storage
+} \ No newline at end of file
diff --git a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.h b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.h
index c1285939a1c..933be68158f 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.h
+++ b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.h
@@ -4,8 +4,7 @@
#include "protocolserialization4_2.h"
#include <vespa/documentapi/loadtypes/loadtypeset.h>
-namespace storage {
-namespace mbusprot {
+namespace storage::mbusprot {
class ProtocolSerialization5_0 : public ProtocolSerialization4_2 {
private:
@@ -37,7 +36,6 @@ public:
void onEncode(GBBuf&, const api::GetBucketDiffReply&) const override;
void onEncode(GBBuf&, const api::ApplyBucketDiffReply&) const override;
void onEncode(GBBuf&, const api::SplitBucketReply&) const override;
- void onEncode(GBBuf&, const api::MultiOperationReply&) const override;
void onEncode(GBBuf&, const api::JoinBucketsCommand&) const override;
void onEncode(GBBuf&, const api::JoinBucketsReply&) const override;
void onEncode(GBBuf&, const api::RequestBucketInfoCommand&) const override;
@@ -65,7 +63,6 @@ public:
SRep::UP onDecodeGetBucketDiffReply(const SCmd&, BBuf&) const override;
SRep::UP onDecodeApplyBucketDiffReply(const SCmd&, BBuf&) const override;
SRep::UP onDecodeSplitBucketReply(const SCmd&, BBuf&) const override;
- SRep::UP onDecodeMultiOperationReply(const SCmd&, BBuf&) const override;
SCmd::UP onDecodeJoinBucketsCommand(BBuf& buf) const override;
SRep::UP onDecodeJoinBucketsReply(const SCmd& cmd, BBuf& buf) const override;
SCmd::UP onDecodeCreateVisitorCommand(BBuf&) const override;
@@ -78,5 +75,4 @@ public:
void onDecodeReply(BBuf&, api::StorageReply&) const override;
};
-} // mbusprot
-} // storage
+}
diff --git a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_1.cpp b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_1.cpp
index 0afdfebd5b7..07bab044dca 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_1.cpp
+++ b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_1.cpp
@@ -4,23 +4,12 @@
#include "serializationhelper.h"
#include "storagecommand.h"
#include "storagereply.h"
-#include "storageprotocol.h"
-
-#include <vespa/messagebus/blob.h>
-#include <vespa/messagebus/blobref.h>
-#include <vespa/storageapi/messageapi/storagemessage.h>
-#include <vespa/storageapi/message/bucket.h>
#include <vespa/storageapi/message/bucketsplitting.h>
-#include <vespa/storageapi/message/persistence.h>
-#include <vespa/storageapi/message/multioperation.h>
-#include <vespa/vespalib/util/growablebytebuffer.h>
-#include <vespa/document/select/orderingspecification.h>
-#include <vespa/storageapi/messageapi/returncode.h>
+#include <vespa/storageapi/message/visitor.h>
using document::BucketSpace;
-namespace storage {
-namespace mbusprot {
+namespace storage::mbusprot {
api::BucketInfo
ProtocolSerialization5_1::getBucketInfo(document::ByteBuffer& buf) const
@@ -61,8 +50,7 @@ ProtocolSerialization5_1::ProtocolSerialization5_1(
{
}
-void ProtocolSerialization5_1::onEncode(
- GBBuf& buf, const api::SetBucketStateCommand& msg) const
+void ProtocolSerialization5_1::onEncode(GBBuf& buf, const api::SetBucketStateCommand& msg) const
{
putBucket(msg.getBucket(), buf);
buf.putByte(static_cast<uint8_t>(msg.getState()));
@@ -223,6 +211,4 @@ ProtocolSerialization5_1::onDecodeCreateBucketCommand(BBuf& buf) const
return api::StorageCommand::UP(msg.release());
}
-
-} // mbusprot
-} // storage
+}
diff --git a/storageapi/src/vespa/storageapi/mbusprot/storagecommand.cpp b/storageapi/src/vespa/storageapi/mbusprot/storagecommand.cpp
index 8aa44a0d7bf..8d97efafde6 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/storagecommand.cpp
+++ b/storageapi/src/vespa/storageapi/mbusprot/storagecommand.cpp
@@ -3,9 +3,9 @@
namespace storage::mbusprot {
-StorageCommand::StorageCommand(const storage::api::StorageCommand::SP& cmd)
+StorageCommand::StorageCommand(api::StorageCommand::SP cmd)
: mbus::Message(),
- _cmd(cmd)
+ _cmd(std::move(cmd))
{ }
}
diff --git a/storageapi/src/vespa/storageapi/mbusprot/storagecommand.h b/storageapi/src/vespa/storageapi/mbusprot/storagecommand.h
index 651336b39e5..88af61509d5 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/storagecommand.h
+++ b/storageapi/src/vespa/storageapi/mbusprot/storagecommand.h
@@ -12,7 +12,7 @@ class StorageCommand : public mbus::Message, public StorageMessage {
public:
typedef std::unique_ptr<StorageCommand> UP;
- StorageCommand(const storage::api::StorageCommand::SP&);
+ StorageCommand(api::StorageCommand::SP);
const mbus::string & getProtocol() const override { return StorageProtocol::NAME; }
uint32_t getType() const override { return _cmd->getType().getId(); }
diff --git a/storageapi/src/vespa/storageapi/mbusprot/storagereply.cpp b/storageapi/src/vespa/storageapi/mbusprot/storagereply.cpp
index 7a21a1bbb27..469c6a41bc7 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/storagereply.cpp
+++ b/storageapi/src/vespa/storageapi/mbusprot/storagereply.cpp
@@ -21,18 +21,15 @@ StorageReply::StorageReply(mbus::BlobRef data, const ProtocolSerialization& seri
buf.getIntNetwork(reinterpret_cast<int32_t&>(_mbusType));
}
-StorageReply::StorageReply(const api::StorageReply::SP& reply)
+StorageReply::StorageReply(api::StorageReply::SP reply)
: _serializer(0),
_sz(0),
_buffer(),
_mbusType(reply->getType().getId()),
- _reply(reply)
-{
-}
+ _reply(std::move(reply))
+{}
-StorageReply::~StorageReply()
-{
-}
+StorageReply::~StorageReply() = default;
void
StorageReply::deserialize() const
diff --git a/storageapi/src/vespa/storageapi/mbusprot/storagereply.h b/storageapi/src/vespa/storageapi/mbusprot/storagereply.h
index 2fd6be2dc14..fc0425369d1 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/storagereply.h
+++ b/storageapi/src/vespa/storageapi/mbusprot/storagereply.h
@@ -19,7 +19,7 @@ public:
typedef std::unique_ptr<StorageReply> UP;
StorageReply(mbus::BlobRef data, const ProtocolSerialization&);
- StorageReply(const api::StorageReply::SP& reply);
+ StorageReply(api::StorageReply::SP reply);
~StorageReply();
const mbus::string& getProtocol() const override { return StorageProtocol::NAME; }
@@ -33,7 +33,7 @@ public:
api::StorageMessage::CSP getInternalMessage() const override { deserialize(); return _reply; }
uint8_t priority() const override {
- if (_reply.get()) {
+ if (_reply) {
return _reply->getPriority();
}
return 0;
diff --git a/storageapi/src/vespa/storageapi/message/CMakeLists.txt b/storageapi/src/vespa/storageapi/message/CMakeLists.txt
index 248a3d61121..dbbaad8eed1 100644
--- a/storageapi/src/vespa/storageapi/message/CMakeLists.txt
+++ b/storageapi/src/vespa/storageapi/message/CMakeLists.txt
@@ -8,7 +8,6 @@ vespa_add_library(storageapi_message OBJECT
state.cpp
searchresult.cpp
bucketsplitting.cpp
- multioperation.cpp
documentsummary.cpp
stat.cpp
removelocation.cpp
diff --git a/storageapi/src/vespa/storageapi/message/batch.cpp b/storageapi/src/vespa/storageapi/message/batch.cpp
index f92d88e179e..de8ac849dee 100644
--- a/storageapi/src/vespa/storageapi/message/batch.cpp
+++ b/storageapi/src/vespa/storageapi/message/batch.cpp
@@ -3,7 +3,6 @@
#include "batch.h"
#include <vespa/document/bucket/bucketidfactory.h>
#include <ostream>
-#include <algorithm>
using namespace storage::api;
using document::BucketSpace;
diff --git a/storageapi/src/vespa/storageapi/message/batch.h b/storageapi/src/vespa/storageapi/message/batch.h
index 372d1bdb340..8d67c7813fa 100644
--- a/storageapi/src/vespa/storageapi/message/batch.h
+++ b/storageapi/src/vespa/storageapi/message/batch.h
@@ -7,8 +7,7 @@
#include <vespa/storageapi/messageapi/bucketinfocommand.h>
#include <vespa/storageapi/messageapi/bucketinforeply.h>
-namespace storage {
-namespace api {
+namespace storage::api {
/**
* @class BatchPutRemoveCommand
@@ -190,4 +189,3 @@ public:
};
}
-}
diff --git a/storageapi/src/vespa/storageapi/message/bucketsplitting.h b/storageapi/src/vespa/storageapi/message/bucketsplitting.h
index 115cd9f01bb..66ebae6497c 100644
--- a/storageapi/src/vespa/storageapi/message/bucketsplitting.h
+++ b/storageapi/src/vespa/storageapi/message/bucketsplitting.h
@@ -6,8 +6,7 @@
#include <vespa/storageapi/messageapi/bucketinforeply.h>
#include <vespa/storageapi/messageapi/maintenancecommand.h>
-namespace storage {
-namespace api {
+namespace storage::api {
/**
* @class SplitBucketCommand
@@ -118,5 +117,4 @@ public:
DECLARE_STORAGEREPLY(JoinBucketsReply, onJoinBucketsReply)
};
-} // api
-} // storage
+}
diff --git a/storageapi/src/vespa/storageapi/message/multioperation.cpp b/storageapi/src/vespa/storageapi/message/multioperation.cpp
deleted file mode 100644
index a6494002e18..00000000000
--- a/storageapi/src/vespa/storageapi/message/multioperation.cpp
+++ /dev/null
@@ -1,108 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-#include "multioperation.h"
-#include <vespa/document/update/documentupdate.h>
-
-using document::DocumentTypeRepo;
-
-namespace storage::api {
-
-IMPLEMENT_COMMAND(MultiOperationCommand, MultiOperationReply)
-IMPLEMENT_REPLY(MultiOperationReply)
-
-MultiOperationCommand::MultiOperationCommand(const DocumentTypeRepo::SP &repo,
- const document::Bucket &bucket,
- int bufferSize,
- bool keepTimeStamps_)
- : BucketInfoCommand(MessageType::MULTIOPERATION, bucket),
- _buffer(),
- _operations(repo, 0, 0),
- _keepTimeStamps(keepTimeStamps_)
-{
- _buffer.resize(bufferSize);
- if (_buffer.size() > 0) {
- _operations = vdslib::WritableDocumentList(_operations.getTypeRepo(),
- &_buffer[0], _buffer.size(), false);
- }
-}
-
-MultiOperationCommand::MultiOperationCommand(const DocumentTypeRepo::SP &repo,
- const document::Bucket &bucket,
- const std::vector<char>& buffer,
- bool keepTimeStamps_)
- : BucketInfoCommand(MessageType::MULTIOPERATION, bucket),
- _buffer(buffer),
- _operations(repo, 0, 0),
- _keepTimeStamps(keepTimeStamps_)
-{
- if (_buffer.size() > 0) {
- _operations = vdslib::WritableDocumentList(_operations.getTypeRepo(),
- &_buffer[0], _buffer.size(), true);
- }
-}
-
-MultiOperationCommand::MultiOperationCommand(const MultiOperationCommand& o)
- : BucketInfoCommand(MessageType::MULTIOPERATION, o.getBucket()),
- _buffer(o._buffer),
- _operations(o._operations.getTypeRepo(),0, 0),
- _keepTimeStamps(o._keepTimeStamps)
-{
- setTimeout(o.getTimeout());
- setSourceIndex(o.getSourceIndex());
- setPriority(o.getPriority());
- if (_buffer.size() > 0) {
- _operations = vdslib::WritableDocumentList(_operations.getTypeRepo(),
- &_buffer[0], _buffer.size(), true);
- }
-}
-
-MultiOperationCommand::~MultiOperationCommand() {}
-
-void
-MultiOperationCommand::print(std::ostream& out, bool verbose,
- const std::string& indent) const
-{
- out << "MultiOperationCommand(" << getBucketId()
- << ", size " << _operations.getBufferSize() << ", used space "
- << (_operations.getBufferSize() - _operations.countFree())
- << ", doccount " << _operations.size() << ", keepTimeStamps "
- << _keepTimeStamps << ")";
- if (verbose) {
- out << " {";
- bool first = true;
- for(vdslib::DocumentList::const_iterator it = _operations.begin();
- it != _operations.end(); ++it)
- {
- if (!first) { out << ","; } else { first = false; }
- out << "\n" << indent << " ";
- if (it->isRemoveEntry()) {
- out << "Remove(" << it->getDocumentId() << ")";
- } else if (it->isUpdateEntry()) {
- out << "Update(" << it->getDocumentId() << ")";
- } else {
- out << "Put(" << it->getDocumentId() << ")";
- }
- }
- out << "\n" << indent << "} : ";
- BucketInfoCommand::print(out, verbose, indent);
- }
-}
-
-MultiOperationReply::MultiOperationReply(const MultiOperationCommand& cmd)
- : BucketInfoReply(cmd),
- _highestModificationTimestamp(0)
-{
-}
-
-void
-MultiOperationReply::print(std::ostream& out, bool verbose,
- const std::string& indent) const
-{
- out << "MultiOperationReply(" << getBucketId() << ")";
- if (verbose) {
- out << " : ";
- BucketInfoReply::print(out, verbose, indent);
- }
-}
-
-}
diff --git a/storageapi/src/vespa/storageapi/message/multioperation.h b/storageapi/src/vespa/storageapi/message/multioperation.h
deleted file mode 100644
index 3d80cd042ea..00000000000
--- a/storageapi/src/vespa/storageapi/message/multioperation.h
+++ /dev/null
@@ -1,92 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-#pragma once
-
-#include <vespa/document/bucket/bucketid.h>
-#include <vespa/document/fieldvalue/document.h>
-#include <vespa/storageapi/messageapi/bucketinfocommand.h>
-#include <vespa/storageapi/messageapi/bucketinforeply.h>
-#include <vespa/storageapi/defs.h>
-#include <vespa/storageapi/message/visitor.h>
-#include <vespa/vdslib/container/writabledocumentlist.h>
-
-namespace storage {
-namespace api {
-
-/**
- * @class MultiOperationCommand
- * @ingroup message
- *
- * @brief Sends a documentlist
- */
-class MultiOperationCommand : public BucketInfoCommand {
-private:
- std::vector<char> _buffer; // Used to hold data refered to by document list
- // if message is to own its data.
- vdslib::WritableDocumentList _operations;
- bool _keepTimeStamps;
-
-public:
- explicit MultiOperationCommand(const document::DocumentTypeRepo::SP &repo,
- const document::Bucket &bucket,
- int bufferSize,
- bool keepTimeStamps = false);
- explicit MultiOperationCommand(const document::DocumentTypeRepo::SP &repo,
- const document::Bucket &bucket,
- const std::vector<char>& buffer,
- bool keepTimeStamps = false);
- explicit MultiOperationCommand(const MultiOperationCommand& template_);
- ~MultiOperationCommand();
-
- std::vector<char>& getBuffer() { return _buffer; };
- const std::vector<char>& getBuffer() const { return _buffer; };
-
- vdslib::WritableDocumentList& getOperations()
- { assert(_operations.getBufferSize() > 0); return _operations; }
- const vdslib::WritableDocumentList& getOperations() const
- { assert(_operations.getBufferSize() > 0); return _operations; }
-
- void setOperations(vdslib::WritableDocumentList& operations) {
- _buffer.clear();
- _operations = operations;
- }
-
- uint32_t getMemoryFootprint() const override {
- return _buffer.size() + 20;
- }
-
- bool keepTimeStamps() const { return _keepTimeStamps; }
- void keepTimeStamps(bool keepTime) { _keepTimeStamps = keepTime; }
-
- void print(std::ostream& out, bool verbose, const std::string& indent) const override;
-
- DECLARE_STORAGECOMMAND(MultiOperationCommand, onMultiOperation)
-};
-
-/**
- * @class MultiOperationReply
- * @ingroup message
- *
- * @brief Confirm that a given docoperations have been received.
- */
-class MultiOperationReply : public BucketInfoReply {
-private:
- // No need to serialize this, as it's only used internally in the distributor.
- uint64_t _highestModificationTimestamp;
-
-public:
- explicit MultiOperationReply(const MultiOperationCommand&);
-
- void print(std::ostream& out, bool verbose, const std::string& indent) const override;
-
- void setHighestModificationTimestamp(uint64_t highestModificationTimestamp) {
- _highestModificationTimestamp = highestModificationTimestamp;
- }
- uint64_t getHighestModificationTimestamp() const { return _highestModificationTimestamp; }
-
- DECLARE_STORAGEREPLY(MultiOperationReply, onMultiOperationReply)
-};
-
-} // api
-} // storage
-
diff --git a/storageapi/src/vespa/storageapi/message/removelocation.cpp b/storageapi/src/vespa/storageapi/message/removelocation.cpp
index 38b56101f04..ab44f0e6890 100644
--- a/storageapi/src/vespa/storageapi/message/removelocation.cpp
+++ b/storageapi/src/vespa/storageapi/message/removelocation.cpp
@@ -3,8 +3,7 @@
#include "removelocation.h"
#include <ostream>
-namespace storage {
-namespace api {
+namespace storage::api {
IMPLEMENT_COMMAND(RemoveLocationCommand, RemoveLocationReply)
IMPLEMENT_REPLY(RemoveLocationReply)
@@ -31,5 +30,4 @@ RemoveLocationReply::RemoveLocationReply(const RemoveLocationCommand& cmd)
{
}
-} // api
-} // storage
+}
diff --git a/storageapi/src/vespa/storageapi/message/removelocation.h b/storageapi/src/vespa/storageapi/message/removelocation.h
index 4a3dec2e0f6..55b2d1eb75e 100644
--- a/storageapi/src/vespa/storageapi/message/removelocation.h
+++ b/storageapi/src/vespa/storageapi/message/removelocation.h
@@ -5,8 +5,7 @@
#include <vespa/storageapi/messageapi/storagecommand.h>
#include <vespa/storageapi/messageapi/bucketinforeply.h>
-namespace storage {
-namespace api {
+namespace storage::api {
class RemoveLocationCommand : public BucketInfoCommand
{
@@ -32,4 +31,3 @@ public:
};
}
-}
diff --git a/storageapi/src/vespa/storageapi/message/visitor.h b/storageapi/src/vespa/storageapi/message/visitor.h
index e1850686222..0e78ea93753 100644
--- a/storageapi/src/vespa/storageapi/message/visitor.h
+++ b/storageapi/src/vespa/storageapi/message/visitor.h
@@ -15,8 +15,7 @@
#include <vespa/storageapi/messageapi/storagereply.h>
#include <vespa/document/select/orderingspecification.h>
-namespace storage {
-namespace api {
+namespace storage::api {
/**
* @class CreateVisitorCommand
@@ -251,6 +250,4 @@ public:
DECLARE_STORAGEREPLY(VisitorInfoReply, onVisitorInfoReply)
};
-} // api
-} // storage
-
+}
diff --git a/storageapi/src/vespa/storageapi/messageapi/messagehandler.h b/storageapi/src/vespa/storageapi/messageapi/messagehandler.h
index de8af718bcf..e7bd2b5bf27 100644
--- a/storageapi/src/vespa/storageapi/messageapi/messagehandler.h
+++ b/storageapi/src/vespa/storageapi/messageapi/messagehandler.h
@@ -25,7 +25,6 @@ class PutCommand; // Add document
class UpdateCommand; // Update document
class RemoveCommand; // Remove document
class RevertCommand; // Revert put/remove operation
-class MultiOperationCommand; // Multi put/remove/update operation
class BatchPutRemoveCommand;
class BatchDocumentUpdateCommand;
@@ -65,7 +64,6 @@ class PutReply;
class UpdateReply;
class RemoveReply;
class RevertReply;
-class MultiOperationReply;
class BatchPutRemoveReply;
class BatchDocumentUpdateReply;
@@ -145,12 +143,6 @@ public:
{ return false; }
virtual bool onRevertReply(const std::shared_ptr<api::RevertReply>&)
{ return false; }
- virtual bool onMultiOperation(
- const std::shared_ptr<api::MultiOperationCommand>&)
- { return false; }
- virtual bool onMultiOperationReply(
- const std::shared_ptr<api::MultiOperationReply>&)
- { return false; }
virtual bool onBatchPutRemove(
const std::shared_ptr<api::BatchPutRemoveCommand>&)
{ return false; }
diff --git a/storageapi/src/vespa/storageapi/messageapi/storagemessage.cpp b/storageapi/src/vespa/storageapi/messageapi/storagemessage.cpp
index d9eecf36a03..ee6b908020c 100644
--- a/storageapi/src/vespa/storageapi/messageapi/storagemessage.cpp
+++ b/storageapi/src/vespa/storageapi/messageapi/storagemessage.cpp
@@ -144,9 +144,6 @@ const MessageType MessageType::JOINBUCKETS("Joinbuckets", JOINBUCKETS_ID);
const MessageType MessageType::JOINBUCKETS_REPLY(
"Joinbuckets reply", JOINBUCKETS_REPLY_ID,
&MessageType::JOINBUCKETS);
-const MessageType MessageType::MULTIOPERATION("MultiOperation", MULTIOPERATION_ID);
-const MessageType MessageType::MULTIOPERATION_REPLY(
- "MultiOperation Reply", MULTIOPERATION_REPLY_ID, &MessageType::MULTIOPERATION);
const MessageType MessageType::STATBUCKET("Statbucket", STATBUCKET_ID);
const MessageType MessageType::STATBUCKET_REPLY(
"Statbucket Reply", STATBUCKET_REPLY_ID, &MessageType::STATBUCKET);
diff --git a/storageapi/src/vespa/storageapi/messageapi/storagemessage.h b/storageapi/src/vespa/storageapi/messageapi/storagemessage.h
index 1625be88418..46f00127202 100644
--- a/storageapi/src/vespa/storageapi/messageapi/storagemessage.h
+++ b/storageapi/src/vespa/storageapi/messageapi/storagemessage.h
@@ -128,8 +128,8 @@ public:
SPLITBUCKET_REPLY_ID = 67,
JOINBUCKETS_ID = 68,
JOINBUCKETS_REPLY_ID = 69,
- MULTIOPERATION_ID = 70,
- MULTIOPERATION_REPLY_ID = 71,
+ //MULTIOPERATION_ID = 70,
+ //MULTIOPERATION_REPLY_ID = 71,
DOCUMENTSUMMARY_ID = 72,
DOCUMENTSUMMARY_REPLY_ID = 73,
MAPVISITOR_ID = 74,