From a172dfec4e58b9fbe4d54ed19781ca22a8a761aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Botond=20D=C3=A9nes?= Date: Thu, 31 May 2018 06:56:45 +0300 Subject: [PATCH] querier: move clustering_position_tracker outside of querier In preparation for having multiple querier types that can share code without inheritance. --- querier.hh | 72 +++++++++++++++++++++++++++--------------------------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/querier.hh b/querier.hh index 01ab85585c..622373a0e3 100644 --- a/querier.hh +++ b/querier.hh @@ -30,6 +30,42 @@ namespace query { +template +class clustering_position_tracker { + std::unique_ptr _consumer; + lw_shared_ptr> _last_ckey; + +public: + clustering_position_tracker(std::unique_ptr&& consumer, lw_shared_ptr> last_ckey) + : _consumer(std::move(consumer)) + , _last_ckey(std::move(last_ckey)) { + } + + void consume_new_partition(const dht::decorated_key& dk) { + _last_ckey->reset(); + _consumer->consume_new_partition(dk); + } + void consume(tombstone t) { + _consumer->consume(t); + } + stop_iteration consume(static_row&& sr, tombstone t, bool is_live) { + return _consumer->consume(std::move(sr), std::move(t), is_live); + } + stop_iteration consume(clustering_row&& cr, row_tombstone t, bool is_live) { + *_last_ckey = cr.key(); + return _consumer->consume(std::move(cr), std::move(t), is_live); + } + stop_iteration consume(range_tombstone&& rt) { + return _consumer->consume(std::move(rt)); + } + stop_iteration consume_end_of_partition() { + return _consumer->consume_end_of_partition(); + } + auto consume_end_of_stream() { + return _consumer->consume_end_of_stream(); + } +}; + /// One-stop object for serving queries. /// /// Encapsulates all state and logic for serving all pages for a given range @@ -61,42 +97,6 @@ public: no_clustering_pos_mismatch }; private: - template - class clustering_position_tracker { - std::unique_ptr _consumer; - lw_shared_ptr> _last_ckey; - - public: - clustering_position_tracker(std::unique_ptr&& consumer, lw_shared_ptr> last_ckey) - : _consumer(std::move(consumer)) - , _last_ckey(std::move(last_ckey)) { - } - - void consume_new_partition(const dht::decorated_key& dk) { - _last_ckey->reset(); - _consumer->consume_new_partition(dk); - } - void consume(tombstone t) { - _consumer->consume(t); - } - stop_iteration consume(static_row&& sr, tombstone t, bool is_live) { - return _consumer->consume(std::move(sr), std::move(t), is_live); - } - stop_iteration consume(clustering_row&& cr, row_tombstone t, bool is_live) { - *_last_ckey = cr.key(); - return _consumer->consume(std::move(cr), std::move(t), is_live); - } - stop_iteration consume(range_tombstone&& rt) { - return _consumer->consume(std::move(rt)); - } - stop_iteration consume_end_of_partition() { - return _consumer->consume_end_of_partition(); - } - auto consume_end_of_stream() { - return _consumer->consume_end_of_stream(); - } - }; - struct position { const dht::decorated_key* partition_key; const clustering_key_prefix* clustering_key;