summaryrefslogtreecommitdiffstats
path: root/streamingvisitors
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 /streamingvisitors
parente451e225b13d42bc56edbd72426ee76dada35ac5 (diff)
Reduce usage of RawBuf.
Remove some unused code.
Diffstat (limited to 'streamingvisitors')
-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
4 files changed, 31 insertions, 69 deletions
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();
}