66class HAZELCAST_API ringbuffer :
public proxy::RingbufferImpl
68 friend class spi::ProxyManager;
94 boost::future<int64_t>
add(
const E& item)
96 return add_data(to_data(item));
138 boost::future<boost::optional<E>>
read_one(int64_t sequence)
140 return to_object<E>(read_one_data(sequence));
174 boost::future<int64_t>
add(
const E& item,
175 rb::overflow_policy overflow_policy)
177 return addData(to_data(item), overflow_policy);
199 boost::future<int64_t>
add_all(
const std::vector<E>& items,
200 rb::overflow_policy overflow_policy)
202 return add_all_data(to_data_collection(items), overflow_policy);
244 template<
typename IFUNCTION>
246 int64_t start_sequence,
249 const IFUNCTION* filter =
nullptr)
251 auto filter_data = to_data<IFUNCTION>(filter);
252 return read_many_data(
253 start_sequence, min_count, max_count, &filter_data)
254 .then(boost::launch::sync,
255 [=](boost::future<protocol::ClientMessage> f) {
256 return get_result_set(std::move(f));
263 auto* initial_frame =
264 reinterpret_cast<protocol::ClientMessage::frame_header_type*
>(
265 msg.rd_ptr(protocol::ClientMessage::RESPONSE_HEADER_LEN));
266 auto read_count = msg.get<int32_t>();
267 auto next_seq = msg.get<int64_t>();
268 msg.rd_ptr(
static_cast<int32_t
>(initial_frame->frame_len) -
269 protocol::ClientMessage::RESPONSE_HEADER_LEN -
270 protocol::ClientMessage::INT32_SIZE -
271 protocol::ClientMessage::INT64_SIZE);
273 auto datas = msg.get<std::vector<serialization::pimpl::data>>();
274 auto item_seqs = msg.get_nullable<std::vector<int64_t>>();
277 get_serialization_service(),
282 boost::future<rb::read_result_set> read_many(int64_t start_sequence,
286 return read_many_data(start_sequence, min_count, max_count,
nullptr)
287 .then(boost::launch::sync,
288 [=](boost::future<protocol::ClientMessage> f) {
289 return get_result_set(std::move(f));
294 ringbuffer(
const std::string& object_name, spi::ClientContext* context)
295 : RingbufferImpl(object_name, context)
boost::future< rb::read_result_set > read_many(int64_t start_sequence, int32_t min_count, int32_t max_count, const IFUNCTION *filter=nullptr)
Reads a batch of items from the Ringbuffer.