aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2022-08-29 20:36:08 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2022-08-29 20:50:24 +0000
commit42e56483367aa74845d37ccf28dbb9fe77ce17d7 (patch)
treed8e8b895c3cd8b7535440a4815c455eb72543e2e
parente451e225b13d42bc56edbd72426ee76dada35ac5 (diff)
Reduce usage of RawBuf.
Remove some unused code.
-rw-r--r--searchcore/src/tests/proton/summaryengine/summaryengine.cpp1
-rw-r--r--searchsummary/src/tests/docsummary/positionsdfw_test.cpp1
-rw-r--r--searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp24
-rw-r--r--searchsummary/src/tests/docsummary/summary_field_converter/summary_field_converter_test.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/summaryfieldconverter.cpp16
-rw-r--r--streamingvisitors/src/tests/docsum/docsum.cpp22
-rw-r--r--streamingvisitors/src/vespa/vsm/vsm/docsumfilter.cpp1
-rw-r--r--streamingvisitors/src/vespa/vsm/vsm/slimefieldwriter.cpp57
-rw-r--r--streamingvisitors/src/vespa/vsm/vsm/slimefieldwriter.h20
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/inserter.h2
10 files changed, 45 insertions, 101 deletions
diff --git a/searchcore/src/tests/proton/summaryengine/summaryengine.cpp b/searchcore/src/tests/proton/summaryengine/summaryengine.cpp
index 91827326074..f1183c2556a 100644
--- a/searchcore/src/tests/proton/summaryengine/summaryengine.cpp
+++ b/searchcore/src/tests/proton/summaryengine/summaryengine.cpp
@@ -3,7 +3,6 @@
#include <vespa/vespalib/data/slime/slime.h>
#include <vespa/searchcore/proton/summaryengine/summaryengine.h>
#include <vespa/searchlib/engine/searchreply.h>
-#include <vespa/searchlib/util/rawbuf.h>
#include <vespa/vespalib/data/databuffer.h>
#include <vespa/vespalib/data/simple_buffer.h>
#include <vespa/vespalib/util/compressor.h>
diff --git a/searchsummary/src/tests/docsummary/positionsdfw_test.cpp b/searchsummary/src/tests/docsummary/positionsdfw_test.cpp
index 09051e2e9c0..3531efe1798 100644
--- a/searchsummary/src/tests/docsummary/positionsdfw_test.cpp
+++ b/searchsummary/src/tests/docsummary/positionsdfw_test.cpp
@@ -9,7 +9,6 @@
#include <vespa/searchsummary/docsummary/idocsumenvironment.h>
#include <vespa/searchsummary/docsummary/docsumstate.h>
#include <vespa/searchsummary/test/slime_value.h>
-#include <vespa/searchlib/util/rawbuf.h>
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/data/slime/slime.h>
#include <vespa/juniper/rpinterface.h>
diff --git a/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp b/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp
index 5e4d375c49f..cab6090da43 100644
--- a/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp
+++ b/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp
@@ -17,7 +17,7 @@
#include <vespa/searchsummary/docsummary/keywordextractor.h>
#include <vespa/searchsummary/docsummary/docsum_store_document.h>
#include <vespa/vespalib/data/slime/slime.h>
-#include <vespa/searchlib/util/slime_output_raw_buf_adapter.h>
+#include <vespa/searchlib/util/rawbuf.h>
#include <vespa/vespalib/util/size_literals.h>
using namespace vespalib::slime::convenience;
@@ -41,29 +41,13 @@ using document::StructFieldValue;
namespace {
-struct FieldBlock {
- Slime slime;
- search::RawBuf binary;
-
- explicit FieldBlock(const vespalib::string &jsonInput)
- : slime(), binary(1024)
- {
- size_t used = vespalib::slime::JsonFormat::decode(jsonInput, slime);
- EXPECT_TRUE(used > 0);
- search::SlimeOutputRawBufAdapter adapter(binary);
- vespalib::slime::BinaryFormat::encode(slime, adapter);
- }
- const char *data() const { return binary.GetDrainPos(); }
- size_t dataLen() const { return binary.GetUsedLen(); }
-};
-
struct DocsumFixture : IDocsumStore, GetDocsumsStateCallback {
std::unique_ptr<DynamicDocsumWriter> writer;
StructDataType int_pair_type;
DocumentType doc_type;
GetDocsumsState state;
DocsumFixture();
- ~DocsumFixture();
+ ~DocsumFixture() override;
void getDocsum(Slime &slime) {
uint32_t classId;
search::RawBuf buf(4_Ki);
@@ -111,7 +95,7 @@ DocsumFixture::DocsumFixture()
{
auto config = std::make_unique<ResultConfig>();
ResultClass *cfg = config->AddResultClass("default", 0);
- EXPECT_TRUE(cfg != 0);
+ EXPECT_TRUE(cfg != nullptr);
EXPECT_TRUE(cfg->AddConfigEntry("int_field", RES_INT));
EXPECT_TRUE(cfg->AddConfigEntry("short_field", RES_SHORT));
EXPECT_TRUE(cfg->AddConfigEntry("byte_field", RES_BYTE));
@@ -140,7 +124,7 @@ DocsumFixture::DocsumFixture()
doc_type.addField(Field("longdata_field", *DataType::RAW));
doc_type.addField(Field("int_pair_field", int_pair_type));
}
-DocsumFixture::~DocsumFixture() {}
+DocsumFixture::~DocsumFixture() = default;
} // namespace <unnamed>
diff --git a/searchsummary/src/tests/docsummary/summary_field_converter/summary_field_converter_test.cpp b/searchsummary/src/tests/docsummary/summary_field_converter/summary_field_converter_test.cpp
index c6f310f2d53..1d7795d26dc 100644
--- a/searchsummary/src/tests/docsummary/summary_field_converter/summary_field_converter_test.cpp
+++ b/searchsummary/src/tests/docsummary/summary_field_converter/summary_field_converter_test.cpp
@@ -132,7 +132,7 @@ FieldBlock::FieldBlock(const vespalib::string &jsonInput)
vespalib::slime::BinaryFormat::encode(slime, adapter);
}
-FieldBlock::~FieldBlock() {}
+FieldBlock::~FieldBlock() = default;
class Test : public vespalib::TestApp {
std::unique_ptr<Schema> _schema;
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/summaryfieldconverter.cpp b/searchsummary/src/vespa/searchsummary/docsummary/summaryfieldconverter.cpp
index 218a9b82803..8bf78b90c77 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/summaryfieldconverter.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/summaryfieldconverter.cpp
@@ -35,8 +35,8 @@
#include <vespa/vespalib/util/size_literals.h>
#include <vespa/vespalib/util/stringfmt.h>
#include <vespa/vespalib/data/slime/slime.h>
+#include <vespa/vespalib/data/smart_buffer.h>
#include <vespa/vespalib/objects/nbostream.h>
-#include <vespa/searchlib/util/slime_output_raw_buf_adapter.h>
#include <vespa/vespalib/util/exceptions.h>
@@ -152,11 +152,11 @@ void handleIndexingTerms(Handler &handler, const StringFieldValue &value) {
}
}
sort(terms.begin(), terms.end());
- SpanTermVector::const_iterator it = terms.begin();
- SpanTermVector::const_iterator ite = terms.end();
+ auto it = terms.begin();
+ auto ite = terms.end();
int32_t endPos = 0;
for (; it != ite; ) {
- SpanTermVector::const_iterator it_begin = it;
+ auto it_begin = it;
if (it_begin->first.from() > endPos) {
Span tmpSpan(endPos, it_begin->first.from() - endPos);
handler.handleAnnotations(tmpSpan, it, it);
@@ -584,10 +584,10 @@ public:
SlimeInserter inserter(slime);
SlimeFiller visitor(inserter, _tokenize, _matching_elems);
input.accept(visitor);
- search::RawBuf rbuf(4_Ki);
- search::SlimeOutputRawBufAdapter adapter(rbuf);
- vespalib::slime::BinaryFormat::encode(slime, adapter);
- return std::make_unique<RawFieldValue>(rbuf.GetDrainPos(), rbuf.GetUsedLen());
+ vespalib::SmartBuffer buffer(4_Ki);
+ vespalib::slime::BinaryFormat::encode(slime, buffer);
+ vespalib::Memory mem = buffer.obtain();
+ return std::make_unique<RawFieldValue>(mem.data, mem.size);
}
};
diff --git a/streamingvisitors/src/tests/docsum/docsum.cpp b/streamingvisitors/src/tests/docsum/docsum.cpp
index 475489d2f5a..b7f45123c48 100644
--- a/streamingvisitors/src/tests/docsum/docsum.cpp
+++ b/streamingvisitors/src/tests/docsum/docsum.cpp
@@ -7,6 +7,8 @@
#include <vespa/vsm/common/docsum.h>
#include <vespa/vsm/vsm/flattendocsumwriter.h>
#include <vespa/vsm/vsm/slimefieldwriter.h>
+#include <vespa/vespalib/data/smart_buffer.h>
+#include <vespa/vespalib/data/slime/slime.h>
using namespace document;
@@ -30,18 +32,18 @@ private:
public:
TestDocument(const search::DocumentIdT & docId, size_t numFields) : vsm::Document(docId, numFields), _fields(numFields) {}
- virtual bool setField(FieldIdT fId, document::FieldValue::UP fv) override {
+ bool setField(FieldIdT fId, document::FieldValue::UP fv) override {
if (fId < _fields.size()) {
_fields[fId].reset(fv.release());
return true;
}
return false;
}
- virtual const document::FieldValue * getField(FieldIdT fId) const override {
+ const document::FieldValue * getField(FieldIdT fId) const override {
if (fId < _fields.size()) {
return _fields[fId].get();
}
- return NULL;
+ return nullptr;
}
};
@@ -105,12 +107,22 @@ DocsumTest::assertFlattenDocsumWriter(FlattenDocsumWriter & fdw, const FieldValu
}
void
+convert(SlimeFieldWriter & sfw, const document::FieldValue & fv, vespalib::Output & output)
+{
+ vespalib::Slime slime;
+ vespalib::slime::SlimeInserter inserter(slime);
+ sfw.insert(fv, inserter);
+ vespalib::slime::BinaryFormat::encode(slime, output);
+}
+
+void
DocsumTest::assertSlimeFieldWriter(SlimeFieldWriter & sfw, const FieldValue & fv, const std::string & exp)
{
- sfw.convert(fv);
+ vespalib::SmartBuffer buffer(1024);
+ convert(sfw, fv, buffer);
vespalib::Slime gotSlime;
- vespalib::Memory serialized(sfw.out());
+ vespalib::Memory serialized(buffer.obtain());
size_t decodeRes = vespalib::slime::BinaryFormat::decode(serialized, gotSlime);
ASSERT_EQUAL(decodeRes, serialized.size);
diff --git a/streamingvisitors/src/vespa/vsm/vsm/docsumfilter.cpp b/streamingvisitors/src/vespa/vsm/vsm/docsumfilter.cpp
index 8bd416ca716..a49eec1a869 100644
--- a/streamingvisitors/src/vespa/vsm/vsm/docsumfilter.cpp
+++ b/streamingvisitors/src/vespa/vsm/vsm/docsumfilter.cpp
@@ -7,6 +7,7 @@
#include <vespa/searchsummary/docsummary/summaryfieldconverter.h>
#include <vespa/document/base/exceptions.h>
#include <vespa/document/fieldvalue/iteratorhandler.h>
+#include <vespa/vespalib/data/slime/inserter.h>
#include <vespa/log/log.h>
LOG_SETUP(".vsm.docsumfilter");
diff --git a/streamingvisitors/src/vespa/vsm/vsm/slimefieldwriter.cpp b/streamingvisitors/src/vespa/vsm/vsm/slimefieldwriter.cpp
index 5f0ec60656e..f0278bb3470 100644
--- a/streamingvisitors/src/vespa/vsm/vsm/slimefieldwriter.cpp
+++ b/streamingvisitors/src/vespa/vsm/vsm/slimefieldwriter.cpp
@@ -1,11 +1,11 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "slimefieldwriter.h"
-#include <vespa/searchlib/util/slime_output_raw_buf_adapter.h>
#include <vespa/vespalib/stllike/asciistream.h>
#include <vespa/vespalib/util/size_literals.h>
#include <vespa/searchsummary/docsummary/resultconfig.h>
#include <vespa/document/datatype/positiondatatype.h>
+#include <vespa/vespalib/data/slime/slime.h>
#include <vespa/log/log.h>
LOG_SETUP(".vsm.slimefieldwriter");
@@ -13,19 +13,6 @@ LOG_SETUP(".vsm.slimefieldwriter");
namespace {
vespalib::string
-toString(const vsm::FieldPath & fieldPath)
-{
- vespalib::asciistream oss;
- for (size_t i = 0; i < fieldPath.size(); ++i) {
- if (i > 0) {
- oss << ".";
- }
- oss << fieldPath[i].getName();
- }
- return oss.str();
-}
-
-vespalib::string
toString(const std::vector<vespalib::string> & fieldPath)
{
vespalib::asciistream oss;
@@ -42,7 +29,6 @@ toString(const std::vector<vespalib::string> & fieldPath)
using namespace vespalib::slime::convenience;
-
namespace vsm {
void
@@ -52,18 +38,17 @@ SlimeFieldWriter::traverseRecursive(const document::FieldValue & fv, Inserter &i
fv.className(), fv.toString().c_str(), toString(_currPath).c_str());
if (fv.isCollection()) {
- const document::CollectionFieldValue & cfv = static_cast<const document::CollectionFieldValue &>(fv);
+ const auto & cfv = static_cast<const document::CollectionFieldValue &>(fv);
if (cfv.isA(document::FieldValue::Type::ARRAY)) {
- const document::ArrayFieldValue & afv = static_cast<const document::ArrayFieldValue &>(cfv);
+ const auto & afv = static_cast<const document::ArrayFieldValue &>(cfv);
Cursor &a = inserter.insertArray();
- for (size_t i = 0; i < afv.size(); ++i) {
- const document::FieldValue & nfv = afv[i];
+ for (const auto & nfv : afv) {
ArrayInserter ai(a);
traverseRecursive(nfv, ai);
}
} else {
assert(cfv.isA(document::FieldValue::Type::WSET));
- const document::WeightedSetFieldValue & wsfv = static_cast<const document::WeightedSetFieldValue &>(cfv);
+ const auto & wsfv = static_cast<const document::WeightedSetFieldValue &>(cfv);
Cursor &a = inserter.insertArray();
Symbol isym = a.resolve("item");
Symbol wsym = a.resolve("weight");
@@ -77,7 +62,7 @@ SlimeFieldWriter::traverseRecursive(const document::FieldValue & fv, Inserter &i
}
}
} else if (fv.isA(document::FieldValue::Type::MAP)) {
- const document::MapFieldValue & mfv = static_cast<const document::MapFieldValue &>(fv);
+ const auto & mfv = static_cast<const document::MapFieldValue &>(fv);
Cursor &a = inserter.insertArray();
Symbol keysym = a.resolve("key");
Symbol valsym = a.resolve("value");
@@ -85,13 +70,13 @@ SlimeFieldWriter::traverseRecursive(const document::FieldValue & fv, Inserter &i
Cursor &o = a.addObject();
ObjectSymbolInserter ki(o, keysym);
traverseRecursive(*entry.first, ki);
- _currPath.push_back("value");
+ _currPath.emplace_back("value");
ObjectSymbolInserter vi(o, valsym);
traverseRecursive(*entry.second, vi);
_currPath.pop_back();
}
} else if (fv.isStructured()) {
- const document::StructuredFieldValue & sfv = static_cast<const document::StructuredFieldValue &>(fv);
+ const auto & sfv = static_cast<const document::StructuredFieldValue &>(fv);
Cursor &o = inserter.insertObject();
if (sfv.getDataType() == &document::PositionDataType::getInstance()
&& search::docsummary::ResultConfig::wantedV8geoPositions())
@@ -134,7 +119,7 @@ SlimeFieldWriter::traverseRecursive(const document::FieldValue & fv, Inserter &i
}
} else {
if (fv.isLiteral()) {
- const document::LiteralFieldValueB & lfv = static_cast<const document::LiteralFieldValueB &>(fv);
+ const auto & lfv = static_cast<const document::LiteralFieldValueB &>(fv);
inserter.insertString(lfv.getValueRef());
} else if (fv.isNumeric()) {
switch (fv.getDataType()->getId()) {
@@ -169,8 +154,8 @@ SlimeFieldWriter::explorePath(vespalib::stringref candidate)
return true;
}
// find out if we should explore the current path
- for (size_t i = 0; i < _inputFields->size(); ++i) {
- const FieldPath & fp = (*_inputFields)[i].getPath();
+ for (const auto & field : *_inputFields) {
+ const FieldPath & fp = field.getPath();
if (_currPath.size() <= fp.size()) {
bool equal = true;
for (size_t j = 0; j < _currPath.size() && equal; ++j) {
@@ -190,8 +175,6 @@ SlimeFieldWriter::explorePath(vespalib::stringref candidate)
}
SlimeFieldWriter::SlimeFieldWriter() :
- _rbuf(4_Ki),
- _slime(),
_inputFields(nullptr),
_currPath()
{
@@ -205,22 +188,4 @@ SlimeFieldWriter::insert(const document::FieldValue & fv, vespalib::slime::Inser
traverseRecursive(fv, inserter);
}
-void
-SlimeFieldWriter::convert(const document::FieldValue & fv)
-{
- if (LOG_WOULD_LOG(debug)) {
- if (_inputFields != nullptr) {
- for (size_t i = 0; i < _inputFields->size(); ++i) {
- LOG(debug, "write: input field path [%zd] '%s'", i, toString((*_inputFields)[i].getPath()).c_str());
- }
- } else {
- LOG(debug, "write: no input fields");
- }
- }
- SlimeInserter inserter(_slime);
- traverseRecursive(fv, inserter);
- search::SlimeOutputRawBufAdapter adapter(_rbuf);
- vespalib::slime::BinaryFormat::encode(_slime, adapter);
-}
-
}
diff --git a/streamingvisitors/src/vespa/vsm/vsm/slimefieldwriter.h b/streamingvisitors/src/vespa/vsm/vsm/slimefieldwriter.h
index 3d7ece93694..0907783feaf 100644
--- a/streamingvisitors/src/vespa/vsm/vsm/slimefieldwriter.h
+++ b/streamingvisitors/src/vespa/vsm/vsm/slimefieldwriter.h
@@ -4,8 +4,8 @@
#include "docsumfieldspec.h"
#include <vespa/vsm/common/storagedocument.h>
#include <vespa/document/fieldvalue/fieldvalues.h>
-#include <vespa/vespalib/data/slime/slime.h>
-#include <vespa/searchlib/util/rawbuf.h>
+
+namespace vespalib::slime { class Inserter; }
namespace vsm {
@@ -17,8 +17,6 @@ namespace vsm {
class SlimeFieldWriter
{
private:
- search::RawBuf _rbuf;
- vespalib::Slime _slime;
const DocsumFieldSpec::FieldIdentifierVector * _inputFields;
std::vector<vespalib::string> _currPath;
@@ -29,7 +27,6 @@ public:
SlimeFieldWriter();
~SlimeFieldWriter();
-
/**
* Specifies the subset of the field value that should be written.
**/
@@ -40,20 +37,7 @@ public:
**/
void insert(const document::FieldValue & fv, vespalib::slime::Inserter& inserter);
- /**
- * Convert the given field value
- **/
- void convert(const document::FieldValue & fv);
-
- /**
- * Return a reference to the output binary data
- **/
- vespalib::stringref out() const {
- return vespalib::stringref(_rbuf.GetDrainPos(), _rbuf.GetUsedLen());
- }
-
void clear() {
- _rbuf.Reuse();
_inputFields = nullptr;
_currPath.clear();
}
diff --git a/vespalib/src/vespa/vespalib/data/slime/inserter.h b/vespalib/src/vespa/vespalib/data/slime/inserter.h
index 2334f5d64b5..db6baf2ef4a 100644
--- a/vespalib/src/vespa/vespalib/data/slime/inserter.h
+++ b/vespalib/src/vespa/vespalib/data/slime/inserter.h
@@ -3,9 +3,9 @@
#pragma once
#include "type.h"
-#include <vespa/vespalib/data/memory.h>
#include "symbol.h"
#include "external_memory.h"
+#include <vespa/vespalib/data/memory.h>
namespace vespalib { class Slime; }