diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2022-08-29 20:36:08 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2022-08-29 20:50:24 +0000 |
commit | 42e56483367aa74845d37ccf28dbb9fe77ce17d7 (patch) | |
tree | d8e8b895c3cd8b7535440a4815c455eb72543e2e /streamingvisitors | |
parent | e451e225b13d42bc56edbd72426ee76dada35ac5 (diff) |
Reduce usage of RawBuf.
Remove some unused code.
Diffstat (limited to 'streamingvisitors')
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(); } |