23 #include "../common/assert.hpp"
36 explicit impl_(
int stored_results_max)
37 : results_max_(stored_results_max), oldest_start_pos_not_mixed_(DBL_MAX) {
43 if (results_.empty()) {
44 results_.push_front(result);
46 typedef results_t::iterator iterator_t;
47 for (iterator_t iter = results_.begin(), end = results_.end();
48 iter != end; ++iter) {
49 if (iter->has_start_pos_older_than(result_start_pos)) {
50 results_.insert(iter, result);
52 }
else if (iter->has_same_start_pos_to(result_start_pos)) {
57 bool mixed = iter->mix(result);
67 if (result_start_pos < oldest_start_pos_not_mixed_) {
68 oldest_start_pos_not_mixed_ = result_start_pos;
77 if (results_.empty()) {
80 return results_.front();
83 typedef results_t::const_iterator iterator_t;
84 for (iterator_t iter = results_.begin(), end = results_.end();
85 iter != end; ++iter) {
86 if (iter->contains(pos)) {
96 typedef results_t::const_iterator iterator_t;
97 for (iterator_t iter = results_.begin(), end = results_.end();
98 iter != end; ++iter) {
99 if (iter->has_start_pos_older_than(oldest_start_pos_not_mixed_)) {
102 diff.push_back(*iter);
110 for (diff_t::const_iterator iter = diff.begin();
111 iter != diff.end(); ++iter) {
116 oldest_start_pos_not_mixed_ = DBL_MAX;
119 MSGPACK_DEFINE(results_, results_max_, oldest_start_pos_not_mixed_);
123 : p_(new
impl_(stored_results_max)) {
136 return p_->get_latest_result();
141 return p_->get_result_at(pos);
146 return p_->get_diff();
result_t get_result_at(double pos) const
void put_diff(const diff_t &diff)
#define JUBATUS_ASSERT_EQ(a, b, messages)
void store(const result_t &result, bool merge=false)
int get_batch_size() const
MSGPACK_DEFINE(results_, results_max_, oldest_start_pos_not_mixed_)
std::deque< result_t > results_t
result_t get_latest_result() const
result_t get_latest_result() const
void unpack(msgpack::object o)
jubatus::util::lang::scoped_ptr< impl_ > p_
#define JUBATUS_ASSERT(expr)
std::vector< result_t > diff_t
void store(const result_t &result)
result_storage(int stored_results_max)
result_t get_result_at(double pos) const
msgpack::packer< jubatus_packer > packer
double oldest_start_pos_not_mixed_
void put_diff(const diff_t &diff)
impl_(int stored_results_max)
void pack(framework::packer &packer) const
double get_start_pos() const