116class paging_predicate
121 friend protocol::codec::holder::paging_predicate_holder;
125 ~paging_predicate() =
default;
132 iteration_type_ = iteration_type::VALUE;
133 anchor_data_list_.page_list.clear();
134 anchor_data_list_.data_list.clear();
153 iteration_type get_iteration_type()
const {
return iteration_type_; }
155 void set_iteration_type(iteration_type type) { iteration_type_ = type; }
157 size_t get_page()
const {
return page_; }
159 void set_page(
size_t page_number) { page_ = page_number; }
161 size_t get_page_size()
const {
return page_size_; }
163 const query::entry_comparator<K, V>* get_comparator()
const
165 return comparator_.get();
168 void set_anchor_data_list(anchor_data_list anchor_data_list)
170 anchor_data_list_ = std::move(anchor_data_list);
174 anchor_data_list anchor_data_list_;
175 std::shared_ptr<query::entry_comparator<K, V>> comparator_;
176 serialization::object_data_output out_stream_;
179 iteration_type iteration_type_;
180 boost::optional<serialization::pimpl::data> comparator_data_;
181 boost::optional<serialization::pimpl::data> predicate_data_;
193 serialization::pimpl::SerializationService& serialization_service,
194 size_t predicate_page_size)
195 : out_stream_(serialization_service.new_output_stream())
196 , page_size_(predicate_page_size)
198 , iteration_type_(iteration_type::VALUE)
200 out_stream_.write_object<
bool>(
nullptr);
201 out_stream_.write_object<
bool>(
nullptr);
216 template<
typename INNER_PREDICATE>
218 serialization::pimpl::SerializationService& serialization_service,
219 size_t predicate_page_size,
220 const INNER_PREDICATE& predicate)
221 : out_stream_(serialization_service.new_output_stream())
222 , page_size_(predicate_page_size)
224 , iteration_type_(iteration_type::VALUE)
226 out_stream_.write_object(predicate);
227 out_stream_.write_object<
bool>(
nullptr);
229 serialization_service.to_data<INNER_PREDICATE>(predicate);
242 template<
typename COMPARATOR>
244 serialization::pimpl::SerializationService& serialization_service,
246 size_t predicate_page_size)
247 : out_stream_(serialization_service.new_output_stream())
248 , page_size_(predicate_page_size)
250 , iteration_type_(iteration_type::VALUE)
252 out_stream_.write_object<
bool>(
nullptr);
253 out_stream_.write_object(comp);
254 comparator_data_ = serialization_service.to_data<COMPARATOR>(comp);
256 std::make_shared<COMPARATOR>(std::forward<COMPARATOR>(comp));
272 template<
typename INNER_PREDICATE,
typename COMPARATOR>
274 serialization::pimpl::SerializationService& serialization_service,
275 const INNER_PREDICATE& predicate,
277 size_t predicate_page_size)
278 : out_stream_(serialization_service.new_output_stream())
279 , page_size_(predicate_page_size)
281 , iteration_type_(iteration_type::VALUE)
283 out_stream_.write_object(predicate);
284 out_stream_.write_object(comp);
286 serialization_service.to_data<INNER_PREDICATE>(predicate);
287 comparator_data_ = serialization_service.to_data<COMPARATOR>(comp);
289 std::make_shared<COMPARATOR>(std::forward<COMPARATOR>(comp));