aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2020-01-20 13:04:49 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2020-01-20 13:04:49 +0000
commit1d3fe1bedb648cfd497eeee61478fa45f332255b (patch)
tree7519f9f9d87dd9e89a788a596ca865bd5330cac5
parent5eaae9afb93ad82a931e117a14babdbb271762c6 (diff)
GC a load of unused code. ByteBuffer towards read only.
-rw-r--r--document/src/tests/documenttestcase.cpp7
-rw-r--r--document/src/tests/testbytebuffer.cpp264
-rw-r--r--document/src/vespa/document/fieldvalue/fieldvalue.cpp5
-rw-r--r--document/src/vespa/document/fieldvalue/fieldvalue.h9
-rw-r--r--document/src/vespa/document/util/CMakeLists.txt2
-rw-r--r--document/src/vespa/document/util/bufferexceptions.h8
-rw-r--r--document/src/vespa/document/util/bytebuffer.cpp315
-rw-r--r--document/src/vespa/document/util/bytebuffer.h165
-rw-r--r--document/src/vespa/document/util/serializable.cpp72
-rw-r--r--document/src/vespa/document/util/serializable.h97
-rw-r--r--document/src/vespa/document/util/serializableexceptions.cpp21
-rw-r--r--document/src/vespa/document/util/serializableexceptions.h8
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/documentprotocol.h1
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/queryresultmessage.cpp8
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/queryresultmessage.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/visitor.cpp57
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/visitor.h4
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/routablefactories60.cpp83
-rw-r--r--searchlib/src/vespa/searchlib/tensor/generic_tensor_store.cpp9
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/growablebytebuffer.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/growablebytebuffer.h2
-rw-r--r--storage/src/tests/common/message_sender_stub.cpp10
-rw-r--r--storage/src/tests/visiting/visitormanagertest.cpp2
-rw-r--r--storage/src/vespa/storage/common/bucketmessages.cpp22
-rw-r--r--storage/src/vespa/storage/common/storagelink.cpp4
-rw-r--r--storage/src/vespa/storage/distributor/operations/external/statbucketoperation.cpp13
-rw-r--r--storage/src/vespa/storage/persistence/filestorage/filestormanager.h3
-rw-r--r--storage/src/vespa/storage/visiting/recoveryvisitor.cpp3
-rw-r--r--storage/src/vespa/storage/visiting/recoveryvisitor.h12
-rw-r--r--storage/src/vespa/storage/visiting/visitor.cpp24
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/protocolserialization4_2.cpp135
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_1.cpp50
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/storagereply.cpp6
-rw-r--r--storageapi/src/vespa/storageapi/message/bucket.h7
-rw-r--r--storageapi/src/vespa/storageapi/message/visitor.cpp19
-rw-r--r--storageapi/src/vespa/storageapi/messageapi/returncode.cpp56
-rw-r--r--storageapi/src/vespa/storageapi/messageapi/returncode.h28
-rw-r--r--storageapi/src/vespa/storageapi/messageapi/storagereply.cpp11
-rw-r--r--storageapi/src/vespa/storageapi/messageapi/storagereply.h9
-rw-r--r--vdslib/src/tests/container/parameterstest.cpp16
-rw-r--r--vdslib/src/vespa/vdslib/container/documentsummary.cpp14
-rw-r--r--vdslib/src/vespa/vdslib/container/documentsummary.h5
-rw-r--r--vdslib/src/vespa/vdslib/container/parameters.cpp24
-rw-r--r--vdslib/src/vespa/vdslib/container/parameters.h27
-rw-r--r--vdslib/src/vespa/vdslib/container/searchresult.cpp42
-rw-r--r--vdslib/src/vespa/vdslib/container/searchresult.h9
46 files changed, 331 insertions, 1361 deletions
diff --git a/document/src/tests/documenttestcase.cpp b/document/src/tests/documenttestcase.cpp
index 39a92352a5e..a8d4829d355 100644
--- a/document/src/tests/documenttestcase.cpp
+++ b/document/src/tests/documenttestcase.cpp
@@ -891,14 +891,11 @@ TEST(DocumentTest, testGenerateSerializedFile)
CompressionConfig newCfg(CompressionConfig::LZ4, 9, 95);
const_cast<StructDataType &>(doc.getType().getFieldsType()).setCompressionConfig(newCfg);
- ByteBuffer lz4buf(getSerializedSize(doc));
-
- doc.serialize(lz4buf);
- lz4buf.flip();
+ nbostream lz4buf = doc.serialize();
fd = open((serializedDir + "/serializecpp-lz4-level9.dat").c_str(),
O_WRONLY | O_TRUNC | O_CREAT, 0644);
- if (write(fd, lz4buf.getBufferAtPos(), lz4buf.getRemaining()) != (ssize_t)lz4buf.getRemaining()) {
+ if (write(fd, lz4buf.c_str(), lz4buf.size()) != (ssize_t)lz4buf.size()) {
throw vespalib::Exception("write failed");
}
close(fd);
diff --git a/document/src/tests/testbytebuffer.cpp b/document/src/tests/testbytebuffer.cpp
index b90db980683..b4ad558b4ad 100644
--- a/document/src/tests/testbytebuffer.cpp
+++ b/document/src/tests/testbytebuffer.cpp
@@ -3,12 +3,14 @@
#include <vespa/document/util/stringutil.h>
#include <vespa/document/util/bytebuffer.h>
#include <vespa/document/fieldvalue/serializablearray.h>
-#include <iostream>
-#include <vespa/vespalib/util/macro.h>
#include <vespa/document/util/bufferexceptions.h>
+#include <vespa/vespalib/util/macro.h>
+#include <vespa/vespalib/util/growablebytebuffer.h>
#include <gtest/gtest.h>
+
using namespace document;
+using vespalib::GrowableByteBuffer;
namespace {
@@ -29,9 +31,10 @@ TEST(ByteBuffer_Test, test_constructors)
TEST(ByteBuffer_Test, test_copy_constructor)
{
try {
- ByteBuffer b1(100);
- b1.putInt(1);
- b1.putInt(2);
+ GrowableByteBuffer gb(100);
+ gb.putInt(1);
+ gb.putInt(2);
+ ByteBuffer b1(gb.getBuffer(), gb.position());
ByteBuffer b2(b1);
@@ -40,10 +43,9 @@ TEST(ByteBuffer_Test, test_copy_constructor)
EXPECT_EQ(b1.getRemaining(),b2.getRemaining());
int test = 0;
- b2.flip();
- b2.getInt(test);
+ b2.getIntNetwork(test);
EXPECT_EQ(1,test);
- b2.getInt(test);
+ b2.getIntNetwork(test);
EXPECT_EQ(2,test);
} catch (std::exception &e) {
@@ -51,252 +53,6 @@ TEST(ByteBuffer_Test, test_copy_constructor)
}
}
-TEST(ByteBuffer_Test, test_putGetFlip)
-{
- ByteBuffer newBuf(100);
-
- try {
- newBuf.putInt(10);
- int test;
- newBuf.flip();
-
- newBuf.getInt(test);
- EXPECT_EQ(test, 10);
-
- newBuf.clear();
- newBuf.putDouble(3.35);
- newBuf.flip();
- EXPECT_EQ(newBuf.getRemaining(), 100);
- double test2;
- newBuf.getDouble(test2);
- EXPECT_TRUE(test2==3.35);
-
- newBuf.clear();
- newBuf.putBytes("heisann",8);
- newBuf.putInt(4);
- EXPECT_EQ(newBuf.getPos(), 12);
- EXPECT_EQ(newBuf.getLength(), 100);
- newBuf.flip();
- EXPECT_EQ(newBuf.getRemaining(), 100);
-
- char testStr[12];
- newBuf.getBytes(testStr, 8);
- EXPECT_TRUE(strcmp(testStr,"heisann")==0);
- newBuf.getInt(test);
- EXPECT_TRUE(test==4);
- } catch (std::exception &e) {
- FAIL() << "Unexpected exception at " << VESPA_STRLOC << ": \"" << e.what() << "\"";
- }
-}
-
-
-TEST(ByteBuffer_Test, test_NumberEncodings)
-{
- ByteBuffer buf(1024);
-
- // Check 0
- buf.putInt1_2_4Bytes(124);
- buf.putInt2_4_8Bytes(124);
- buf.putInt1_4Bytes(124);
- // Check 1
- buf.putInt1_2_4Bytes(127);
- buf.putInt2_4_8Bytes(127);
- buf.putInt1_4Bytes(127);
- // Check 2
- buf.putInt1_2_4Bytes(128);
- buf.putInt2_4_8Bytes(128);
- buf.putInt1_4Bytes(128);
- // Check 3
- buf.putInt1_2_4Bytes(255);
- buf.putInt2_4_8Bytes(255);
- buf.putInt1_4Bytes(255);
- // Check 4
- buf.putInt1_2_4Bytes(256);
- buf.putInt2_4_8Bytes(256);
- buf.putInt1_4Bytes(256);
- // Check 5
- buf.putInt1_2_4Bytes(0);
- buf.putInt2_4_8Bytes(0);
- buf.putInt1_4Bytes(0);
- // Check 6
- buf.putInt1_2_4Bytes(1);
- buf.putInt2_4_8Bytes(1);
- buf.putInt1_4Bytes(1);
-
- // Check 7
- try {
- buf.putInt1_2_4Bytes(0x7FFFFFFF);
- FAIL() << "Expected input out of range exception";
- } catch (InputOutOfRangeException& e) { }
- buf.putInt2_4_8Bytes(0x7FFFFFFFll);
- buf.putInt1_4Bytes(0x7FFFFFFF);
-
- try {
- buf.putInt2_4_8Bytes(0x7FFFFFFFFFFFFFFFll);
- FAIL() << "Expected input out of range exception";
- } catch (InputOutOfRangeException& e) { }
-
- buf.putInt1_2_4Bytes(0x7FFF);
- // Check 8
- buf.putInt2_4_8Bytes(0x7FFFll);
- buf.putInt1_4Bytes(0x7FFF);
- buf.putInt1_2_4Bytes(0x7F);
- // Check 9
- buf.putInt2_4_8Bytes(0x7Fll);
- buf.putInt1_4Bytes(0x7F);
-
- try {
- buf.putInt1_2_4Bytes(-1);
- FAIL() << "Expected input out of range exception";
- } catch (InputOutOfRangeException& e) { }
- try {
- buf.putInt2_4_8Bytes(-1);
- FAIL() << "Expected input out of range exception";
- } catch (InputOutOfRangeException& e) { }
- try {
- buf.putInt1_4Bytes(-1);
- FAIL() << "Expected input out of range exception";
- } catch (InputOutOfRangeException& e) { }
-
- try {
- buf.putInt1_2_4Bytes(-0x7FFFFFFF);
- FAIL() << "Expected input out of range exception";
- } catch (InputOutOfRangeException& e) { }
- try {
- buf.putInt2_4_8Bytes(-0x7FFFFFFF);
- FAIL() << "Expected input out of range exception";
- } catch (InputOutOfRangeException& e) { }
- try {
- buf.putInt1_4Bytes(-0x7FFFFFFF);
- FAIL() << "Expected input out of range exception";
- } catch (InputOutOfRangeException& e) { }
-
- try {
- buf.putInt2_4_8Bytes(-0x7FFFFFFFFFFFFFFFll);
- FAIL() << "Expected input out of range exception";
- } catch (InputOutOfRangeException& e) { }
-
- uint32_t endWritePos = buf.getPos();
- buf.setPos(0);
-
- int32_t tmp32;
- int64_t tmp64;
-
- // Check 0
- buf.getInt1_2_4Bytes(tmp32);
- EXPECT_EQ(124, tmp32);
- buf.getInt2_4_8Bytes(tmp64);
- EXPECT_EQ((int64_t)124, tmp64);
- buf.getInt1_4Bytes(tmp32);
- EXPECT_EQ(124, tmp32);
- // Check 1
- buf.getInt1_2_4Bytes(tmp32);
- EXPECT_EQ(127, tmp32);
- buf.getInt2_4_8Bytes(tmp64);
- EXPECT_EQ((int64_t)127, tmp64);
- buf.getInt1_4Bytes(tmp32);
- EXPECT_EQ(127, tmp32);
- // Check 2
- buf.getInt1_2_4Bytes(tmp32);
- EXPECT_EQ(128, tmp32);
- buf.getInt2_4_8Bytes(tmp64);
- EXPECT_EQ((int64_t)128, tmp64);
- buf.getInt1_4Bytes(tmp32);
- EXPECT_EQ(128, tmp32);
- // Check 3
- buf.getInt1_2_4Bytes(tmp32);
- EXPECT_EQ(255, tmp32);
- buf.getInt2_4_8Bytes(tmp64);
- EXPECT_EQ((int64_t)255, tmp64);
- buf.getInt1_4Bytes(tmp32);
- EXPECT_EQ(255, tmp32);
- // Check 4
- buf.getInt1_2_4Bytes(tmp32);
- EXPECT_EQ(256, tmp32);
- buf.getInt2_4_8Bytes(tmp64);
- EXPECT_EQ((int64_t)256, tmp64);
- buf.getInt1_4Bytes(tmp32);
- EXPECT_EQ(256, tmp32);
- // Check 5
- buf.getInt1_2_4Bytes(tmp32);
- EXPECT_EQ(0, tmp32);
- buf.getInt2_4_8Bytes(tmp64);
- EXPECT_EQ((int64_t)0, tmp64);
- buf.getInt1_4Bytes(tmp32);
- EXPECT_EQ(0, tmp32);
- // Check 6
- buf.getInt1_2_4Bytes(tmp32);
- EXPECT_EQ(1, tmp32);
- buf.getInt2_4_8Bytes(tmp64);
- EXPECT_EQ((int64_t)1, tmp64);
- buf.getInt1_4Bytes(tmp32);
- EXPECT_EQ(1, tmp32);
- // Check 7
- buf.getInt2_4_8Bytes(tmp64);
- EXPECT_EQ((int64_t)0x7FFFFFFF, tmp64);
- buf.getInt1_4Bytes(tmp32);
- EXPECT_EQ(0x7FFFFFFF, tmp32);
- buf.getInt1_2_4Bytes(tmp32);
- EXPECT_EQ(0x7FFF, tmp32);
- // Check 8
- buf.getInt2_4_8Bytes(tmp64);
- EXPECT_EQ((int64_t)0x7FFF, tmp64);
- buf.getInt1_4Bytes(tmp32);
- EXPECT_EQ(0x7FFF, tmp32);
- buf.getInt1_2_4Bytes(tmp32);
- EXPECT_EQ(0x7F, tmp32);
- // Check 9
- buf.getInt2_4_8Bytes(tmp64);
- EXPECT_EQ((int64_t)0x7F, tmp64);
- buf.getInt1_4Bytes(tmp32);
- EXPECT_EQ(0x7F, tmp32);
-
- uint32_t endReadPos = buf.getPos();
- EXPECT_EQ(endWritePos, endReadPos);
-
-}
-
-TEST(ByteBuffer_Test, test_NumberLengths)
-{
- EXPECT_EQ((size_t) 1, ByteBuffer::getSerializedSize1_4Bytes(0));
- EXPECT_EQ((size_t) 1, ByteBuffer::getSerializedSize1_4Bytes(1));
- EXPECT_EQ((size_t) 1, ByteBuffer::getSerializedSize1_4Bytes(4));
- EXPECT_EQ((size_t) 1, ByteBuffer::getSerializedSize1_4Bytes(31));
- EXPECT_EQ((size_t) 1, ByteBuffer::getSerializedSize1_4Bytes(126));
- EXPECT_EQ((size_t) 1, ByteBuffer::getSerializedSize1_4Bytes(127));
- EXPECT_EQ((size_t) 4, ByteBuffer::getSerializedSize1_4Bytes(128));
- EXPECT_EQ((size_t) 4, ByteBuffer::getSerializedSize1_4Bytes(129));
- EXPECT_EQ((size_t) 4, ByteBuffer::getSerializedSize1_4Bytes(255));
- EXPECT_EQ((size_t) 4, ByteBuffer::getSerializedSize1_4Bytes(256));
- EXPECT_EQ((size_t) 4, ByteBuffer::getSerializedSize1_4Bytes(0x7FFFFFFF));
-
- EXPECT_EQ((size_t) 2, ByteBuffer::getSerializedSize2_4_8Bytes(0));
- EXPECT_EQ((size_t) 2, ByteBuffer::getSerializedSize2_4_8Bytes(1));
- EXPECT_EQ((size_t) 2, ByteBuffer::getSerializedSize2_4_8Bytes(4));
- EXPECT_EQ((size_t) 2, ByteBuffer::getSerializedSize2_4_8Bytes(31));
- EXPECT_EQ((size_t) 2, ByteBuffer::getSerializedSize2_4_8Bytes(126));
- EXPECT_EQ((size_t) 2, ByteBuffer::getSerializedSize2_4_8Bytes(127));
- EXPECT_EQ((size_t) 2, ByteBuffer::getSerializedSize2_4_8Bytes(128));
- EXPECT_EQ((size_t) 2, ByteBuffer::getSerializedSize2_4_8Bytes(32767));
- EXPECT_EQ((size_t) 4, ByteBuffer::getSerializedSize2_4_8Bytes(32768));
- EXPECT_EQ((size_t) 4, ByteBuffer::getSerializedSize2_4_8Bytes(32769));
- EXPECT_EQ((size_t) 4, ByteBuffer::getSerializedSize2_4_8Bytes(1030493));
- EXPECT_EQ((size_t) 4, ByteBuffer::getSerializedSize2_4_8Bytes(0x3FFFFFFF));
- EXPECT_EQ((size_t) 8, ByteBuffer::getSerializedSize2_4_8Bytes(0x40000000));
- EXPECT_EQ((size_t) 8, ByteBuffer::getSerializedSize2_4_8Bytes(0x40000001));
-
- EXPECT_EQ((size_t) 1, ByteBuffer::getSerializedSize1_2_4Bytes(0));
- EXPECT_EQ((size_t) 1, ByteBuffer::getSerializedSize1_2_4Bytes(1));
- EXPECT_EQ((size_t) 1, ByteBuffer::getSerializedSize1_2_4Bytes(4));
- EXPECT_EQ((size_t) 1, ByteBuffer::getSerializedSize1_2_4Bytes(31));
- EXPECT_EQ((size_t) 1, ByteBuffer::getSerializedSize1_2_4Bytes(126));
- EXPECT_EQ((size_t) 1, ByteBuffer::getSerializedSize1_2_4Bytes(127));
- EXPECT_EQ((size_t) 2, ByteBuffer::getSerializedSize1_2_4Bytes(128));
- EXPECT_EQ((size_t) 2, ByteBuffer::getSerializedSize1_2_4Bytes(16383));
- EXPECT_EQ((size_t) 4, ByteBuffer::getSerializedSize1_2_4Bytes(16384));
- EXPECT_EQ((size_t) 4, ByteBuffer::getSerializedSize1_2_4Bytes(16385));
-}
-
TEST(ByteBuffer_Test, test_SerializableArray)
{
SerializableArray array;
diff --git a/document/src/vespa/document/fieldvalue/fieldvalue.cpp b/document/src/vespa/document/fieldvalue/fieldvalue.cpp
index c41f6cbb616..49efbd83c61 100644
--- a/document/src/vespa/document/fieldvalue/fieldvalue.cpp
+++ b/document/src/vespa/document/fieldvalue/fieldvalue.cpp
@@ -35,11 +35,6 @@ void FieldValue::serialize(nbostream &stream) const {
serializer.write(*this);
}
-void FieldValue::serialize(ByteBuffer& buffer) const {
- nbostream stream = serialize();
- buffer.putBytes(stream.peek(), stream.size());
-}
-
nbostream
FieldValue::serialize() const {
nbostream stream;
diff --git a/document/src/vespa/document/fieldvalue/fieldvalue.h b/document/src/vespa/document/fieldvalue/fieldvalue.h
index 4b754f09cd6..9ed8d522b17 100644
--- a/document/src/vespa/document/fieldvalue/fieldvalue.h
+++ b/document/src/vespa/document/fieldvalue/fieldvalue.h
@@ -19,15 +19,11 @@
#include <vespa/vespalib/objects/identifiable.h>
#include <vespa/vespalib/util/polymorphicarraybase.h>
-namespace vespalib {
- class nbostream;
-}
+namespace vespalib { class nbostream; }
namespace document {
-namespace fieldvalue {
- class IteratorHandler;
-}
+namespace fieldvalue { class IteratorHandler; }
class ByteBuffer;
class DataType;
@@ -73,7 +69,6 @@ public:
virtual bool isA(const FieldValue& other) const;
void serialize(vespalib::nbostream &stream) const;
- void serialize(ByteBuffer& buffer) const;
vespalib::nbostream serialize() const;
/**
diff --git a/document/src/vespa/document/util/CMakeLists.txt b/document/src/vespa/document/util/CMakeLists.txt
index 8cb148abe25..48ca7bd36d7 100644
--- a/document/src/vespa/document/util/CMakeLists.txt
+++ b/document/src/vespa/document/util/CMakeLists.txt
@@ -3,7 +3,7 @@ vespa_add_library(document_util OBJECT
SOURCES
bytebuffer.cpp
printable.cpp
- serializable.cpp
+ serializableexceptions.cpp
stringutil.cpp
DEPENDS
AFTER
diff --git a/document/src/vespa/document/util/bufferexceptions.h b/document/src/vespa/document/util/bufferexceptions.h
index 8a3215f6c79..aee7f3ae568 100644
--- a/document/src/vespa/document/util/bufferexceptions.h
+++ b/document/src/vespa/document/util/bufferexceptions.h
@@ -15,13 +15,5 @@ public:
VESPA_DEFINE_EXCEPTION_SPINE(BufferOutOfBoundsException)
};
-class InputOutOfRangeException : public vespalib::IoException {
-public:
- InputOutOfRangeException(const vespalib::string& msg,
- const vespalib::string& location = "");
-
- VESPA_DEFINE_EXCEPTION_SPINE(InputOutOfRangeException)
-};
-
}
diff --git a/document/src/vespa/document/util/bytebuffer.cpp b/document/src/vespa/document/util/bytebuffer.cpp
index 415aeebf969..c909ca5fe61 100644
--- a/document/src/vespa/document/util/bytebuffer.cpp
+++ b/document/src/vespa/document/util/bytebuffer.cpp
@@ -13,11 +13,42 @@
#include <arpa/inet.h>
using vespalib::alloc::Alloc;
+using vespalib::make_string;
namespace document {
+namespace {
+
+static void throwOutOfBounds(size_t want, size_t has) __attribute__((noinline, noreturn));
+
+void throwOutOfBounds(size_t want, size_t has)
+{
+ throw BufferOutOfBoundsException(want, has, VESPA_STRLOC);
+}
+
+}
+
+#if defined(__i386__) || defined(__x86_64__)
+
+template<typename T>
+void
+ByteBuffer::getDoubleLongNetwork(T &val) {
+ //TODO: Change this if we move to big-endian hardware
+ if (__builtin_expect(getRemaining() < (int)sizeof(T), 0)) {
+ throwOutOfBounds(sizeof(T), getRemaining());
+ }
+
+ auto * data = reinterpret_cast<unsigned char*>(&val);
+ for (int i=sizeof(T)-1; i>=0; --i) {
+ getByte(data[i]);
+ }
+}
+
+#else
+#error "getDoubleLongNetwork is undefined for this arcitecture"
+#endif
+
VESPA_IMPLEMENT_EXCEPTION_SPINE(BufferOutOfBoundsException);
-VESPA_IMPLEMENT_EXCEPTION_SPINE(InputOutOfRangeException);
vespalib::string BufferOutOfBoundsException::createMessage(size_t pos, size_t len) {
vespalib::asciistream ost;
@@ -25,18 +56,11 @@ vespalib::string BufferOutOfBoundsException::createMessage(size_t pos, size_t le
return ost.str();
}
-BufferOutOfBoundsException::BufferOutOfBoundsException(
- size_t pos, size_t len, const vespalib::string& location)
+BufferOutOfBoundsException::BufferOutOfBoundsException(size_t pos, size_t len, const vespalib::string& location)
: IoException(createMessage(pos, len), IoException::NO_SPACE, location, 1)
{
}
-InputOutOfRangeException::InputOutOfRangeException(
- const vespalib::string& msg, const vespalib::string& location)
- : IoException(msg, IoException::INTERNAL_FAILURE, location, 1)
-{
-}
-
ByteBuffer::ByteBuffer(size_t len) :
ByteBuffer(Alloc::alloc(len), len)
{
@@ -74,11 +98,6 @@ ByteBuffer::ByteBuffer(const ByteBuffer& rhs) :
ByteBuffer::~ByteBuffer() = default;
-void ByteBuffer::throwOutOfBounds(size_t want, size_t has)
-{
- throw BufferOutOfBoundsException(want, has, VESPA_STRLOC);
-}
-
ByteBuffer* ByteBuffer::copyBuffer(const char* buffer, size_t len)
{
if (buffer && len) {
@@ -119,15 +138,6 @@ void ByteBuffer::getNumeric(uint8_t & v) {
}
}
-void ByteBuffer::putNumeric(uint8_t v) {
- if (__builtin_expect(getRemaining() < sizeof(v), 0)) {
- throwOutOfBounds(getRemaining(), sizeof(v));
- } else {
- *(uint8_t *) getBufferAtPos() = v;
- incPosNoCheck(sizeof(v));
- }
-}
-
void ByteBuffer::getNumericNetwork(int16_t & v) {
if (__builtin_expect(getRemaining() < sizeof(v), 0)) {
throwOutOfBounds(getRemaining(), sizeof(v));
@@ -138,16 +148,6 @@ void ByteBuffer::getNumericNetwork(int16_t & v) {
}
}
-void ByteBuffer::putNumericNetwork(int16_t v) {
- if (__builtin_expect(getRemaining() < sizeof(v), 0)) {
- throwOutOfBounds(getRemaining(), sizeof(v));
- } else {
- uint16_t val = htons(v);
- *(uint16_t *) (void *) getBufferAtPos() = val;
- incPosNoCheck(sizeof(v));
- }
-}
-
void ByteBuffer::getNumericNetwork(int32_t & v) {
if (__builtin_expect(getRemaining() < sizeof(v), 0)) {
throwOutOfBounds(getRemaining(), sizeof(v));
@@ -158,44 +158,6 @@ void ByteBuffer::getNumericNetwork(int32_t & v) {
}
}
-void ByteBuffer::getNumeric(int32_t & v) {
- if (__builtin_expect(getRemaining() < sizeof(v), 0)) {
- throwOutOfBounds(getRemaining(), sizeof(v));
- } else {
- v = *(int32_t *) (void *) getBufferAtPos();
- incPosNoCheck(sizeof(v));
- }
-}
-
-
-void ByteBuffer::putNumericNetwork(int32_t v) {
- if (__builtin_expect(getRemaining() < sizeof(v), 0)) {
- throwOutOfBounds(getRemaining(), sizeof(v));
- } else {
- uint32_t val = htonl(v);
- *(uint32_t *) (void *) getBufferAtPos() = val;
- incPosNoCheck(sizeof(v));
- }
-}
-
-void ByteBuffer::putNumeric(int32_t v) {
- if (__builtin_expect(getRemaining() < sizeof(v), 0)) {
- throwOutOfBounds(getRemaining(), sizeof(v));
- } else {
- *(int32_t *) (void *) getBufferAtPos() = v;
- incPosNoCheck(sizeof(v));
- }
-}
-
-void ByteBuffer::getNumeric(float & v) {
- if (__builtin_expect(getRemaining() < sizeof(v), 0)) {
- throwOutOfBounds(getRemaining(), sizeof(v));
- } else {
- v = *(float *) (void *) getBufferAtPos();
- incPosNoCheck(sizeof(v));
- }
-}
-
void ByteBuffer::getNumeric(int64_t& v) {
if (__builtin_expect(getRemaining() < sizeof(v), 0)) {
throwOutOfBounds(getRemaining(), sizeof(v));
@@ -205,223 +167,14 @@ void ByteBuffer::getNumeric(int64_t& v) {
}
}
-void ByteBuffer::getNumeric(double& v) {
- if (__builtin_expect(getRemaining() < sizeof(v), 0)) {
- throwOutOfBounds(getRemaining(), sizeof(v));
- } else {
- v = *(double *) (void *) getBufferAtPos();
- incPosNoCheck(sizeof(v));
- }
-}
-void ByteBuffer::putNumeric(double v) {
- if (__builtin_expect(getRemaining() < sizeof(v), 0)) {
- throwOutOfBounds(getRemaining(), sizeof(v));
- } else {
- *(double *) (void *) getBufferAtPos() = v;
- incPosNoCheck(sizeof(v));
- }
-}
-
void ByteBuffer::getNumericNetwork(double & v) {
getDoubleLongNetwork(v);
}
-void ByteBuffer::putNumericNetwork(int64_t v) {
- putDoubleLongNetwork(v);
-}
-void ByteBuffer::putNumericNetwork(double v) {
- putDoubleLongNetwork(v);
-}
+
void ByteBuffer::getNumericNetwork(int64_t & v) {
getDoubleLongNetwork(v);
}
-void ByteBuffer::putInt2_4_8Bytes(int64_t number, size_t len) {
- if (number < 0ll) {
- throw InputOutOfRangeException(vespalib::make_string(
- "Cannot encode negative number."), VESPA_STRLOC);
- } else if (number > 0x3FFFFFFFFFFFFFFFll) {
- throw InputOutOfRangeException(vespalib::make_string(
- "Cannot encode number larger than 2^62."), VESPA_STRLOC);
- }
-
- if (len == 0) {
- if (number < 0x8000ll) {
- //length 2 bytes
- putShortNetwork((int16_t) number);
- } else if (number < 0x40000000ll) {
- //length 4 bytes
- putIntNetwork(((int32_t) number) | 0x80000000);
- } else {
- //length 8 bytes
- putLongNetwork(number | 0xC000000000000000ll);
- }
- } else if (len == 2) {
- //length 2 bytes
- putShortNetwork((int16_t) number);
- } else if (len == 4) {
- //length 4 bytes
- putIntNetwork(((int32_t) number) | 0x80000000);
- } else if (len == 8) {
- //length 8 bytes
- putLongNetwork(number | 0xC000000000000000ll);
- } else {
- throw InputOutOfRangeException(vespalib::make_string(
- "Cannot encode number using %d bytes.", (int)len), VESPA_STRLOC);
- }
-}
-
-void ByteBuffer::getInt2_4_8Bytes(int64_t & v) {
- if (getRemaining() >= 2) {
- uint8_t flagByte = peekByte();
-
- if (flagByte & 0x80) {
- if (flagByte & 0x40) {
- //length 8 bytes
- int64_t tmp;
- getLongNetwork(tmp);
- v = tmp & 0x3FFFFFFFFFFFFFFFll;
- } else {
- //length 4 bytes
- int32_t tmp;
- getIntNetwork(tmp);
- v = (int64_t) (tmp & 0x3FFFFFFF);
- }
- } else {
- //length 2 bytes
- int16_t tmp;
- getShortNetwork(tmp);
- v = (int64_t) tmp;
- }
- } else {
- throwOutOfBounds(getRemaining(), 2);
- }
-}
-
-size_t ByteBuffer::getSerializedSize2_4_8Bytes(int64_t number) {
- if (number < 0ll) {
- throw InputOutOfRangeException(vespalib::make_string(
- "Cannot encode negative number."), VESPA_STRLOC);
- } else if (number > 0x3FFFFFFFFFFFFFFFll) {
- throw InputOutOfRangeException(vespalib::make_string(
- "Cannot encode number larger than 2^62."), VESPA_STRLOC);
- }
-
- if (number < 0x8000ll) {
- return 2;
- } else if (number < 0x40000000ll) {
- return 4;
- } else {
- return 8;
- }
-}
-
-void ByteBuffer::putInt1_2_4Bytes(int32_t number) {
- if (number < 0) {
- throw InputOutOfRangeException(vespalib::make_string(
- "Cannot encode negative number."), VESPA_STRLOC);
- } else if (number > 0x3FFFFFFF) {
- throw InputOutOfRangeException(vespalib::make_string(
- "Cannot encode number larger than 2^30."), VESPA_STRLOC);
- }
-
- if (number < 0x80) {
- putByte((unsigned char) number);
- } else if (number < 0x4000) {
- putShortNetwork((int16_t) (((int16_t)number) | ((int16_t) 0x8000)));
- } else {
- putIntNetwork(number | 0xC0000000);
- }
-}
-
-void ByteBuffer::getInt1_2_4Bytes(int32_t & v) {
- if (getRemaining() >= 1) {
- unsigned char flagByte = peekByte();
-
- if (flagByte & 0x80) {
- if (flagByte & 0x40) {
- //length 4 bytes
- int32_t tmp;
- getIntNetwork(tmp);
- v = tmp & 0x3FFFFFFF;
- } else {
- //length 2 bytes
- int16_t tmp;
- getShortNetwork(tmp);
- v = (int32_t) (tmp & ((int16_t) 0x3FFF));
- }
- } else {
- v = (int32_t) flagByte;
- incPosNoCheck(1);
- }
- } else {
- throwOutOfBounds(getRemaining(), 1);
- }
-}
-
-size_t ByteBuffer::getSerializedSize1_2_4Bytes(int32_t number) {
- if (number < 0) {
- throw InputOutOfRangeException(vespalib::make_string(
- "Cannot encode negative number."), VESPA_STRLOC);
- } else if (number > 0x3FFFFFFF) {
- throw InputOutOfRangeException(vespalib::make_string(
- "Cannot encode number larger than 2^30."), VESPA_STRLOC);
- }
-
- if (number < 0x80) {
- return 1;
- } else if (number < 0x4000) {
- return 2;
- } else {
- return 4;
- }
-}
-void ByteBuffer::putInt1_4Bytes(int32_t number) {
- if (number < 0) {
- throw InputOutOfRangeException(vespalib::make_string(
- "Cannot encode negative number."), VESPA_STRLOC);
- } else if (number > 0x7FFFFFFF) {
- throw InputOutOfRangeException(vespalib::make_string(
- "Cannot encode number larger than 2^31."), VESPA_STRLOC);
- }
-
- if (number < 0x80) {
- putByte((unsigned char) number);
- } else {
- putIntNetwork(number | 0x80000000);
- }
-}
-void ByteBuffer::getInt1_4Bytes(int32_t & v) {
- if (getRemaining() >= 1) {
- unsigned char flagByte = peekByte();
-
- if (flagByte & 0x80) {
- //length 4 bytes
- int32_t tmp;
- getIntNetwork(tmp);
- v = tmp & 0x7FFFFFFF;
- } else {
- v = (int32_t) flagByte;
- incPosNoCheck(1);
- }
- } else {
- throwOutOfBounds(getRemaining(), 1);
- }
-}
-size_t ByteBuffer::getSerializedSize1_4Bytes(int32_t number) {
- if (number < 0) {
- throw InputOutOfRangeException(vespalib::make_string(
- "Cannot encode negative number."), VESPA_STRLOC);
- } else if (number > 0x7FFFFFFF) {
- throw InputOutOfRangeException(vespalib::make_string(
- "Cannot encode number larger than 2^31."), VESPA_STRLOC);
- }
-
- if (number < 0x80) {
- return 1;
- } else {
- return 4;
- }
-}
void ByteBuffer::getBytes(void *buffer, size_t count)
{
const char *v = getBufferAtPos();
diff --git a/document/src/vespa/document/util/bytebuffer.h b/document/src/vespa/document/util/bytebuffer.h
index b97c9ecee1a..ce01231602d 100644
--- a/document/src/vespa/document/util/bytebuffer.h
+++ b/document/src/vespa/document/util/bytebuffer.h
@@ -98,10 +98,6 @@ public:
*/
void incPos(size_t pos);
- void incPosNoCheck(size_t pos) {
- _pos += pos;
- }
-
/**
* Resets pos to 0, and sets limit to old pos. Use this before reading
* from a buffer you have written to
@@ -110,175 +106,21 @@ public:
_pos = 0;
}
- /**
- * Sets pos to 0 and limit to length. Use this to start writing from the
- * start of the buffer.
- */
- void clear() {
- _pos=0;
- }
-
void getNumeric(uint8_t & v);
- void putNumeric(uint8_t v);
void getNumericNetwork(int16_t & v);
- void putNumericNetwork(int16_t v);
void getNumericNetwork(int32_t & v);
- void getNumeric(int32_t & v);
- void putNumericNetwork(int32_t v);
- void putNumeric(int32_t v);
- void getNumeric(float & v);
void getNumericNetwork(int64_t & v);
void getNumeric(int64_t& v);
- void putNumericNetwork(int64_t v);
void getNumericNetwork(double & v);
- void getNumeric(double& v);
- void putNumericNetwork(double v);
- void putNumeric(double v);
+ void getChar(char & val) { unsigned char t;getByte(t); val=t; }
void getByte(uint8_t & v) { getNumeric(v); }
- void putByte(uint8_t v) { putNumeric(v); }
void getShortNetwork(int16_t & v) { getNumericNetwork(v); }
- void putShortNetwork(int16_t v) { putNumericNetwork(v); }
void getIntNetwork(int32_t & v) { getNumericNetwork(v); }
- void getInt(int32_t & v) { getNumeric(v); }
- void putIntNetwork(int32_t v) { putNumericNetwork(v); }
- void putInt(int32_t v) { putNumeric(v); }
- void getFloat(float & v) { getNumeric(v); }
void getLongNetwork(int64_t & v) { getNumericNetwork(v); }
void getLong(int64_t& v) { getNumeric(v); }
- void putLongNetwork(int64_t v) { putNumericNetwork(v); }
void getDoubleNetwork(double & v) { getNumericNetwork(v); }
- void getDouble(double& v) { getNumeric(v); }
- void putDoubleNetwork(double v) { putNumericNetwork(v); }
- void putDouble(double v) { putNumeric(v); }
-
- private:
- void throwOutOfBounds(size_t want, size_t has) __attribute__((noinline,noreturn));
- uint8_t peekByte() const { return *getBufferAtPos(); }
-
-#if defined(__i386__) || defined(__x86_64__)
-
- template<typename T>
- void putDoubleLongNetwork(T val) {
- //TODO: Change this if we move to big-endian hardware
- if (__builtin_expect(getRemaining() < (int)sizeof(T), 0)) {
- throwOutOfBounds(sizeof(T), getRemaining());
- }
- unsigned char* data = reinterpret_cast<unsigned char*>(&val);
- for (int i=sizeof(T)-1; i>=0; --i) {
- putByte(data[i]);
- }
- }
-
- template<typename T>
- void getDoubleLongNetwork(T &val) {
- //TODO: Change this if we move to big-endian hardware
- if (__builtin_expect(getRemaining() < (int)sizeof(T), 0)) {
- throwOutOfBounds(sizeof(T), getRemaining());
- }
-
- unsigned char* data = reinterpret_cast<unsigned char*>(&val);
- for (int i=sizeof(T)-1; i>=0; --i) {
- getByte(data[i]);
- }
- }
-#else
- #error "getDoubleLongNetwork is undefined for this arcitecture"
-#endif
-
- public:
- /**
- * Writes a 62-bit positive integer to the buffer, using 2, 4, or 8 bytes.
- *
- * @param number the integer to write
- */
- void putInt2_4_8Bytes(int64_t number) {
- putInt2_4_8Bytes(number, 0);
- }
-
- /**
- * Writes a 62-bit positive integer to the buffer, using 2, 4, or 8 bytes.
- *
- * @param number the integer to write
- * @param len if non-zero, force writing number using len bytes, possibly
- * with truncation
- */
- void putInt2_4_8Bytes(int64_t number, size_t len);
-
- /**
- * Reads a 62-bit positive integer from the buffer, which was written using
- * 2, 4, or 8 bytes.
- *
- * @param v the integer read
- */
- void getInt2_4_8Bytes(int64_t & v);
-
- /**
- * Computes the size used for storing the given integer using 2, 4 or 8
- * bytes.
- *
- * @param number the integer to check length of
- * @return the number of bytes used to store it; 2, 4 or 8
- */
- static size_t getSerializedSize2_4_8Bytes(int64_t number);
-
- /**
- * Writes a 30-bit positive integer to the buffer, using 1, 2, or 4 bytes.
- *
- * @param number the integer to write
- */
- void putInt1_2_4Bytes(int32_t number);
-
- /**
- * Reads a 30-bit positive integer from the buffer, which was written using
- * 1, 2, or 4 bytes.
- *
- * @param v the integer read
- */
- void getInt1_2_4Bytes(int32_t & v);
-
- /**
- * Computes the size used for storing the given integer using 1, 2 or 4
- * bytes.
- *
- * @param number the integer to check length of
- * @return the number of bytes used to store it; 1, 2 or 4
- */
- static size_t getSerializedSize1_2_4Bytes(int32_t number);
-
- /**
- * Writes a 31-bit positive integer to the buffer, using 1 or 4 bytes.
- *
- * @param number the integer to write
- */
- void putInt1_4Bytes(int32_t number);
-
- /**
- * Reads a 31-bit positive integer from the buffer, which was written using
- * 1 or 4 bytes.
- *
- * @param v the integer read
- */
- void getInt1_4Bytes(int32_t & v);
-
- /**
- * Computes the size used for storing the given integer using 1 or 4 bytes.
- *
- * @param number the integer to check length of
- * @return the number of bytes used to store it; 1 or 4
- */
- static size_t getSerializedSize1_4Bytes(int32_t number);
-
- /**
- * Writes a 8 bit integer to the buffer at the current position, and
- * increases the positition accordingly.
- *
- * @param val the int to store
- * @return True if the value could be stored, false if end of buffer is
- * reached
- */
- void getChar(char & val) { unsigned char t;getByte(t); val=t; }
/**
* Reads the given number of bytes into the given pointer, and updates the
@@ -301,6 +143,11 @@ public:
void putBytes(const void *buf, size_t count);
private:
+ template<typename T>
+ void getDoubleLongNetwork(T &val);
+
+ void incPosNoCheck(size_t pos) { _pos += pos; }
+
char * _buffer;
size_t _len;
size_t _pos;
diff --git a/document/src/vespa/document/util/serializable.cpp b/document/src/vespa/document/util/serializable.cpp
deleted file mode 100644
index e6881c598ac..00000000000
--- a/document/src/vespa/document/util/serializable.cpp
+++ /dev/null
@@ -1,72 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-#include "serializable.h"
-#include "bufferexceptions.h"
-#include "serializableexceptions.h"
-#include "bytebuffer.h"
-
-namespace document {
-
-IMPLEMENT_IDENTIFIABLE_ABSTRACT(Serializable, vespalib::Identifiable);
-IMPLEMENT_IDENTIFIABLE_ABSTRACT(Deserializable, Serializable);
-VESPA_IMPLEMENT_EXCEPTION_SPINE(DeserializeException);
-VESPA_IMPLEMENT_EXCEPTION_SPINE(SerializeException);
-
-std::unique_ptr<ByteBuffer>
-Serializable::serialize() const
-{
- size_t len = getSerializedSize();
- std::unique_ptr<ByteBuffer> retVal(new ByteBuffer(len));
- serialize(*retVal.get());
- return retVal;
-}
-
-DeserializeException::DeserializeException(const vespalib::string& msg, const vespalib::string& location)
- : IoException(msg, IoException::CORRUPT_DATA, location, 1)
-{
-}
-
-DeserializeException::DeserializeException(
- const vespalib::string& msg, const vespalib::Exception& cause,
- const vespalib::string& location)
- : IoException(msg, IoException::CORRUPT_DATA, cause, location, 1)
-{
-}
-
-SerializeException::SerializeException(const vespalib::string& msg, const vespalib::string& location)
- : IoException(msg, IoException::CORRUPT_DATA, location, 1)
-{
-}
-
-SerializeException::SerializeException(
- const vespalib::string& msg, const vespalib::Exception& cause,
- const vespalib::string& location)
- : IoException(msg, IoException::CORRUPT_DATA, cause, location, 1)
-{
-}
-
-void
-Serializable::serialize(ByteBuffer& buffer) const {
- int pos = buffer.getPos();
- try{
- onSerialize(buffer);
- } catch (...) {
- buffer.setPos(pos);
- throw;
- }
-}
-
-void
-Deserializable::deserialize(const DocumentTypeRepo &repo, ByteBuffer& buffer) {
- int pos = buffer.getPos();
- try {
- onDeserialize(repo, buffer);
- } catch (const DeserializeException &) {
- buffer.setPos(pos);
- throw;
- } catch (const BufferOutOfBoundsException &) {
- buffer.setPos(pos);
- throw;
- }
-}
-}
diff --git a/document/src/vespa/document/util/serializable.h b/document/src/vespa/document/util/serializable.h
deleted file mode 100644
index 8039b3cd90b..00000000000
--- a/document/src/vespa/document/util/serializable.h
+++ /dev/null
@@ -1,97 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-/**
- * @file serializable.h
- * @ingroup document
- *
- * @brief Interfaces to be used for serializing of objects.
- *
- * @author Thomas F. Gundersen, H�kon Humberset
- * @date 2004-03-15
- * @version $Id$
- */
-
-#pragma once
-
-#include "bytebuffer.h"
-#include "identifiableid.h"
-#include <vespa/vespalib/objects/cloneable.h>
-#include <vespa/vespalib/objects/identifiable.h>
-
-namespace document {
-class DocumentTypeRepo;
-
-/**
- * Base class for classes that can be converted into a bytestream,
- * normally used later to create a similar instance.
- */
-
-class Serializable : public vespalib::Identifiable
-{
-protected:
- virtual void onSerialize(ByteBuffer& buffer) const = 0;
-public:
- DECLARE_IDENTIFIABLE_ABSTRACT(Serializable);
-
- virtual ~Serializable() {}
-
- /**
- * @return An upper limit to how many bytes serialization of this instance
- * need, providing instance is not altered before serialization.
- */
- virtual size_t getSerializedSize() const = 0;
-
- /**
- * Serializes the instance into the buffer given. Use getSerializedSize()
- * before calling this method to be sure buffer is big enough.
- * On success, the given buffers position will be just past the serialized
- * version of this instance, on failure, position will be reset to whatever
- * it was prior to calling this function.
- *
- * @throw SerializeException If for some reason instance cannot be
- * serialized.
- * @throw BufferOutOfBoundsException If buffer does not have enough space.
- */
- void serialize(ByteBuffer& buffer) const;
-
- /**
- * Creates a bytebuffer with enough space to serialize this instance
- * and serialize this instance into it.
- *
- * @return The created bytebuffer, positioned after the serialization.
- *
- * @throw SerializeException If for some reason instance cannot be
- * serialized.
- * @throw BufferOutOfBoundsException If buffer does not have enough space.
- */
- std::unique_ptr<ByteBuffer> serialize() const;
-};
-
-/**
- * Base class for instances that can be overwritten from a bytestream,
- * given that the bytestream is created from a similar instance.
- */
-class Deserializable : public vespalib::Cloneable, public Serializable
-{
-protected:
- virtual void onDeserialize(const DocumentTypeRepo &repo, ByteBuffer& buffer) = 0;
-
-public:
- DECLARE_IDENTIFIABLE_ABSTRACT(Deserializable);
- virtual ~Deserializable() {}
-
- /**
- * Overwrite this object with the object represented by the given
- * bytestream. On success, buffer will be positioned after the bytestream
- * representing the instance we've just deserialized, on failure, bytebuffer
- * will be pointing to where it was pointing before calling this function.
- *
- * @throw DeserializeException If read data doesn't represent a legal object
- * of this type.
- * @throw BufferOutOfBoundsException If instance wants to read more data
- * than is available in the buffer.
- */
- void deserialize(const DocumentTypeRepo &repo, ByteBuffer& buffer);
-};
-
-}
-
diff --git a/document/src/vespa/document/util/serializableexceptions.cpp b/document/src/vespa/document/util/serializableexceptions.cpp
new file mode 100644
index 00000000000..e80e38015e8
--- /dev/null
+++ b/document/src/vespa/document/util/serializableexceptions.cpp
@@ -0,0 +1,21 @@
+// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "serializableexceptions.h"
+
+namespace document {
+
+VESPA_IMPLEMENT_EXCEPTION_SPINE(DeserializeException);
+
+DeserializeException::DeserializeException(const vespalib::string& msg, const vespalib::string& location)
+ : IoException(msg, IoException::CORRUPT_DATA, location, 1)
+{
+}
+
+DeserializeException::DeserializeException(
+ const vespalib::string& msg, const vespalib::Exception& cause,
+ const vespalib::string& location)
+ : IoException(msg, IoException::CORRUPT_DATA, cause, location, 1)
+{
+}
+
+}
diff --git a/document/src/vespa/document/util/serializableexceptions.h b/document/src/vespa/document/util/serializableexceptions.h
index fcfed810bfc..1b692aa27b7 100644
--- a/document/src/vespa/document/util/serializableexceptions.h
+++ b/document/src/vespa/document/util/serializableexceptions.h
@@ -24,12 +24,4 @@ public:
VESPA_DEFINE_EXCEPTION_SPINE(DeserializeException)
};
-class SerializeException : public vespalib::IoException {
-public:
- SerializeException(const vespalib::string& msg, const vespalib::string& location = "");
- SerializeException(const vespalib::string& msg, const vespalib::Exception& cause,
- const vespalib::string& location = "");
- VESPA_DEFINE_EXCEPTION_SPINE(SerializeException)
-};
-
}
diff --git a/documentapi/src/vespa/documentapi/messagebus/documentprotocol.h b/documentapi/src/vespa/documentapi/messagebus/documentprotocol.h
index 79f7d7c0ccc..5582c0ea153 100644
--- a/documentapi/src/vespa/documentapi/messagebus/documentprotocol.h
+++ b/documentapi/src/vespa/documentapi/messagebus/documentprotocol.h
@@ -20,7 +20,6 @@ namespace documentapi {
class LoadTypeSet;
class RoutingPolicyRepository;
class RoutableRepository;
-class SystemState;
class IRoutingPolicyFactory;
class IRoutableFactory;
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/queryresultmessage.cpp b/documentapi/src/vespa/documentapi/messagebus/messages/queryresultmessage.cpp
index 411a7237cb5..08d631dc44b 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/queryresultmessage.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/queryresultmessage.cpp
@@ -4,11 +4,7 @@
namespace documentapi {
-QueryResultMessage::QueryResultMessage() :
- VisitorMessage(),
- _searchResult(),
- _summary()
-{}
+QueryResultMessage::QueryResultMessage() = default;
QueryResultMessage::QueryResultMessage(const vdslib::SearchResult & result, const vdslib::DocumentSummary & summary) :
VisitorMessage(),
@@ -16,7 +12,7 @@ QueryResultMessage::QueryResultMessage(const vdslib::SearchResult & result, cons
_summary(summary)
{}
-QueryResultMessage::~QueryResultMessage() {}
+QueryResultMessage::~QueryResultMessage() = default;
DocumentReply::UP
QueryResultMessage::doCreateReply() const
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/queryresultmessage.h b/documentapi/src/vespa/documentapi/messagebus/messages/queryresultmessage.h
index 239ce6fefd5..6324e2664e4 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/queryresultmessage.h
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/queryresultmessage.h
@@ -25,7 +25,7 @@ public:
* Constructs a new search result message for deserialization.
*/
QueryResultMessage();
- ~QueryResultMessage();
+ ~QueryResultMessage() override;
/**
* Constructs a new search result message for the given search result.
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/visitor.cpp b/documentapi/src/vespa/documentapi/messagebus/messages/visitor.cpp
index c891d9a316d..102a2308768 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/visitor.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/visitor.cpp
@@ -1,9 +1,11 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "visitor.h"
-#include <climits>
#include <vespa/document/bucket/fixed_bucket_spaces.h>
#include <vespa/vespalib/objects/nbostream.h>
+#include <vespa/vespalib/util/growablebytebuffer.h>
+#include <vespa/document/util/bytebuffer.h>
+#include <climits>
using document::FixedBucketSpaces;
@@ -79,7 +81,7 @@ DestroyVisitorMessage::~DestroyVisitorMessage() = default;
DocumentReply::UP
DestroyVisitorMessage::doCreateReply() const
{
- return DocumentReply::UP(new DocumentReply(DocumentProtocol::REPLY_DESTROYVISITOR));
+ return std::make_unique<DocumentReply>(DocumentProtocol::REPLY_DESTROYVISITOR);
}
uint32_t
@@ -115,11 +117,7 @@ VisitorInfoMessage::getType() const
return DocumentProtocol::MESSAGE_VISITORINFO;
}
-MapVisitorMessage::MapVisitorMessage() :
- _data()
-{
- // empty
-}
+MapVisitorMessage::MapVisitorMessage() = default;
uint32_t
MapVisitorMessage::getApproxSize() const
@@ -138,31 +136,17 @@ uint32_t MapVisitorMessage::getType() const
return DocumentProtocol::MESSAGE_MAPVISITOR;
}
-DocumentListMessage::Entry::Entry()
-{
- // empty
-}
+DocumentListMessage::Entry::Entry() = default;
-DocumentListMessage::Entry::Entry(int64_t timestamp,
- document::Document::SP doc,
- bool removeEntry) :
+DocumentListMessage::Entry::Entry(int64_t timestamp, document::Document::SP doc, bool removeEntry) :
_timestamp(timestamp),
_document(std::move(doc)),
_removeEntry(removeEntry)
-{
- // empty
-}
+{ }
-DocumentListMessage::Entry::Entry(const Entry& other) :
- _timestamp(other._timestamp),
- _document(other._document),
- _removeEntry(other._removeEntry)
-{
- // empty
-}
+DocumentListMessage::Entry::Entry(const Entry& other) = default;
-DocumentListMessage::Entry::Entry(const document::DocumentTypeRepo &repo,
- document::ByteBuffer& buf)
+DocumentListMessage::Entry::Entry(const document::DocumentTypeRepo &repo, document::ByteBuffer& buf)
{
buf.getLongNetwork(_timestamp);
vespalib::nbostream stream(buf.getBufferAtPos(), buf.getRemaining());
@@ -174,26 +158,15 @@ DocumentListMessage::Entry::Entry(const document::DocumentTypeRepo &repo,
}
void
-DocumentListMessage::Entry::serialize(document::ByteBuffer& buf) const
+DocumentListMessage::Entry::serialize(vespalib::GrowableByteBuffer& buf) const
{
- buf.putLongNetwork(_timestamp);
- _document->serialize(buf);
+ buf.putLong(_timestamp);
+ vespalib::nbostream nbo = _document->serialize();
+ buf.putBytes(nbo.c_str(), nbo.size());
buf.putByte(_removeEntry ? 1 : 0);
}
-uint32_t
-DocumentListMessage::Entry::getSerializedSize() const
-{
- return sizeof(int64_t) + sizeof(uint8_t)
- + _document->getSerializedSize();
-}
-
-DocumentListMessage::DocumentListMessage() :
- _bucketId(),
- _documents()
-{
- // empty
-}
+DocumentListMessage::DocumentListMessage() = default;
DocumentListMessage::DocumentListMessage(document::BucketId bid) :
_bucketId(bid),
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/visitor.h b/documentapi/src/vespa/documentapi/messagebus/messages/visitor.h
index b18a4e985f3..f47fa48bd80 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/visitor.h
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/visitor.h
@@ -52,7 +52,7 @@ public:
const string& instanceId,
const string& controlDestination,
const string& dataDestination);
- ~CreateVisitorMessage();
+ ~CreateVisitorMessage() override;
const string& getLibraryName() const { return _libName; }
void setLibraryName(const string& value) { _libName = value; }
@@ -250,7 +250,7 @@ public:
const document::Document::SP& getDocument() { return _document; }
bool isRemoveEntry() { return _removeEntry; }
- void serialize(document::ByteBuffer& buf) const;
+ void serialize(vespalib::GrowableByteBuffer& buf) const;
uint32_t getSerializedSize() const;
private:
int64_t _timestamp;
diff --git a/documentapi/src/vespa/documentapi/messagebus/routablefactories60.cpp b/documentapi/src/vespa/documentapi/messagebus/routablefactories60.cpp
index 1f950ae166c..2fe9ffa3da9 100644
--- a/documentapi/src/vespa/documentapi/messagebus/routablefactories60.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/routablefactories60.cpp
@@ -20,7 +20,7 @@ namespace documentapi {
bool
RoutableFactories60::DocumentMessageFactory::encode(const mbus::Routable &obj, vespalib::GrowableByteBuffer &out) const
{
- const DocumentMessage &msg = static_cast<const DocumentMessage&>(obj);
+ const auto &msg = static_cast<const DocumentMessage&>(obj);
out.putByte(msg.getPriority());
out.putInt(msg.getLoadType().getId());
return doEncode(msg, out);
@@ -93,7 +93,7 @@ RoutableFactories60::CreateVisitorMessageFactory::doDecode(document::ByteBuffer
msg->setVisitRemoves(decodeBoolean(buf));
msg->setFieldSet(decodeString(buf));
msg->setVisitInconsistentBuckets(decodeBoolean(buf));
- msg->getParameters().deserialize(_repo, buf);
+ msg->getParameters().deserialize(buf);
msg->setVisitorDispatcherVersion(50);
decodeInt(buf); // Unused legacy visitor ordering
msg->setMaxBucketsPerVisitor(decodeInt(buf));
@@ -105,7 +105,7 @@ RoutableFactories60::CreateVisitorMessageFactory::doDecode(document::ByteBuffer
bool
RoutableFactories60::CreateVisitorMessageFactory::doEncode(const DocumentMessage &obj, vespalib::GrowableByteBuffer &buf) const
{
- const CreateVisitorMessage &msg = static_cast<const CreateVisitorMessage&>(obj);
+ const auto &msg = static_cast<const CreateVisitorMessage&>(obj);
buf.putString(msg.getLibraryName());
buf.putString(msg.getInstanceId());
@@ -126,10 +126,8 @@ RoutableFactories60::CreateVisitorMessageFactory::doEncode(const DocumentMessage
buf.putString(msg.getFieldSet());
buf.putBoolean(msg.visitInconsistentBuckets());
- int len = msg.getParameters().getSerializedSize();
- char *tmp = buf.allocate(len);
- document::ByteBuffer dbuf(tmp, len);
- msg.getParameters().serialize(dbuf);
+
+ msg.getParameters().serialize(buf);
buf.putInt(0); // Unused legacy visitor ordering
buf.putInt(msg.getMaxBucketsPerVisitor());
@@ -184,7 +182,7 @@ RoutableFactories60::CreateVisitorReplyFactory::doDecode(document::ByteBuffer &b
bool
RoutableFactories60::CreateVisitorReplyFactory::doEncode(const DocumentReply &obj, vespalib::GrowableByteBuffer &buf) const
{
- const CreateVisitorReply &reply = static_cast<const CreateVisitorReply&>(obj);
+ const auto &reply = static_cast<const CreateVisitorReply&>(obj);
buf.putLong(reply.getLastBucket().getRawId());
buf.putInt(reply.getVisitorStatistics().getBucketsVisited());
buf.putLong(reply.getVisitorStatistics().getDocumentsVisited());
@@ -209,19 +207,14 @@ RoutableFactories60::DestroyVisitorReplyFactory::doEncode(const DocumentReply &,
}
DocumentReply::UP
-RoutableFactories60::DocumentIgnoredReplyFactory::doDecode(document::ByteBuffer& buf) const
+RoutableFactories60::DocumentIgnoredReplyFactory::doDecode(document::ByteBuffer& ) const
{
- (void) buf;
- return DocumentReply::UP(new DocumentIgnoredReply());
+ return std::make_unique<DocumentIgnoredReply>();
}
bool
-RoutableFactories60::DocumentIgnoredReplyFactory::doEncode(
- const DocumentReply& obj,
- vespalib::GrowableByteBuffer& buf) const
+RoutableFactories60::DocumentIgnoredReplyFactory::doEncode(const DocumentReply&, vespalib::GrowableByteBuffer& ) const
{
- (void) obj;
- (void) buf;
return true;
}
@@ -243,15 +236,12 @@ RoutableFactories60::DocumentListMessageFactory::doDecode(document::ByteBuffer &
bool
RoutableFactories60::DocumentListMessageFactory::doEncode(const DocumentMessage &obj, vespalib::GrowableByteBuffer &buf) const
{
- const DocumentListMessage &msg = static_cast<const DocumentListMessage&>(obj);
+ const auto &msg = static_cast<const DocumentListMessage&>(obj);
buf.putLong(msg.getBucketId().getRawId());
buf.putInt(msg.getDocuments().size());
for (const auto & document : msg.getDocuments()) {
- int len = document.getSerializedSize();
- char *tmp = buf.allocate(len);
- document::ByteBuffer dbuf(tmp, len);
- document.serialize(dbuf);
+ document.serialize(buf);
}
return true;
@@ -283,11 +273,7 @@ bool
RoutableFactories60::DocumentSummaryMessageFactory::doEncode(const DocumentMessage &obj, vespalib::GrowableByteBuffer &buf) const
{
const DocumentSummaryMessage &msg = static_cast<const DocumentSummaryMessage&>(obj);
-
- int32_t len = msg.getSerializedSize();
- char *tmp = buf.allocate(len);
- document::ByteBuffer dbuf(tmp, len);
- msg.serialize(dbuf);
+ msg.serialize(buf);
return true;
}
@@ -322,7 +308,7 @@ RoutableFactories60::EmptyBucketsMessageFactory::doDecode(document::ByteBuffer &
bool
RoutableFactories60::EmptyBucketsMessageFactory::doEncode(const DocumentMessage &obj, vespalib::GrowableByteBuffer &buf) const
{
- const EmptyBucketsMessage &msg = static_cast<const EmptyBucketsMessage&>(obj);
+ const auto &msg = static_cast<const EmptyBucketsMessage&>(obj);
buf.putInt(msg.getBucketIds().size());
for (const auto & bucketId : msg.getBucketIds()) {
@@ -367,7 +353,7 @@ RoutableFactories60::GetBucketListMessageFactory::doDecode(document::ByteBuffer
bool
RoutableFactories60::GetBucketListMessageFactory::doEncode(const DocumentMessage &obj, vespalib::GrowableByteBuffer &buf) const
{
- const GetBucketListMessage &msg = static_cast<const GetBucketListMessage&>(obj);
+ const auto &msg = static_cast<const GetBucketListMessage&>(obj);
buf.putLong(msg.getBucketId().getRawId());
return encodeBucketSpace(msg.getBucketSpace(), buf);
}
@@ -392,7 +378,7 @@ RoutableFactories60::GetBucketListReplyFactory::doDecode(document::ByteBuffer &b
bool
RoutableFactories60::GetBucketListReplyFactory::doEncode(const DocumentReply &obj, vespalib::GrowableByteBuffer &buf) const
{
- const GetBucketListReply &reply = static_cast<const GetBucketListReply&>(obj);
+ const auto &reply = static_cast<const GetBucketListReply&>(obj);
const std::vector<GetBucketListReply::BucketInfo> &buckets = reply.getBuckets();
buf.putInt(buckets.size());
@@ -417,7 +403,7 @@ RoutableFactories60::GetBucketStateMessageFactory::doDecode(document::ByteBuffer
bool
RoutableFactories60::GetBucketStateMessageFactory::doEncode(const DocumentMessage &obj, vespalib::GrowableByteBuffer &buf) const
{
- const GetBucketStateMessage &msg = static_cast<const GetBucketStateMessage&>(obj);
+ const auto &msg = static_cast<const GetBucketStateMessage&>(obj);
buf.putLong(msg.getBucketId().getRawId());
return true;
}
@@ -511,7 +497,7 @@ DocumentMessage::UP
RoutableFactories60::MapVisitorMessageFactory::doDecode(document::ByteBuffer &buf) const
{
auto msg = std::make_unique<MapVisitorMessage>();
- msg->getData().deserialize(_repo, buf);
+ msg->getData().deserialize(buf);
return msg;
}
@@ -519,11 +505,7 @@ bool
RoutableFactories60::MapVisitorMessageFactory::doEncode(const DocumentMessage &obj, vespalib::GrowableByteBuffer &buf) const
{
const MapVisitorMessage &msg = static_cast<const MapVisitorMessage&>(obj);
-
- int32_t len = msg.getData().getSerializedSize();
- char *tmp = buf.allocate(len);
- document::ByteBuffer dbuf(tmp, len);
- msg.getData().serialize(dbuf);
+ msg.getData().serialize(buf);
return true;
}
@@ -660,12 +642,8 @@ RoutableFactories60::SearchResultMessageFactory::doDecode(document::ByteBuffer &
bool
RoutableFactories60::SearchResultMessageFactory::doEncode(const DocumentMessage &obj, vespalib::GrowableByteBuffer &buf) const
{
- const SearchResultMessage &msg = static_cast<const SearchResultMessage&>(obj);
-
- int len = msg.getSerializedSize();
- char *tmp = buf.allocate(len);
- document::ByteBuffer dbuf(tmp, len);
- msg.serialize(dbuf);
+ const auto & msg = static_cast<const SearchResultMessage&>(obj);
+ msg.serialize(buf);
return true;
}
@@ -683,13 +661,10 @@ RoutableFactories60::QueryResultMessageFactory::doDecode(document::ByteBuffer &b
bool
RoutableFactories60::QueryResultMessageFactory::doEncode(const DocumentMessage &obj, vespalib::GrowableByteBuffer &buf) const
{
- const QueryResultMessage &msg = static_cast<const QueryResultMessage&>(obj);
+ const auto &msg = static_cast<const QueryResultMessage&>(obj);
- int len = msg.getSearchResult().getSerializedSize() + msg.getDocumentSummary().getSerializedSize();
- char *tmp = buf.allocate(len);
- document::ByteBuffer dbuf(tmp, len);
- msg.getSearchResult().serialize(dbuf);
- msg.getDocumentSummary().serialize(dbuf);
+ msg.getSearchResult().serialize(buf);
+ msg.getDocumentSummary().serialize(buf);
return true;
}
@@ -744,7 +719,7 @@ RoutableFactories60::StatBucketMessageFactory::doDecode(document::ByteBuffer &bu
bool
RoutableFactories60::StatBucketMessageFactory::doEncode(const DocumentMessage &obj, vespalib::GrowableByteBuffer &buf) const
{
- const StatBucketMessage &msg = static_cast<const StatBucketMessage&>(obj);
+ const auto &msg = static_cast<const StatBucketMessage&>(obj);
buf.putLong(msg.getBucketId().getRawId());
buf.putString(msg.getDocumentSelection());
@@ -762,7 +737,7 @@ RoutableFactories60::StatBucketReplyFactory::doDecode(document::ByteBuffer &buf)
bool
RoutableFactories60::StatBucketReplyFactory::doEncode(const DocumentReply &obj, vespalib::GrowableByteBuffer &buf) const
{
- const StatBucketReply &reply = static_cast<const StatBucketReply&>(obj);
+ const auto &reply = static_cast<const StatBucketReply&>(obj);
buf.putString(reply.getResults());
return true;
}
@@ -802,7 +777,7 @@ RoutableFactories60::UpdateDocumentMessageFactory::decodeInto(UpdateDocumentMess
bool
RoutableFactories60::UpdateDocumentMessageFactory::doEncode(const DocumentMessage &obj, vespalib::GrowableByteBuffer &buf) const
{
- const UpdateDocumentMessage &msg = static_cast<const UpdateDocumentMessage&>(obj);
+ const auto &msg = static_cast<const UpdateDocumentMessage&>(obj);
vespalib::nbostream stream;
msg.getDocumentUpdate().serializeHEAD(stream);
@@ -826,7 +801,7 @@ RoutableFactories60::UpdateDocumentReplyFactory::doDecode(document::ByteBuffer &
bool
RoutableFactories60::UpdateDocumentReplyFactory::doEncode(const DocumentReply &obj, vespalib::GrowableByteBuffer &buf) const
{
- const UpdateDocumentReply &reply = static_cast<const UpdateDocumentReply&>(obj);
+ const auto &reply = static_cast<const UpdateDocumentReply&>(obj);
buf.putBoolean(reply.getWasFound());
buf.putLong(reply.getHighestModificationTimestamp());
return true;
@@ -852,7 +827,7 @@ RoutableFactories60::VisitorInfoMessageFactory::doDecode(document::ByteBuffer &b
bool
RoutableFactories60::VisitorInfoMessageFactory::doEncode(const DocumentMessage &obj, vespalib::GrowableByteBuffer &buf) const
{
- const VisitorInfoMessage &msg = static_cast<const VisitorInfoMessage&>(obj);
+ const auto &msg = static_cast<const VisitorInfoMessage&>(obj);
buf.putInt(msg.getFinishedBuckets().size());
for (const auto & bucketId : msg.getFinishedBuckets()) {
@@ -887,7 +862,7 @@ RoutableFactories60::WrongDistributionReplyFactory::doDecode(document::ByteBuffe
bool
RoutableFactories60::WrongDistributionReplyFactory::doEncode(const DocumentReply &obj, vespalib::GrowableByteBuffer &buf) const
{
- const WrongDistributionReply &reply = static_cast<const WrongDistributionReply&>(obj);
+ const auto &reply = static_cast<const WrongDistributionReply&>(obj);
buf.putString(reply.getSystemState());
return true;
}
diff --git a/searchlib/src/vespa/searchlib/tensor/generic_tensor_store.cpp b/searchlib/src/vespa/searchlib/tensor/generic_tensor_store.cpp
index 4e522f27ce2..ff41396f66b 100644
--- a/searchlib/src/vespa/searchlib/tensor/generic_tensor_store.cpp
+++ b/searchlib/src/vespa/searchlib/tensor/generic_tensor_store.cpp
@@ -3,7 +3,6 @@
#include "generic_tensor_store.h"
#include <vespa/eval/tensor/tensor.h>
#include <vespa/eval/tensor/serialization/typed_binary_format.h>
-#include <vespa/document/util/serializable.h>
#include <vespa/document/util/serializableexceptions.h>
#include <vespa/vespalib/datastore/datastore.hpp>
#include <vespa/vespalib/objects/nbostream.h>
@@ -15,9 +14,7 @@ using search::datastore::Handle;
using vespalib::tensor::Tensor;
using vespalib::tensor::TypedBinaryFormat;
-namespace search {
-
-namespace tensor {
+namespace search::tensor {
constexpr size_t MIN_BUFFER_ARRAYS = 1024;
@@ -118,6 +115,4 @@ GenericTensorStore::setTensor(const Tensor &tensor)
return raw.ref;
}
-} // namespace search::tensor
-
-} // namespace search
+}
diff --git a/staging_vespalib/src/vespa/vespalib/util/growablebytebuffer.cpp b/staging_vespalib/src/vespa/vespalib/util/growablebytebuffer.cpp
index 57e88873e81..a10cad70579 100644
--- a/staging_vespalib/src/vespa/vespalib/util/growablebytebuffer.cpp
+++ b/staging_vespalib/src/vespa/vespalib/util/growablebytebuffer.cpp
@@ -27,7 +27,7 @@ GrowableByteBuffer::allocate(uint32_t len)
}
void
-GrowableByteBuffer::putBytes(const char* buffer, uint32_t length)
+GrowableByteBuffer::putBytes(const void * buffer, uint32_t length)
{
char* buf = allocate(length);
memcpy(buf, buffer, length);
diff --git a/staging_vespalib/src/vespa/vespalib/util/growablebytebuffer.h b/staging_vespalib/src/vespa/vespalib/util/growablebytebuffer.h
index d32afeeabee..afbde04fb9b 100644
--- a/staging_vespalib/src/vespa/vespalib/util/growablebytebuffer.h
+++ b/staging_vespalib/src/vespa/vespalib/util/growablebytebuffer.h
@@ -45,7 +45,7 @@ public:
/**
Adds the given buffer to this buffer.
*/
- void putBytes(const char* buffer, uint32_t length);
+ void putBytes(const void * buffer, uint32_t length);
/**
Adds a short to the buffer.
diff --git a/storage/src/tests/common/message_sender_stub.cpp b/storage/src/tests/common/message_sender_stub.cpp
index c127f9071e5..f4e64e07955 100644
--- a/storage/src/tests/common/message_sender_stub.cpp
+++ b/storage/src/tests/common/message_sender_stub.cpp
@@ -22,9 +22,7 @@ MessageSenderStub::getLastCommand(bool verbose) const
}
std::string
-MessageSenderStub::dumpMessage(const api::StorageMessage& msg,
- bool includeAddress,
- bool verbose) const
+MessageSenderStub::dumpMessage(const api::StorageMessage& msg, bool includeAddress, bool verbose) const
{
std::ostringstream ost;
@@ -38,7 +36,7 @@ MessageSenderStub::dumpMessage(const api::StorageMessage& msg,
ost << " => " << msg.getAddress()->getIndex();
}
if (verbose && msg.getType().isReply()) {
- ost << " " << dynamic_cast<const api::StorageReply&>(msg).getResult();
+ ost << " " << dynamic_cast<const api::StorageReply&>(msg).getResult().toString();
}
return ost.str();
@@ -67,9 +65,7 @@ MessageSenderStub::getLastReply(bool verbose) const
throw std::logic_error("Expected reply where there was none");
}
- return dumpMessage(*replies.back(),
- true,
- verbose);
+ return dumpMessage(*replies.back(),true, verbose);
}
diff --git a/storage/src/tests/visiting/visitormanagertest.cpp b/storage/src/tests/visiting/visitormanagertest.cpp
index 3f111bb53f7..2544fcc9a4b 100644
--- a/storage/src/tests/visiting/visitormanagertest.cpp
+++ b/storage/src/tests/visiting/visitormanagertest.cpp
@@ -653,7 +653,7 @@ TEST_F(VisitorManagerTest, visitor_cleanup) {
if (api::ReturnCode::ILLEGAL_PARAMETERS == reply->getResult().getResult()) {
failures++;
} else {
- std::cerr << reply->getResult() << "\n";
+ std::cerr << reply->getResult().toString() << "\n";
}
} else {
if (api::ReturnCode::BUSY == reply->getResult().getResult()) {
diff --git a/storage/src/vespa/storage/common/bucketmessages.cpp b/storage/src/vespa/storage/common/bucketmessages.cpp
index e92e2d4c3bf..c80b7bbb17a 100644
--- a/storage/src/vespa/storage/common/bucketmessages.cpp
+++ b/storage/src/vespa/storage/common/bucketmessages.cpp
@@ -14,7 +14,7 @@ ReadBucketList::ReadBucketList(BucketSpace bucketSpace, spi::PartitionId partiti
_partition(partition)
{ }
-ReadBucketList::~ReadBucketList() { }
+ReadBucketList::~ReadBucketList() = default;
document::Bucket
ReadBucketList::getBucket() const
@@ -38,7 +38,7 @@ ReadBucketListReply::ReadBucketListReply(const ReadBucketList& cmd)
_partition(cmd.getPartition())
{ }
-ReadBucketListReply::~ReadBucketListReply() { }
+ReadBucketListReply::~ReadBucketListReply() = default;
document::Bucket
ReadBucketListReply::getBucket() const
@@ -66,7 +66,7 @@ ReadBucketInfo::ReadBucketInfo(const document::Bucket &bucket)
_bucket(bucket)
{ }
-ReadBucketInfo::~ReadBucketInfo() { }
+ReadBucketInfo::~ReadBucketInfo() = default;
void
ReadBucketInfo::print(std::ostream& out, bool verbose, const std::string& indent) const
@@ -92,7 +92,7 @@ ReadBucketInfoReply::ReadBucketInfoReply(const ReadBucketInfo& cmd)
_bucket(cmd.getBucket())
{ }
-ReadBucketInfoReply::~ReadBucketInfoReply() { }
+ReadBucketInfoReply::~ReadBucketInfoReply() = default;
void
ReadBucketInfoReply::print(std::ostream& out, bool verbose, const std::string& indent) const {
out << "ReadBucketInfoReply()";
@@ -117,7 +117,7 @@ RepairBucketCommand::RepairBucketCommand(const document::Bucket &bucket, uint16_
setPriority(LOW);
}
-RepairBucketCommand::~RepairBucketCommand() { }
+RepairBucketCommand::~RepairBucketCommand() = default;
void
RepairBucketCommand::print(std::ostream& out, bool verbose, const std::string& indent) const {
@@ -153,7 +153,7 @@ RepairBucketReply::RepairBucketReply(const RepairBucketCommand& cmd, const api::
_altered(false)
{ }
-RepairBucketReply::~RepairBucketReply() { }
+RepairBucketReply::~RepairBucketReply() = default;
void
RepairBucketReply::print(std::ostream& out, bool verbose, const std::string& indent) const {
@@ -180,7 +180,7 @@ BucketDiskMoveCommand::BucketDiskMoveCommand(const document::Bucket &bucket,
setPriority(LOW);
}
-BucketDiskMoveCommand::~BucketDiskMoveCommand() { }
+BucketDiskMoveCommand::~BucketDiskMoveCommand() = default;
void
BucketDiskMoveCommand::setBucketId(const document::BucketId& id)
@@ -208,14 +208,14 @@ BucketDiskMoveReply::BucketDiskMoveReply(const BucketDiskMoveCommand& cmd,
_dstDisk(cmd.getDstDisk())
{ }
-BucketDiskMoveReply::~BucketDiskMoveReply() { }
+BucketDiskMoveReply::~BucketDiskMoveReply() = default;
void
BucketDiskMoveReply::print(std::ostream& out, bool, const std::string&) const
{
out << "BucketDiskMoveReply(" << _bucket.getBucketId() << ", source " << _srcDisk
<< ", target " << _dstDisk << ", " << _bucketInfo << ", "
- << getResult() << ")";
+ << getResult().toString() << ")";
}
std::unique_ptr<api::StorageReply>
@@ -236,7 +236,7 @@ InternalBucketJoinCommand::InternalBucketJoinCommand(const document::Bucket &buc
// them higher than getting more bucket info lists.
}
-InternalBucketJoinCommand::~InternalBucketJoinCommand() { }
+InternalBucketJoinCommand::~InternalBucketJoinCommand() = default;
void
InternalBucketJoinCommand::print(std::ostream& out, bool verbose, const std::string& indent) const {
@@ -255,7 +255,7 @@ InternalBucketJoinReply::InternalBucketJoinReply(const InternalBucketJoinCommand
_bucketInfo(info)
{ }
-InternalBucketJoinReply::~InternalBucketJoinReply() { }
+InternalBucketJoinReply::~InternalBucketJoinReply() = default;
void
InternalBucketJoinReply::print(std::ostream& out, bool verbose, const std::string& indent) const
diff --git a/storage/src/vespa/storage/common/storagelink.cpp b/storage/src/vespa/storage/common/storagelink.cpp
index 065f0b0b750..d9612eb48a0 100644
--- a/storage/src/vespa/storage/common/storagelink.cpp
+++ b/storage/src/vespa/storage/common/storagelink.cpp
@@ -142,7 +142,7 @@ void StorageLink::sendDown(const StorageMessage::SP& msg)
sendUp(reply);
}
} else {
- ost << " Return code: " << static_cast<StorageReply&>(*msg).getResult();
+ ost << " Return code: " << static_cast<const StorageReply&>(*msg).getResult().toString();
LOGBP(warning, "%s", ost.str().c_str());
}
} else if (!_down->onDown(msg)) {
@@ -182,7 +182,7 @@ void StorageLink::sendUp(const shared_ptr<StorageMessage> & msg)
sendDown(reply);
}
} else {
- ost << " Return code: " << static_cast<StorageReply&>(*msg).getResult();
+ ost << " Return code: " << static_cast<const StorageReply&>(*msg).getResult().toString();
LOGBP(warning, "%s", ost.str().c_str());
}
} else if (!_up->onUp(msg)) {
diff --git a/storage/src/vespa/storage/distributor/operations/external/statbucketoperation.cpp b/storage/src/vespa/storage/distributor/operations/external/statbucketoperation.cpp
index 8e6494a588d..c19168ca6e1 100644
--- a/storage/src/vespa/storage/distributor/operations/external/statbucketoperation.cpp
+++ b/storage/src/vespa/storage/distributor/operations/external/statbucketoperation.cpp
@@ -8,8 +8,7 @@
#include <vespa/log/log.h>
LOG_SETUP(".distributor.callback.statbucket");
-namespace storage {
-namespace distributor {
+namespace storage::distributor {
StatBucketOperation::StatBucketOperation(
[[maybe_unused]] DistributorComponent& manager,
@@ -21,7 +20,7 @@ StatBucketOperation::StatBucketOperation(
{
}
-StatBucketOperation::~StatBucketOperation() {}
+StatBucketOperation::~StatBucketOperation() = default;
void
StatBucketOperation::onClose(DistributorMessageSender& sender)
@@ -36,8 +35,7 @@ StatBucketOperation::onStart(DistributorMessageSender& sender)
{
std::vector<uint16_t> nodes;
- BucketDatabase::Entry entry(
- _bucketSpace.getBucketDatabase().get(_command->getBucketId()));
+ BucketDatabase::Entry entry(_bucketSpace.getBucketDatabase().get(_command->getBucketId()));
if (entry.valid()) {
nodes = entry->getNodes();
@@ -83,7 +81,7 @@ StatBucketOperation::onReceive(DistributorMessageSender& sender, const std::shar
if (myreply.getResult().getResult() == api::ReturnCode::OK) {
ost << "\tBucket information from node " << found->second << ":\n" << myreply.getResults() << "\n\n";
} else {
- ost << "\tBucket information retrieval failed on node " << found->second << ": " << myreply.getResult() << "\n\n";
+ ost << "\tBucket information retrieval failed on node " << found->second << ": " << myreply.getResult().toString() << "\n\n";
}
_results[found->second] = ost.str();
@@ -103,5 +101,4 @@ StatBucketOperation::onReceive(DistributorMessageSender& sender, const std::shar
}
}
-} // distributor
-} // storage
+}
diff --git a/storage/src/vespa/storage/persistence/filestorage/filestormanager.h b/storage/src/vespa/storage/persistence/filestorage/filestormanager.h
index bfc89a70a85..65d4035a3dd 100644
--- a/storage/src/vespa/storage/persistence/filestorage/filestormanager.h
+++ b/storage/src/vespa/storage/persistence/filestorage/filestormanager.h
@@ -36,11 +36,8 @@ namespace api {
class StorageReply;
}
-class BucketMergeTest;
-class DiskInfo;
struct FileStorManagerTest;
class ReadBucketList;
-class ModifiedBucketCheckerThread;
class BucketOwnershipNotifier;
class AbortBucketOperationsCommand;
diff --git a/storage/src/vespa/storage/visiting/recoveryvisitor.cpp b/storage/src/vespa/storage/visiting/recoveryvisitor.cpp
index f9e0fa17d66..8bac2bac10a 100644
--- a/storage/src/vespa/storage/visiting/recoveryvisitor.cpp
+++ b/storage/src/vespa/storage/visiting/recoveryvisitor.cpp
@@ -36,8 +36,7 @@ RecoveryVisitor::handleDocuments(const document::BucketId& bid,
{
vespalib::LockGuard guard(_mutex);
- LOG(debug, "Visitor %s handling block of %zu documents.",
- _id.c_str(), entries.size());
+ LOG(debug, "Visitor %s handling block of %zu documents.", _id.c_str(), entries.size());
documentapi::DocumentListMessage* cmd = nullptr;
diff --git a/storage/src/vespa/storage/visiting/recoveryvisitor.h b/storage/src/vespa/storage/visiting/recoveryvisitor.h
index e68a8fdbc8c..1da2acfed9c 100644
--- a/storage/src/vespa/storage/visiting/recoveryvisitor.h
+++ b/storage/src/vespa/storage/visiting/recoveryvisitor.h
@@ -12,16 +12,13 @@
#include "visitor.h"
#include <vespa/storageapi/message/datagram.h>
-namespace documentapi {
-class DocumentListMessage;
-}
+namespace documentapi { class DocumentListMessage; }
namespace storage {
class RecoveryVisitor : public Visitor {
public:
- RecoveryVisitor(StorageComponent&,
- const vdslib::Parameters& params);
+ RecoveryVisitor(StorageComponent&, const vdslib::Parameters& params);
private:
void handleDocuments(const document::BucketId& bucketId,
@@ -43,12 +40,11 @@ struct RecoveryVisitorFactory : public VisitorFactory {
VisitorEnvironment::UP
makeVisitorEnvironment(StorageComponent&) override {
- return VisitorEnvironment::UP(new VisitorEnvironment);
+ return std::make_unique<VisitorEnvironment>();
};
Visitor*
- makeVisitor(StorageComponent& c, VisitorEnvironment&,
- const vdslib::Parameters& params) override
+ makeVisitor(StorageComponent& c, VisitorEnvironment&, const vdslib::Parameters& params) override
{
return new RecoveryVisitor(c, params);
}
diff --git a/storage/src/vespa/storage/visiting/visitor.cpp b/storage/src/vespa/storage/visiting/visitor.cpp
index 4b213dff1d5..153d75fd50e 100644
--- a/storage/src/vespa/storage/visiting/visitor.cpp
+++ b/storage/src/vespa/storage/visiting/visitor.cpp
@@ -44,17 +44,12 @@ Visitor::HitCounter::addHit(const document::DocumentId& , uint32_t size)
}
void
-Visitor::HitCounter::updateVisitorStatistics(
- vdslib::VisitorStatistics& statistics)
+Visitor::HitCounter::updateVisitorStatistics(vdslib::VisitorStatistics& statistics)
{
- statistics.setDocumentsReturned(
- statistics.getDocumentsReturned() + _firstPassHits);
- statistics.setBytesReturned(
- statistics.getBytesReturned() + _firstPassBytes);
- statistics.setSecondPassDocumentsReturned(
- statistics.getSecondPassDocumentsReturned() + _secondPassHits);
- statistics.setSecondPassBytesReturned(
- statistics.getSecondPassBytesReturned() + _secondPassBytes);
+ statistics.setDocumentsReturned(statistics.getDocumentsReturned() + _firstPassHits);
+ statistics.setBytesReturned(statistics.getBytesReturned() + _firstPassBytes);
+ statistics.setSecondPassDocumentsReturned(statistics.getSecondPassDocumentsReturned() + _secondPassHits);
+ statistics.setSecondPassBytesReturned(statistics.getSecondPassBytesReturned() + _secondPassBytes);
}
Visitor::VisitorTarget::MessageMeta::MessageMeta(
@@ -68,8 +63,7 @@ Visitor::VisitorTarget::MessageMeta::MessageMeta(
{
}
-Visitor::VisitorTarget::MessageMeta::MessageMeta(
- Visitor::VisitorTarget::MessageMeta&& rhs) noexcept
+Visitor::VisitorTarget::MessageMeta::MessageMeta(Visitor::VisitorTarget::MessageMeta&& rhs) noexcept
: messageId(rhs.messageId),
retryCount(rhs.retryCount),
memoryUsage(rhs.memoryUsage),
@@ -78,9 +72,7 @@ Visitor::VisitorTarget::MessageMeta::MessageMeta(
{
}
-Visitor::VisitorTarget::MessageMeta::~MessageMeta()
-{
-}
+Visitor::VisitorTarget::MessageMeta::~MessageMeta() = default;
Visitor::VisitorTarget::MessageMeta&
Visitor::VisitorTarget::MessageMeta::operator=(
@@ -977,7 +969,7 @@ Visitor::getStatus(std::ostream& out, bool verbose) const
<< "</td></tr>\n";
out << "<tr><td>Current status</td><td>"
- << _result << "</td></tr>\n";
+ << _result.toString() << "</td></tr>\n";
out << "<tr><td>Failed</td><td>" << (failed() ? "true" : "false")
<< "</td></tr>\n";
diff --git a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization4_2.cpp b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization4_2.cpp
index b90153c9517..0cfd2160497 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization4_2.cpp
+++ b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization4_2.cpp
@@ -24,8 +24,7 @@ ProtocolSerialization4_2::ProtocolSerialization4_2(
{
}
-void ProtocolSerialization4_2::onEncode(
- GBBuf& buf, const api::GetCommand& msg) const
+void ProtocolSerialization4_2::onEncode(GBBuf& buf, const api::GetCommand& msg) const
{
buf.putString(msg.getDocumentId().toString());
putBucket(msg.getBucket(), buf);
@@ -41,14 +40,12 @@ ProtocolSerialization4_2::onDecodeGetCommand(BBuf& buf) const
document::Bucket bucket = getBucket(buf);
api::Timestamp beforeTimestamp(SH::getLong(buf));
bool headerOnly(SH::getBoolean(buf));
- api::GetCommand::UP msg(
- new api::GetCommand(bucket, did, headerOnly ? "[header]" : "[all]", beforeTimestamp));
+ auto msg = std::make_unique<api::GetCommand>(bucket, did, headerOnly ? "[header]" : "[all]", beforeTimestamp);
onDecodeCommand(buf, *msg);
return msg;
}
-void ProtocolSerialization4_2::onEncode(
- GBBuf& buf, const api::RemoveCommand& msg) const
+void ProtocolSerialization4_2::onEncode(GBBuf& buf, const api::RemoveCommand& msg) const
{
buf.putString(msg.getDocumentId().toString());
putBucket(msg.getBucket(), buf);
@@ -62,13 +59,12 @@ ProtocolSerialization4_2::onDecodeRemoveCommand(BBuf& buf) const
document::DocumentId did(SH::getString(buf));
document::Bucket bucket = getBucket(buf);
api::Timestamp timestamp(SH::getLong(buf));
- api::RemoveCommand::UP msg(new api::RemoveCommand(bucket, did, timestamp));
+ auto msg = std::make_unique<api::RemoveCommand>(bucket, did, timestamp);
onDecodeBucketInfoCommand(buf, *msg);
return msg;
}
-void ProtocolSerialization4_2::onEncode(
- GBBuf& buf, const api::RevertCommand& msg) const
+void ProtocolSerialization4_2::onEncode(GBBuf& buf, const api::RevertCommand& msg) const
{
putBucket(msg.getBucket(), buf);
buf.putInt(msg.getRevertTokens().size());
@@ -86,13 +82,12 @@ ProtocolSerialization4_2::onDecodeRevertCommand(BBuf& buf) const
for (uint32_t i=0, n=tokens.size(); i<n; ++i) {
tokens[i] = SH::getLong(buf);
}
- api::RevertCommand::UP msg(new api::RevertCommand(bucket, tokens));
+ auto msg = std::make_unique<api::RevertCommand>(bucket, tokens);
onDecodeBucketInfoCommand(buf, *msg);
return msg;
}
-void ProtocolSerialization4_2::onEncode(
- GBBuf& buf, const api::CreateBucketCommand& msg) const
+void ProtocolSerialization4_2::onEncode(GBBuf& buf, const api::CreateBucketCommand& msg) const
{
putBucket(msg.getBucket(), buf);
onEncodeBucketInfoCommand(buf, msg);
@@ -102,13 +97,12 @@ api::StorageCommand::UP
ProtocolSerialization4_2::onDecodeCreateBucketCommand(BBuf& buf) const
{
document::Bucket bucket = getBucket(buf);
- api::CreateBucketCommand::UP msg(new api::CreateBucketCommand(bucket));
+ auto msg = std::make_unique<api::CreateBucketCommand>(bucket);
onDecodeBucketInfoCommand(buf, *msg);
return msg;
}
-void ProtocolSerialization4_2::onEncode(
- GBBuf& buf, const api::MergeBucketCommand& msg) const
+void ProtocolSerialization4_2::onEncode(GBBuf& buf, const api::MergeBucketCommand& msg) const
{
putBucket(msg.getBucket(), buf);
const std::vector<api::MergeBucketCommand::Node>& nodes(msg.getNodes());
@@ -135,14 +129,12 @@ ProtocolSerialization4_2::onDecodeMergeBucketCommand(BBuf& buf) const
nodes.push_back(Node(index, sourceOnly));
}
api::Timestamp timestamp(SH::getLong(buf));
- api::MergeBucketCommand::UP msg(
- new api::MergeBucketCommand(bucket, nodes, timestamp));
+ auto msg = std::make_unique<api::MergeBucketCommand>(bucket, nodes, timestamp);
onDecodeCommand(buf, *msg);
return msg;
}
-void ProtocolSerialization4_2::onEncode(
- GBBuf& buf, const api::GetBucketDiffCommand& msg) const
+void ProtocolSerialization4_2::onEncode(GBBuf& buf, const api::GetBucketDiffCommand& msg) const
{
putBucket(msg.getBucket(), buf);
const std::vector<api::MergeBucketCommand::Node>& nodes(msg.getNodes());
@@ -174,8 +166,7 @@ ProtocolSerialization4_2::onDecodeGetBucketDiffCommand(BBuf& buf) const
nodes.push_back(Node(index, sourceOnly));
}
api::Timestamp timestamp = SH::getLong(buf);
- api::GetBucketDiffCommand::UP msg(
- new api::GetBucketDiffCommand(bucket, nodes, timestamp));
+ auto msg = std::make_unique<api::GetBucketDiffCommand>(bucket, nodes, timestamp);
std::vector<api::GetBucketDiffCommand::Entry>& entries(msg->getDiff());
uint32_t entryCount = SH::getInt(buf);
if (entryCount > buf.getRemaining()) {
@@ -190,8 +181,7 @@ ProtocolSerialization4_2::onDecodeGetBucketDiffCommand(BBuf& buf) const
return msg;
}
-void ProtocolSerialization4_2::onEncode(
- GBBuf& buf, const api::ApplyBucketDiffCommand& msg) const
+void ProtocolSerialization4_2::onEncode(GBBuf& buf, const api::ApplyBucketDiffCommand& msg) const
{
putBucket(msg.getBucket(), buf);
const std::vector<api::MergeBucketCommand::Node>& nodes(msg.getNodes());
@@ -201,18 +191,15 @@ void ProtocolSerialization4_2::onEncode(
buf.putBoolean(nodes[i].sourceOnly);
}
buf.putInt(msg.getMaxBufferSize());
- const std::vector<api::ApplyBucketDiffCommand::Entry>& entries(
- msg.getDiff());
+ const std::vector<api::ApplyBucketDiffCommand::Entry>& entries(msg.getDiff());
buf.putInt(entries.size());
for (uint32_t i=0; i<entries.size(); ++i) {
onEncodeDiffEntry(buf, entries[i]._entry);
buf.putString(entries[i]._docName);
buf.putInt(entries[i]._headerBlob.size());
- buf.putBytes(&entries[i]._headerBlob[0],
- entries[i]._headerBlob.size());
+ buf.putBytes(&entries[i]._headerBlob[0], entries[i]._headerBlob.size());
buf.putInt(entries[i]._bodyBlob.size());
- buf.putBytes(&entries[i]._bodyBlob[0],
- entries[i]._bodyBlob.size());
+ buf.putBytes(&entries[i]._bodyBlob[0], entries[i]._bodyBlob.size());
}
onEncodeBucketInfoCommand(buf, msg);
}
@@ -231,8 +218,7 @@ ProtocolSerialization4_2::onDecodeApplyBucketDiffCommand(BBuf& buf) const
nodes.push_back(Node(index, sourceOnly));
}
uint32_t maxBufferSize(SH::getInt(buf));
- api::ApplyBucketDiffCommand::UP msg(
- new api::ApplyBucketDiffCommand(bucket, nodes, maxBufferSize));
+ auto msg = std::make_unique<api::ApplyBucketDiffCommand>(bucket, nodes, maxBufferSize);
std::vector<api::ApplyBucketDiffCommand::Entry>& entries(msg->getDiff());
uint32_t entryCount = SH::getInt(buf);
if (entryCount > buf.getRemaining()) {
@@ -248,15 +234,13 @@ ProtocolSerialization4_2::onDecodeApplyBucketDiffCommand(BBuf& buf) const
buf.incPos(headerSize);
}
entries[i]._headerBlob.resize(headerSize);
- buf.getBytes(&entries[i]._headerBlob[0],
- entries[i]._headerBlob.size());
+ buf.getBytes(&entries[i]._headerBlob[0], entries[i]._headerBlob.size());
uint32_t bodySize = SH::getInt(buf);
if (bodySize > buf.getRemaining()) {
buf.incPos(bodySize);
}
entries[i]._bodyBlob.resize(bodySize);
- buf.getBytes(&entries[i]._bodyBlob[0],
- entries[i]._bodyBlob.size());
+ buf.getBytes(&entries[i]._bodyBlob[0], entries[i]._bodyBlob.size());
}
onDecodeBucketInfoCommand(buf, *msg);
return msg;
@@ -274,11 +258,9 @@ ProtocolSerialization4_2::onEncode(GBBuf& buf, const api::RequestBucketInfoReply
}
api::StorageReply::UP
-ProtocolSerialization4_2::onDecodeRequestBucketInfoReply(const SCmd& cmd,
- BBuf& buf) const
+ProtocolSerialization4_2::onDecodeRequestBucketInfoReply(const SCmd& cmd, BBuf& buf) const
{
- api::RequestBucketInfoReply::UP msg(new api::RequestBucketInfoReply(
- static_cast<const api::RequestBucketInfoCommand&>(cmd)));
+ auto msg = std::make_unique<api::RequestBucketInfoReply>(static_cast<const api::RequestBucketInfoCommand&>(cmd));
api::RequestBucketInfoReply::EntryVector & entries(msg->getBucketInfo());
uint32_t entryCount = SH::getInt(buf);
if (entryCount > buf.getRemaining()) {
@@ -294,8 +276,7 @@ ProtocolSerialization4_2::onDecodeRequestBucketInfoReply(const SCmd& cmd,
return msg;
}
-void ProtocolSerialization4_2::onEncode(
- GBBuf& buf, const api::NotifyBucketChangeCommand& msg) const
+void ProtocolSerialization4_2::onEncode(GBBuf& buf, const api::NotifyBucketChangeCommand& msg) const
{
putBucket(msg.getBucket(), buf);
putBucketInfo(msg.getBucketInfo(), buf);
@@ -307,30 +288,25 @@ ProtocolSerialization4_2::onDecodeNotifyBucketChangeCommand(BBuf& buf) const
{
document::Bucket bucket = getBucket(buf);
api::BucketInfo info(getBucketInfo(buf));
- api::NotifyBucketChangeCommand::UP msg(
- new api::NotifyBucketChangeCommand(bucket, info));
+ auto msg = std::make_unique<api::NotifyBucketChangeCommand>(bucket, info);
onDecodeCommand(buf, *msg);
- return api::StorageCommand::UP(msg.release());
+ return msg;
}
-void ProtocolSerialization4_2::onEncode(
- GBBuf& buf, const api::NotifyBucketChangeReply& msg) const
+void ProtocolSerialization4_2::onEncode(GBBuf& buf, const api::NotifyBucketChangeReply& msg) const
{
onEncodeReply(buf, msg);
}
api::StorageReply::UP
-ProtocolSerialization4_2::onDecodeNotifyBucketChangeReply(const SCmd& cmd,
- BBuf& buf) const
+ProtocolSerialization4_2::onDecodeNotifyBucketChangeReply(const SCmd& cmd,BBuf& buf) const
{
- api::NotifyBucketChangeReply::UP msg(new api::NotifyBucketChangeReply(
- static_cast<const api::NotifyBucketChangeCommand&>(cmd)));
+ auto msg = std::make_unique<api::NotifyBucketChangeReply>(static_cast<const api::NotifyBucketChangeCommand&>(cmd));
onDecodeReply(buf, *msg);
return msg;
}
-void ProtocolSerialization4_2::onEncode(
- GBBuf& buf, const api::SplitBucketCommand& msg) const
+void ProtocolSerialization4_2::onEncode(GBBuf& buf, const api::SplitBucketCommand& msg) const
{
putBucket(msg.getBucket(), buf);
buf.putByte(msg.getMinSplitBits());
@@ -344,7 +320,7 @@ api::StorageCommand::UP
ProtocolSerialization4_2::onDecodeSplitBucketCommand(BBuf& buf) const
{
document::Bucket bucket = getBucket(buf);
- api::SplitBucketCommand::UP msg(new api::SplitBucketCommand(bucket));
+ auto msg = std::make_unique<api::SplitBucketCommand>(bucket);
msg->setMinSplitBits(SH::getByte(buf));
msg->setMaxSplitBits(SH::getByte(buf));
msg->setMinByteSize(SH::getInt(buf));
@@ -353,30 +329,24 @@ ProtocolSerialization4_2::onDecodeSplitBucketCommand(BBuf& buf) const
return msg;
}
-void ProtocolSerialization4_2::onEncode(
- GBBuf&, const api::SetBucketStateCommand&) const
+void ProtocolSerialization4_2::onEncode(GBBuf&, const api::SetBucketStateCommand&) const
{
- throw vespalib::IllegalStateException("Unsupported serialization",
- VESPA_STRLOC);
+ throw vespalib::IllegalStateException("Unsupported serialization", VESPA_STRLOC);
}
api::StorageCommand::UP
ProtocolSerialization4_2::onDecodeSetBucketStateCommand(BBuf&) const
{
- throw vespalib::IllegalStateException("Unsupported deserialization",
- VESPA_STRLOC);
+ throw vespalib::IllegalStateException("Unsupported deserialization", VESPA_STRLOC);
}
-void ProtocolSerialization4_2::onEncode(
- GBBuf&, const api::SetBucketStateReply&) const
+void ProtocolSerialization4_2::onEncode(GBBuf&, const api::SetBucketStateReply&) const
{
- throw vespalib::IllegalStateException("Unsupported serialization",
- VESPA_STRLOC);
+ throw vespalib::IllegalStateException("Unsupported serialization", VESPA_STRLOC);
}
api::StorageReply::UP
-ProtocolSerialization4_2::onDecodeSetBucketStateReply(const SCmd&,
- BBuf&) const
+ProtocolSerialization4_2::onDecodeSetBucketStateReply(const SCmd&, BBuf&) const
{
throw vespalib::IllegalStateException("Unsupported deserialization", VESPA_STRLOC);
}
@@ -404,11 +374,7 @@ ProtocolSerialization4_2::onEncode(GBBuf& buf, const api::CreateVisitorCommand&
buf.putBoolean(msg.getFieldSet() == "[header]");
buf.putBoolean(msg.visitInconsistentBuckets());
buf.putInt(vespalib::count_ms(msg.getQueueTimeout()));
-
- uint32_t size = msg.getParameters().getSerializedSize();
- char* docBuffer = buf.allocate(size);
- document::ByteBuffer bbuf(docBuffer, size);
- msg.getParameters().serialize(bbuf);
+ msg.getParameters().serialize(buf);
onEncodeCommand(buf, msg);
}
@@ -420,8 +386,7 @@ ProtocolSerialization4_2::onDecodeCreateVisitorCommand(BBuf& buf) const
vespalib::stringref libraryName = SH::getString(buf);
vespalib::stringref instanceId = SH::getString(buf);
vespalib::stringref selection = SH::getString(buf);
- api::CreateVisitorCommand::UP msg(
- new api::CreateVisitorCommand(bucketSpace, libraryName, instanceId, selection));
+ auto msg = std::make_unique<api::CreateVisitorCommand>(bucketSpace, libraryName, instanceId, selection);
msg->setVisitorCmdId(SH::getInt(buf));
msg->setControlDestination(SH::getString(buf));
msg->setDataDestination(SH::getString(buf));
@@ -450,7 +415,7 @@ ProtocolSerialization4_2::onDecodeCreateVisitorCommand(BBuf& buf) const
msg->setVisitInconsistentBuckets();
}
msg->setQueueTimeout(std::chrono::milliseconds(SH::getInt(buf)));
- msg->getParameters().deserialize(getTypeRepo(), buf);
+ msg->getParameters().deserialize(buf);
onDecodeCommand(buf, *msg);
msg->setVisitorDispatcherVersion(42);
@@ -458,8 +423,7 @@ ProtocolSerialization4_2::onDecodeCreateVisitorCommand(BBuf& buf) const
}
void
-ProtocolSerialization4_2::onEncode(
- GBBuf& buf, const api::DestroyVisitorCommand& msg) const
+ProtocolSerialization4_2::onEncode(GBBuf& buf, const api::DestroyVisitorCommand& msg) const
{
buf.putString(msg.getInstanceId());
onEncodeCommand(buf, msg);
@@ -469,7 +433,7 @@ api::StorageCommand::UP
ProtocolSerialization4_2::onDecodeDestroyVisitorCommand(BBuf& buf) const
{
vespalib::stringref instanceId = SH::getString(buf);
- api::DestroyVisitorCommand::UP msg(new api::DestroyVisitorCommand(instanceId));
+ auto msg = std::make_unique<api::DestroyVisitorCommand>(instanceId);
onDecodeCommand(buf, *msg);
return msg;
}
@@ -483,7 +447,7 @@ ProtocolSerialization4_2::onEncode(GBBuf& buf, const api::DestroyVisitorReply& m
api::StorageReply::UP
ProtocolSerialization4_2::onDecodeDestroyVisitorReply(const SCmd& cmd, BBuf& buf) const
{
- api::DestroyVisitorReply::UP msg(new api::DestroyVisitorReply(static_cast<const api::DestroyVisitorCommand&>(cmd)));
+ auto msg = std::make_unique<api::DestroyVisitorReply>(static_cast<const api::DestroyVisitorCommand&>(cmd));
onDecodeReply(buf, *msg);
return msg;
}
@@ -502,8 +466,7 @@ ProtocolSerialization4_2::onDecodeRemoveLocationCommand(BBuf& buf) const
vespalib::stringref documentSelection = SH::getString(buf);
document::Bucket bucket = getBucket(buf);
- api::RemoveLocationCommand::UP msg;
- msg.reset(new api::RemoveLocationCommand(documentSelection, bucket));
+ auto msg = std::make_unique<api::RemoveLocationCommand>(documentSelection, bucket);
onDecodeCommand(buf, *msg);
return msg;
}
@@ -517,7 +480,7 @@ ProtocolSerialization4_2::onEncode(GBBuf& buf, const api::RemoveLocationReply& m
api::StorageReply::UP
ProtocolSerialization4_2::onDecodeRemoveLocationReply(const SCmd& cmd, BBuf& buf) const
{
- api::RemoveLocationReply::UP msg(new api::RemoveLocationReply(static_cast<const api::RemoveLocationCommand&>(cmd)));
+ auto msg = std::make_unique<api::RemoveLocationReply>(static_cast<const api::RemoveLocationCommand&>(cmd));
onDecodeBucketInfoReply(buf, *msg);
return msg;
}
@@ -525,15 +488,13 @@ ProtocolSerialization4_2::onDecodeRemoveLocationReply(const SCmd& cmd, BBuf& buf
// Utility functions for serialization
void
-ProtocolSerialization4_2::onEncodeBucketInfoCommand(
- GBBuf& buf, const api::BucketInfoCommand& msg) const
+ProtocolSerialization4_2::onEncodeBucketInfoCommand(GBBuf& buf, const api::BucketInfoCommand& msg) const
{
onEncodeCommand(buf, msg);
}
void
-ProtocolSerialization4_2::onDecodeBucketInfoCommand(
- BBuf& buf, api::BucketInfoCommand& msg) const
+ProtocolSerialization4_2::onDecodeBucketInfoCommand(BBuf& buf, api::BucketInfoCommand& msg) const
{
onDecodeCommand(buf, msg);
}
@@ -547,8 +508,7 @@ ProtocolSerialization4_2::onEncode(GBBuf& buf, const api::ReturnCode& rc) const
}
void
-ProtocolSerialization4_2::onEncodeDiffEntry(
- GBBuf& buf, const api::GetBucketDiffCommand::Entry& entry) const
+ProtocolSerialization4_2::onEncodeDiffEntry(GBBuf& buf, const api::GetBucketDiffCommand::Entry& entry) const
{
buf.putLong(entry._timestamp);
SH::putGlobalId(entry._gid, buf);
@@ -559,8 +519,7 @@ ProtocolSerialization4_2::onEncodeDiffEntry(
}
void
-ProtocolSerialization4_2::onDecodeDiffEntry(
- BBuf& buf, api::GetBucketDiffCommand::Entry& entry) const
+ProtocolSerialization4_2::onDecodeDiffEntry(BBuf& buf, api::GetBucketDiffCommand::Entry& entry) const
{
entry._timestamp = SH::getLong(buf);
entry._gid = SH::getGlobalId(buf);
diff --git a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_1.cpp b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_1.cpp
index b0a1685ed8c..0b1f66127ba 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_1.cpp
+++ b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_1.cpp
@@ -62,32 +62,26 @@ ProtocolSerialization5_1::onDecodeSetBucketStateCommand(BBuf& buf) const
{
document::Bucket bucket = getBucket(buf);
api::SetBucketStateCommand::BUCKET_STATE state(
- static_cast<api::SetBucketStateCommand::BUCKET_STATE>(
- SH::getByte(buf)));
- api::SetBucketStateCommand::UP msg(
- new api::SetBucketStateCommand(bucket, state));
+ static_cast<api::SetBucketStateCommand::BUCKET_STATE>(SH::getByte(buf)));
+ auto msg = std::make_unique<api::SetBucketStateCommand>(bucket, state);
onDecodeCommand(buf, *msg);
- return api::StorageCommand::UP(msg.release());
+ return msg;
}
-void ProtocolSerialization5_1::onEncode(
- GBBuf& buf, const api::SetBucketStateReply& msg) const
+void ProtocolSerialization5_1::onEncode(GBBuf& buf, const api::SetBucketStateReply& msg) const
{
onEncodeBucketReply(buf, msg);
}
api::StorageReply::UP
-ProtocolSerialization5_1::onDecodeSetBucketStateReply(const SCmd& cmd,
- BBuf& buf) const
+ProtocolSerialization5_1::onDecodeSetBucketStateReply(const SCmd& cmd, BBuf& buf) const
{
- api::SetBucketStateReply::UP msg(new api::SetBucketStateReply(
- static_cast<const api::SetBucketStateCommand&>(cmd)));
+ auto msg = std::make_unique<api::SetBucketStateReply>(static_cast<const api::SetBucketStateCommand&>(cmd));
onDecodeBucketReply(buf, *msg);
- return api::StorageReply::UP(msg.release());
+ return msg;
}
-void ProtocolSerialization5_1::onEncode(
- GBBuf& buf, const api::GetCommand& msg) const
+void ProtocolSerialization5_1::onEncode(GBBuf& buf, const api::GetCommand& msg) const
{
buf.putString(msg.getDocumentId().toString());
putBucket(msg.getBucket(), buf);
@@ -103,15 +97,13 @@ ProtocolSerialization5_1::onDecodeGetCommand(BBuf& buf) const
document::Bucket bucket = getBucket(buf);
api::Timestamp beforeTimestamp(SH::getLong(buf));
std::string fieldSet(SH::getString(buf));
- api::GetCommand::UP msg(
- new api::GetCommand(bucket, did, fieldSet, beforeTimestamp));
+ auto msg = std::make_unique<api::GetCommand>(bucket, did, fieldSet, beforeTimestamp);
onDecodeCommand(buf, *msg);
- return api::StorageCommand::UP(msg.release());
+ return msg;
}
void
-ProtocolSerialization5_1::onEncode(
- GBBuf& buf, const api::CreateVisitorCommand& msg) const
+ProtocolSerialization5_1::onEncode(GBBuf& buf, const api::CreateVisitorCommand& msg) const
{
putBucketSpace(msg.getBucketSpace(), buf);
buf.putString(msg.getLibraryName());
@@ -133,11 +125,7 @@ ProtocolSerialization5_1::onEncode(
buf.putString(msg.getFieldSet());
buf.putBoolean(msg.visitInconsistentBuckets());
buf.putInt(vespalib::count_ms(msg.getQueueTimeout()));
-
- uint32_t size = msg.getParameters().getSerializedSize();
- char* docBuffer = buf.allocate(size);
- document::ByteBuffer bbuf(docBuffer, size);
- msg.getParameters().serialize(bbuf);
+ msg.getParameters().serialize(buf);
onEncodeCommand(buf, msg);
@@ -152,8 +140,7 @@ ProtocolSerialization5_1::onDecodeCreateVisitorCommand(BBuf& buf) const
vespalib::stringref libraryName = SH::getString(buf);
vespalib::stringref instanceId = SH::getString(buf);
vespalib::stringref selection = SH::getString(buf);
- api::CreateVisitorCommand::UP msg(
- new api::CreateVisitorCommand(bucketSpace, libraryName, instanceId, selection));
+ auto msg = std::make_unique<api::CreateVisitorCommand>(bucketSpace, libraryName, instanceId, selection);
msg->setVisitorCmdId(SH::getInt(buf));
msg->setControlDestination(SH::getString(buf));
msg->setDataDestination(SH::getString(buf));
@@ -182,17 +169,16 @@ ProtocolSerialization5_1::onDecodeCreateVisitorCommand(BBuf& buf) const
msg->setVisitInconsistentBuckets();
}
msg->setQueueTimeout(std::chrono::milliseconds(SH::getInt(buf)));
- msg->getParameters().deserialize(getTypeRepo(), buf);
+ msg->getParameters().deserialize(buf);
onDecodeCommand(buf, *msg);
SH::getInt(buf); // Unused
msg->setMaxBucketsPerVisitor(SH::getInt(buf));
msg->setVisitorDispatcherVersion(50);
- return api::StorageCommand::UP(msg.release());
+ return msg;
}
-void ProtocolSerialization5_1::onEncode(
- GBBuf& buf, const api::CreateBucketCommand& msg) const
+void ProtocolSerialization5_1::onEncode(GBBuf& buf, const api::CreateBucketCommand& msg) const
{
putBucket(msg.getBucket(), buf);
buf.putBoolean(msg.getActive());
@@ -204,10 +190,10 @@ ProtocolSerialization5_1::onDecodeCreateBucketCommand(BBuf& buf) const
{
document::Bucket bucket = getBucket(buf);
bool setActive = SH::getBoolean(buf);
- api::CreateBucketCommand::UP msg(new api::CreateBucketCommand(bucket));
+ auto msg = std::make_unique<api::CreateBucketCommand>(bucket);
msg->setActive(setActive);
onDecodeBucketInfoCommand(buf, *msg);
- return api::StorageCommand::UP(msg.release());
+ return msg;
}
}
diff --git a/storageapi/src/vespa/storageapi/mbusprot/storagereply.cpp b/storageapi/src/vespa/storageapi/mbusprot/storagereply.cpp
index 469c6a41bc7..596af6a79d4 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/storagereply.cpp
+++ b/storageapi/src/vespa/storageapi/mbusprot/storagereply.cpp
@@ -3,6 +3,8 @@
#include "storagereply.h"
#include "storagecommand.h"
#include <vespa/vespalib/util/exceptions.h>
+#include <vespa/vespalib/objects/nbostream.h>
+
using vespalib::alloc::Alloc;
using vespalib::IllegalStateException;
@@ -17,8 +19,8 @@ StorageReply::StorageReply(mbus::BlobRef data, const ProtocolSerialization& seri
_reply()
{
memcpy(_buffer.get(), data.data(), _sz);
- document::ByteBuffer buf(data.data(), _sz);
- buf.getIntNetwork(reinterpret_cast<int32_t&>(_mbusType));
+ vespalib::nbostream nbo(data.data(), _sz);
+ nbo >> _mbusType;
}
StorageReply::StorageReply(api::StorageReply::SP reply)
diff --git a/storageapi/src/vespa/storageapi/message/bucket.h b/storageapi/src/vespa/storageapi/message/bucket.h
index f6185d9f8e7..ec1df33a285 100644
--- a/storageapi/src/vespa/storageapi/message/bucket.h
+++ b/storageapi/src/vespa/storageapi/message/bucket.h
@@ -14,12 +14,12 @@
#include <vespa/storageapi/messageapi/maintenancecommand.h>
#include <vespa/document/base/globalid.h>
#include <vespa/vdslib/state/clusterstate.h>
+#include <vespa/vespalib/util/array.h>
#include <vespa/storageapi/defs.h>
namespace document { class DocumentTypeRepo; }
-namespace storage {
-namespace api {
+namespace storage::api {
/**
* @class CreateBucketCommand
@@ -482,5 +482,4 @@ public:
DECLARE_STORAGEREPLY(SetBucketStateReply, onSetBucketStateReply)
};
-} // api
-} // storage
+}
diff --git a/storageapi/src/vespa/storageapi/message/visitor.cpp b/storageapi/src/vespa/storageapi/message/visitor.cpp
index aeb58f30fb4..f398b4c8146 100644
--- a/storageapi/src/vespa/storageapi/message/visitor.cpp
+++ b/storageapi/src/vespa/storageapi/message/visitor.cpp
@@ -65,7 +65,7 @@ CreateVisitorCommand::CreateVisitorCommand(const CreateVisitorCommand& o)
{
}
-CreateVisitorCommand::~CreateVisitorCommand() {}
+CreateVisitorCommand::~CreateVisitorCommand() = default;
document::Bucket
CreateVisitorCommand::getBucket() const
@@ -141,8 +141,7 @@ DestroyVisitorCommand::DestroyVisitorCommand(vespalib::stringref instanceId)
}
void
-DestroyVisitorCommand::print(std::ostream& out, bool verbose,
- const std::string& indent) const
+DestroyVisitorCommand::print(std::ostream& out, bool verbose, const std::string& indent) const
{
out << "DestroyVisitorCommand(" << _instanceId << ")";
if (verbose) {
@@ -157,8 +156,7 @@ DestroyVisitorReply::DestroyVisitorReply(const DestroyVisitorCommand& cmd)
}
void
-DestroyVisitorReply::print(std::ostream& out, bool verbose,
- const std::string& indent) const
+DestroyVisitorReply::print(std::ostream& out, bool verbose, const std::string& indent) const
{
out << "DestroyVisitorReply()";
if (verbose) {
@@ -175,17 +173,15 @@ VisitorInfoCommand::VisitorInfoCommand()
{
}
-VisitorInfoCommand::~VisitorInfoCommand() {
-}
+VisitorInfoCommand::~VisitorInfoCommand() = default;
void
-VisitorInfoCommand::print(std::ostream& out, bool verbose,
- const std::string& indent) const
+VisitorInfoCommand::print(std::ostream& out, bool verbose, const std::string& indent) const
{
out << "VisitorInfoCommand(";
if (_completed) { out << "completed"; }
if (_error.failed()) {
- out << _error;
+ out << _error.toString();
}
if (verbose) {
out << ") : ";
@@ -205,8 +201,7 @@ VisitorInfoReply::VisitorInfoReply(const VisitorInfoCommand& cmd)
}
void
-VisitorInfoReply::print(std::ostream& out, bool verbose,
- const std::string& indent) const
+VisitorInfoReply::print(std::ostream& out, bool verbose, const std::string& indent) const
{
out << "VisitorInfoReply(";
if (_completed) { out << "completed"; }
diff --git a/storageapi/src/vespa/storageapi/messageapi/returncode.cpp b/storageapi/src/vespa/storageapi/messageapi/returncode.cpp
index 68fbca75393..9b497a297a1 100644
--- a/storageapi/src/vespa/storageapi/messageapi/returncode.cpp
+++ b/storageapi/src/vespa/storageapi/messageapi/returncode.cpp
@@ -3,8 +3,7 @@
#include "returncode.h"
#include <ostream>
-namespace storage {
-namespace api {
+namespace storage::api {
ReturnCode::ReturnCode()
: _result(OK),
@@ -14,60 +13,22 @@ ReturnCode::ReturnCode()
ReturnCode::ReturnCode(const ReturnCode &) = default;
ReturnCode & ReturnCode::operator = (const ReturnCode &) = default;
ReturnCode & ReturnCode::operator = (ReturnCode &&) = default;
-ReturnCode::~ReturnCode() {}
+ReturnCode::~ReturnCode() = default;
ReturnCode::ReturnCode(Result result, vespalib::stringref msg)
: _result(result),
_message(msg)
{}
-ReturnCode::ReturnCode(const document::DocumentTypeRepo &repo,
- document::ByteBuffer& buffer)
- : _result(OK),
- _message()
-{
- deserialize(repo, buffer);
-}
-
-void ReturnCode::
-onDeserialize(const document::DocumentTypeRepo &, document::ByteBuffer& buffer)
-{
- int32_t result;
- buffer.getInt(result);
- _result = static_cast<Result>(result);
- int32_t size;
- buffer.getInt(size);
- const char * p = buffer.getBufferAtPos();
- buffer.incPos(size);
- _message.assign(p, size);
-}
-
-void ReturnCode::onSerialize(document::ByteBuffer& buffer) const
-{
- buffer.putInt(_result);
- buffer.putInt(_message.size());
- buffer.putBytes(_message.c_str(), _message.size());
-}
-
-size_t ReturnCode::getSerializedSize() const
-{
- return 2 * sizeof(int32_t) + _message.size();
-}
-
-void
-ReturnCode::print(std::ostream& out, bool verbose,
- const std::string& indent) const
-{
- (void) verbose; (void) indent;
- out << "ReturnCode(" << ReturnCode::getResultString(getResult());
- if (getMessage().size() > 0) out << ", " << getMessage();
- out << ")";
-}
-
vespalib::string ReturnCode::getResultString(Result result) {
return documentapi::DocumentProtocol::getErrorName(result);
}
+vespalib::string
+ReturnCode::toString() const {
+ return getResultString(_result) + " : " + _message;
+}
+
bool
ReturnCode::isBusy() const
{
@@ -173,5 +134,4 @@ ReturnCode::isBucketDisappearance() const
}
}
-} // api
-} // storage
+}
diff --git a/storageapi/src/vespa/storageapi/messageapi/returncode.h b/storageapi/src/vespa/storageapi/messageapi/returncode.h
index ccd95a81aa3..58392e545a9 100644
--- a/storageapi/src/vespa/storageapi/messageapi/returncode.h
+++ b/storageapi/src/vespa/storageapi/messageapi/returncode.h
@@ -10,20 +10,12 @@
#pragma once
-#include <vespa/vespalib/util/printable.h>
-#include <vespa/document/util/serializable.h>
#include <vespa/documentapi/messagebus/documentprotocol.h>
-#include <iosfwd>
-namespace document {
- class ByteBuffer;
-}
-namespace storage {
-namespace api {
+namespace storage::api {
-class ReturnCode : public document::Deserializable,
- public vespalib::Printable {
+class ReturnCode {
public:
typedef documentapi::DocumentProtocol Protocol;
@@ -68,31 +60,20 @@ public:
private:
Result _result;
vespalib::string _message;
- void onDeserialize(const document::DocumentTypeRepo &repo, document::ByteBuffer& buffer) override;
- void onSerialize(document::ByteBuffer& buffer) const override;
-
public:
ReturnCode();
explicit ReturnCode(Result result, vespalib::stringref msg = "");
- ReturnCode(const document::DocumentTypeRepo &repo,
- document::ByteBuffer& buffer);
ReturnCode(const ReturnCode &);
ReturnCode & operator = (const ReturnCode &);
ReturnCode(ReturnCode &&) = default;
ReturnCode & operator = (ReturnCode &&);
~ReturnCode();
- ReturnCode* clone() const override { return new ReturnCode(*this); }
-
- size_t getSerializedSize() const override;
-
const vespalib::string& getMessage() const { return _message; }
void setMessage(vespalib::stringref message) { _message = message; }
Result getResult() const { return _result; }
- void print(std::ostream& out, bool verbose, const std::string& indent) const override;
-
/**
* Translate from status code to human-readable string
* @param result Status code returned from getResult()
@@ -121,8 +102,7 @@ public:
bool isShutdownRelated() const;
bool isBucketDisappearance() const;
bool isNonCriticalForIntegrityChecker() const;
+ vespalib::string toString() const;
};
-
-} // api
-} // storage
+}
diff --git a/storageapi/src/vespa/storageapi/messageapi/storagereply.cpp b/storageapi/src/vespa/storageapi/messageapi/storagereply.cpp
index 86f7cb6e16d..1033b016629 100644
--- a/storageapi/src/vespa/storageapi/messageapi/storagereply.cpp
+++ b/storageapi/src/vespa/storageapi/messageapi/storagereply.cpp
@@ -4,8 +4,7 @@
#include "storagecommand.h"
#include <ostream>
-namespace storage {
-namespace api {
+namespace storage::api {
StorageReply::StorageReply(const StorageCommand& cmd, ReturnCode code)
: StorageMessage(cmd.getType().getReplyType(), cmd.getMsgId()),
@@ -19,16 +18,14 @@ StorageReply::StorageReply(const StorageCommand& cmd, ReturnCode code)
setTransportContext(cmd.getTransportContext());
}
-StorageReply::~StorageReply() { }
+StorageReply::~StorageReply() = default;
void
StorageReply::print(std::ostream& out, bool verbose,
const std::string& indent) const
{
(void) verbose; (void) indent;
- out << "StorageReply(" << _type.getName() << ", "
- << _result.toString() << ")";
+ out << "StorageReply(" << _type.getName() << ", " << _result.toString() << ")";
}
-} // api
-} // storage
+}
diff --git a/storageapi/src/vespa/storageapi/messageapi/storagereply.h b/storageapi/src/vespa/storageapi/messageapi/storagereply.h
index 4219f3e28cd..1a3bbe35eb4 100644
--- a/storageapi/src/vespa/storageapi/messageapi/storagereply.h
+++ b/storageapi/src/vespa/storageapi/messageapi/storagereply.h
@@ -15,8 +15,7 @@
#include "returncode.h"
#include "storagemessage.h"
-namespace storage {
-namespace api {
+namespace storage::api {
class StorageCommand;
@@ -28,7 +27,7 @@ protected:
ReturnCode code = ReturnCode(ReturnCode::OK));
public:
- ~StorageReply();
+ ~StorageReply() override;
DECLARE_POINTER_TYPEDEFS(StorageReply);
void setResult(const ReturnCode& r) { _result = r; }
@@ -37,6 +36,4 @@ public:
void print(std::ostream& out, bool verbose, const std::string& indent) const override;
};
-} // api
-} // storage
-
+}
diff --git a/vdslib/src/tests/container/parameterstest.cpp b/vdslib/src/tests/container/parameterstest.cpp
index c54d8ae66da..95a29fb97be 100644
--- a/vdslib/src/tests/container/parameterstest.cpp
+++ b/vdslib/src/tests/container/parameterstest.cpp
@@ -1,10 +1,12 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include <vespa/document/repo/documenttyperepo.h>
#include <vespa/vdslib/container/parameters.h>
+#include <vespa/vespalib/util/growablebytebuffer.h>
+#include <vespa/document/util/bytebuffer.h>
#include <vespa/vespalib/gtest/gtest.h>
-using document::DocumentTypeRepo;
+using vespalib::GrowableByteBuffer;
+using document::ByteBuffer;
using namespace vdslib;
TEST(ParametersTest, test_parameters)
@@ -15,11 +17,12 @@ TEST(ParametersTest, test_parameters)
par.set("number", 6);
par.set("int64_t", INT64_C(8589934590));
par.set("double", 0.25);
- std::unique_ptr<document::ByteBuffer> buffer(par.serialize());
- buffer->flip();
- DocumentTypeRepo repo;
- Parameters par2(repo, *buffer);
+ GrowableByteBuffer buffer;
+ par.serialize(buffer);
+
+ ByteBuffer bBuf(buffer.getBuffer(), buffer.position());
+ Parameters par2(bBuf);
EXPECT_EQ(vespalib::stringref("overture"), par2.get("fast"));
EXPECT_EQ(vespalib::stringref("yahoo"), par2.get("overture"));
@@ -35,4 +38,5 @@ TEST(ParametersTest, test_parameters)
EXPECT_EQ(numberDefault, par2.get("nonexistingnumber", numberDefault));
EXPECT_EQ(int64Default, par2.get("nonexistingint64_t", int64Default));
EXPECT_EQ(doubleDefault, par2.get("nonexistingdouble", doubleDefault));
+
}
diff --git a/vdslib/src/vespa/vdslib/container/documentsummary.cpp b/vdslib/src/vespa/vdslib/container/documentsummary.cpp
index bc8a0473ab3..f948bd64687 100644
--- a/vdslib/src/vespa/vdslib/container/documentsummary.cpp
+++ b/vdslib/src/vespa/vdslib/container/documentsummary.cpp
@@ -1,6 +1,8 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "documentsummary.h"
+#include <vespa/vespalib/util/growablebytebuffer.h>
+#include <vespa/document/util/bytebuffer.h>
#include <algorithm>
namespace vdslib {
@@ -21,7 +23,7 @@ DocumentSummary::DocumentSummary(document::ByteBuffer& buf) :
deserialize(buf);
}
-DocumentSummary::~DocumentSummary() {}
+DocumentSummary::~DocumentSummary() = default;
void DocumentSummary::deserialize(document::ByteBuffer& buf)
{
@@ -47,18 +49,18 @@ void DocumentSummary::deserialize(document::ByteBuffer& buf)
}
}
-void DocumentSummary::serialize(document::ByteBuffer& buf) const
+void DocumentSummary::serialize(vespalib::GrowableByteBuffer& buf) const
{
- buf.putIntNetwork(0); // Just serialize dummy 4 byte field, to avoid versioning.
- buf.putIntNetwork(_summary.size());
+ buf.putInt(0); // Just serialize dummy 4 byte field, to avoid versioning.
+ buf.putInt(_summary.size());
if ( ! _summary.empty() ) {
- buf.putIntNetwork(getSummarySize());
+ buf.putInt(getSummarySize());
for (size_t i(0), m(_summary.size()); i < m; i++) {
Summary s(_summary[i]);
buf.putBytes(s.getDocId(_summaryBuffer->c_str()), s.getTotalSize());
}
for (size_t i(0), m(_summary.size()); i < m; i++) {
- buf.putIntNetwork(_summary[i].getSummarySize());
+ buf.putInt(_summary[i].getSummarySize());
}
}
}
diff --git a/vdslib/src/vespa/vdslib/container/documentsummary.h b/vdslib/src/vespa/vdslib/container/documentsummary.h
index f04c1fa06bf..375546920ec 100644
--- a/vdslib/src/vespa/vdslib/container/documentsummary.h
+++ b/vdslib/src/vespa/vdslib/container/documentsummary.h
@@ -2,9 +2,10 @@
#pragma once
#include <vespa/vespalib/util/memory.h>
-#include <vespa/document/util/bytebuffer.h>
#include <vector>
+namespace document { class ByteBuffer; }
+namespace vespalib { class GrowableByteBuffer; }
namespace vdslib {
class DocumentSummary {
@@ -29,7 +30,7 @@ public:
void sort();
void deserialize(document::ByteBuffer& buf);
- void serialize(document::ByteBuffer& buf) const;
+ void serialize(vespalib::GrowableByteBuffer& buf) const;
uint32_t getSerializedSize() const;
private:
class Summary {
diff --git a/vdslib/src/vespa/vdslib/container/parameters.cpp b/vdslib/src/vespa/vdslib/container/parameters.cpp
index 4358c42ff29..9c843df1caa 100644
--- a/vdslib/src/vespa/vdslib/container/parameters.cpp
+++ b/vdslib/src/vespa/vdslib/container/parameters.cpp
@@ -1,20 +1,22 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "parameters.hpp"
+#include <vespa/document/util/bytebuffer.h>
#include <vespa/vespalib/objects/nbostream.h>
#include <vespa/vespalib/objects/hexdump.h>
#include <vespa/vespalib/stllike/hash_map.hpp>
#include <vespa/vespalib/util/xmlstream.h>
+#include <vespa/vespalib/util/growablebytebuffer.h>
#include <ostream>
using namespace vdslib;
Parameters::Parameters() = default;
-Parameters::Parameters(const document::DocumentTypeRepo &repo, document::ByteBuffer& buffer)
+Parameters::Parameters(document::ByteBuffer& buffer)
: _parameters()
{
- deserialize(repo, buffer);
+ deserialize(buffer);
}
Parameters::~Parameters() = default;
@@ -28,20 +30,19 @@ size_t Parameters::getSerializedSize() const
return mysize;
}
-void Parameters::onSerialize(document::ByteBuffer& buffer) const
+void Parameters::serialize(vespalib::GrowableByteBuffer& buffer) const
{
- buffer.putIntNetwork(_parameters.size());
+ buffer.putInt(_parameters.size());
for (const auto & entry : _parameters) {
- buffer.putIntNetwork(entry.first.size());
+ buffer.putInt(entry.first.size());
buffer.putBytes(entry.first.c_str(), entry.first.size());
- buffer.putIntNetwork(entry.second.size());
+ buffer.putInt(entry.second.size());
buffer.putBytes(entry.second.c_str(), entry.second.size());
}
}
-void Parameters::onDeserialize(const document::DocumentTypeRepo &repo, document::ByteBuffer& buffer)
+void Parameters::deserialize(document::ByteBuffer& buffer)
{
- (void) repo;
_parameters.clear();
int32_t mysize;
buffer.getIntNetwork(mysize);
@@ -88,11 +89,6 @@ Parameters::operator==(const Parameters &other) const
return true;
}
-Parameters* Parameters::clone() const
-{
- return new Parameters(*this);
-}
-
vespalib::stringref Parameters::get(vespalib::stringref id, vespalib::stringref def) const
{
ParametersMap::const_iterator it = _parameters.find(id);
@@ -130,7 +126,7 @@ void Parameters::print(std::ostream& out, bool verbose, const std::string& inden
out << ")";
}
-std::string Parameters::toString() const
+vespalib::string Parameters::toString() const
{
vespalib::string ret;
for (const auto & entry : _parameters) {
diff --git a/vdslib/src/vespa/vdslib/container/parameters.h b/vdslib/src/vespa/vdslib/container/parameters.h
index f3ea0543546..61649b29bbe 100644
--- a/vdslib/src/vespa/vdslib/container/parameters.h
+++ b/vdslib/src/vespa/vdslib/container/parameters.h
@@ -14,18 +14,15 @@
#pragma once
-#include <vespa/document/util/serializable.h>
#include <vespa/document/util/xmlserializable.h>
#include <vespa/vespalib/stllike/hash_map.h>
-namespace vespalib {
- class asciistream;
-}
+namespace vespalib { class GrowableByteBuffer; }
+namespace document { class ByteBuffer; }
namespace vdslib {
-class Parameters : public document::Deserializable,
- public document::XmlSerializable {
+class Parameters : public document::XmlSerializable {
public:
typedef vespalib::stringref KeyT;
class Value : public vespalib::string
@@ -42,27 +39,25 @@ public:
private:
ParametersMap _parameters;
- void onSerialize(document::ByteBuffer& buffer) const override;
- void onDeserialize(const document::DocumentTypeRepo &repo, document::ByteBuffer& buffer) override;
void printXml(document::XmlOutputStream& xos) const override;
public:
Parameters();
- Parameters(const document::DocumentTypeRepo &repo, document::ByteBuffer& buffer);
- virtual ~Parameters();
+ Parameters(document::ByteBuffer& buffer);
+ ~Parameters();
bool operator==(const Parameters &other) const;
- Parameters* clone() const override;
+ size_t getSerializedSize() const;
- size_t getSerializedSize() const override;
-
- bool hasValue(KeyT id) const { return (_parameters.find(id) != _parameters.end()); }
- unsigned int size() const { return _parameters.size(); }
+ bool hasValue(KeyT id) const { return (_parameters.find(id) != _parameters.end()); }
+ unsigned int size() const { return _parameters.size(); }
bool lookup(KeyT id, ValueRef & v) const;
void set(KeyT id, const void * v, size_t sz) { _parameters[id] = Value(v, sz); }
void print(std::ostream& out, bool verbose, const std::string& indent) const;
+ void serialize(vespalib::GrowableByteBuffer& buffer) const;
+ void deserialize(document::ByteBuffer& buffer);
// Disallow
ParametersMap::const_iterator begin() const { return _parameters.begin(); }
@@ -92,7 +87,7 @@ public:
template<typename T>
T get(KeyT id, T def) const;
- std::string toString() const;
+ vespalib::string toString() const;
};
} // vdslib
diff --git a/vdslib/src/vespa/vdslib/container/searchresult.cpp b/vdslib/src/vespa/vdslib/container/searchresult.cpp
index 73b19a2f8a2..20cc53e2de9 100644
--- a/vdslib/src/vespa/vdslib/container/searchresult.cpp
+++ b/vdslib/src/vespa/vdslib/container/searchresult.cpp
@@ -1,6 +1,8 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "searchresult.h"
+#include <vespa/document/util/bytebuffer.h>
+#include <vespa/vespalib/util/growablebytebuffer.h>
#include <algorithm>
namespace vdslib {
@@ -25,21 +27,21 @@ void AggregatorList::deserialize(document::ByteBuffer & buf)
}
}
-void AggregatorList::serialize(document::ByteBuffer & buf) const
+void AggregatorList::serialize(vespalib::GrowableByteBuffer & buf) const
{
- buf.putIntNetwork(size());
- for (const_iterator it(begin()), mt(end()); it != mt; it++) {
- buf.putIntNetwork(it->first);
- buf.putIntNetwork(it->second.size());
- buf.putBytes(it->second, it->second.size());
+ buf.putInt(size());
+ for (const auto & entry : *this) {
+ buf.putInt(entry.first);
+ buf.putInt(entry.second.size());
+ buf.putBytes(entry.second, entry.second.size());
}
}
uint32_t AggregatorList::getSerializedSize() const
{
size_t sz(sizeof(uint32_t) * (1 + 2*size()));
- for (const_iterator it(begin()), mt(end()); it != mt; it++) {
- sz += it->second.size();
+ for (const auto & entry : *this) {
+ sz += entry.second.size();
}
return sz;
}
@@ -51,7 +53,7 @@ BlobContainer::BlobContainer(size_t reserve) :
_offsets.push_back(0);
}
-BlobContainer::~BlobContainer() {}
+BlobContainer::~BlobContainer() = default;
size_t BlobContainer::append(const void * v, size_t sz)
{
@@ -84,11 +86,11 @@ void BlobContainer::deserialize(document::ByteBuffer & buf)
buf.getBytes(_blob, getSize());
}
-void BlobContainer::serialize(document::ByteBuffer & buf) const
+void BlobContainer::serialize(vespalib::GrowableByteBuffer & buf) const
{
- buf.putIntNetwork(getCount());
+ buf.putInt(getCount());
for(size_t i(0), m(getCount()); i < m; i++) {
- buf.putIntNetwork(getSize(i));
+ buf.putInt(getSize(i));
}
buf.putBytes(_blob, getSize());
}
@@ -116,7 +118,7 @@ SearchResult::SearchResult(document::ByteBuffer & buf) :
deserialize(buf);
}
-SearchResult::~SearchResult() {}
+SearchResult::~SearchResult() = default;
void SearchResult::deserialize(document::ByteBuffer & buf)
{
@@ -143,26 +145,26 @@ void SearchResult::deserialize(document::ByteBuffer & buf)
_groupingList.deserialize(buf);
}
-void SearchResult::serialize(document::ByteBuffer & buf) const
+void SearchResult::serialize(vespalib::GrowableByteBuffer & buf) const
{
- buf.putIntNetwork(_totalHits);
+ buf.putInt(_totalHits);
uint32_t hitCount = std::min(_hits.size(), _wantedHits);
- buf.putIntNetwork(hitCount);
+ buf.putInt(hitCount);
if (hitCount > 0) {
uint32_t sz = getBufCount();
- buf.putIntNetwork(sz);
+ buf.putInt(sz);
for (size_t i(0), m(hitCount); i < m; i++) {
const char * s(_hits[i].getDocId(_docIdBuffer->c_str()));
buf.putBytes(s, strlen(s)+1);
}
for (size_t i(0), m(hitCount); i < m; i++) {
- buf.putDoubleNetwork(_hits[i].getRank());
+ buf.putDouble(_hits[i].getRank());
}
}
uint32_t sortCount = std::min(_sortBlob.getCount(), _wantedHits);
- buf.putIntNetwork(sortCount);
+ buf.putInt(sortCount);
for (size_t i(0); i < sortCount; i++) {
- buf.putIntNetwork(_sortBlob.getSize(_hits[i].getIndex()));
+ buf.putInt(_sortBlob.getSize(_hits[i].getIndex()));
}
for (size_t i(0); i < sortCount; i++) {
size_t sz;
diff --git a/vdslib/src/vespa/vdslib/container/searchresult.h b/vdslib/src/vespa/vdslib/container/searchresult.h
index 081873e2989..fc893f6b5be 100644
--- a/vdslib/src/vespa/vdslib/container/searchresult.h
+++ b/vdslib/src/vespa/vdslib/container/searchresult.h
@@ -2,10 +2,11 @@
#pragma once
#include <vespa/vespalib/util/memory.h>
-#include <vespa/document/util/bytebuffer.h>
#include <vector>
#include <map>
+namespace document { class ByteBuffer; }
+namespace vespalib { class GrowableByteBuffer; }
namespace vdslib {
typedef std::map<size_t, vespalib::MallocPtr> IntBlobMapT;
@@ -15,7 +16,7 @@ class AggregatorList : public IntBlobMapT
public:
void add(size_t id, const vespalib::MallocPtr & aggrBlob);
void deserialize(document::ByteBuffer & buf);
- void serialize(document::ByteBuffer & buf) const;
+ void serialize(vespalib::GrowableByteBuffer & buf) const;
uint32_t getSerializedSize() const;
};
@@ -31,7 +32,7 @@ public:
size_t getSize(size_t index) const { return _offsets[index+1] - _offsets[index]; }
const void * getBuf(size_t index) const { return _blob.c_str() + _offsets[index]; }
void deserialize(document::ByteBuffer & buf);
- void serialize(document::ByteBuffer & buf) const;
+ void serialize(vespalib::GrowableByteBuffer & buf) const;
uint32_t getSerializedSize() const { return (1 + getCount()) * sizeof(uint32_t) + getSize(); }
private:
typedef vespalib::MallocPtr Blob;
@@ -76,7 +77,7 @@ public:
void sort();
void deserialize(document::ByteBuffer & buf);
- void serialize(document::ByteBuffer & buf) const;
+ void serialize(vespalib::GrowableByteBuffer & buf) const;
uint32_t getSerializedSize() const;
private:
class Hit {