Pass serialization_header to data_consume_rows_context*

This header is needed to parse data for SSTable 3.0 format

Signed-off-by: Piotr Jastrzebski <piotr@scylladb.com>
This commit is contained in:
Piotr Jastrzebski
2018-05-10 10:35:22 +02:00
parent b849eefc8c
commit 54ef775501
3 changed files with 17 additions and 8 deletions

View File

@@ -77,10 +77,10 @@ class data_consume_context {
shared_sstable _sst;
std::unique_ptr<DataConsumeRowsContext> _ctx;
// This object can only be constructed by sstable::data_consume_rows()
template <typename Consumer>
data_consume_context(shared_sstable sst, Consumer &consumer, input_stream<char> &&input, uint64_t start, uint64_t maxlen)
: _sst(std::move(sst)), _ctx(new DataConsumeRowsContext(consumer, std::move(input), start, maxlen))
: _sst(std::move(sst))
, _ctx(new DataConsumeRowsContext(_sst, consumer, std::move(input), start, maxlen))
{ }
friend class sstable;

View File

@@ -27,9 +27,10 @@ namespace sstables {
future<> sstable::data_consume_rows_at_once(row_consumer& consumer,
uint64_t start, uint64_t end) {
return data_read(start, end - start, consumer.io_priority()).then([&consumer]
return data_read(start, end - start, consumer.io_priority()).then([this, &consumer]
(temporary_buffer<char> buf) {
data_consume_rows_context ctx(consumer, input_stream<char>(), 0, -1);
shared_sstable sst = shared_from_this();
data_consume_rows_context ctx(sst, consumer, input_stream<char>(), 0, -1);
ctx.process(buf);
ctx.verify_end_state();
});

View File

@@ -453,8 +453,9 @@ public:
return row_consumer::proceed::yes;
}
data_consume_rows_context(row_consumer& consumer,
input_stream<char> && input, uint64_t start, uint64_t maxlen)
data_consume_rows_context(const shared_sstable&,
row_consumer& consumer,
input_stream<char>&& input, uint64_t start, uint64_t maxlen)
: continuous_data_consumer(std::move(input), start, maxlen)
, _consumer(consumer) {
}
@@ -514,6 +515,7 @@ private:
} _state = state::PARTITION_START;
consumer_m& _consumer;
const serialization_header& _header;
temporary_buffer<char> _pk;
@@ -676,8 +678,14 @@ public:
return row_consumer::proceed::yes;
}
data_consume_rows_context_m(consumer_m& consumer, input_stream<char> && input, uint64_t start, uint64_t maxlen)
: continuous_data_consumer(std::move(input), start, maxlen), _consumer(consumer)
data_consume_rows_context_m(const shared_sstable& sst,
consumer_m& consumer,
input_stream<char> && input,
uint64_t start,
uint64_t maxlen)
: continuous_data_consumer(std::move(input), start, maxlen)
, _consumer(consumer)
, _header(sst->get_serialization_header())
{ }
void verify_end_state() {