jubatus_core  0.1.2
Jubatus: Online machine learning framework for distributed environment
Public Member Functions | Private Types | Private Attributes | List of all members
jubatus::core::burst::result_storage::impl_ Class Reference
Collaboration diagram for jubatus::core::burst::result_storage::impl_:
Collaboration graph

Public Member Functions

diff_t get_diff () const
 
result_t get_latest_result () const
 
result_t get_result_at (double pos) const
 
 impl_ (int stored_results_max)
 
 MSGPACK_DEFINE (results_, results_max_, oldest_start_pos_not_mixed_)
 
void put_diff (const diff_t &diff)
 
void store (const result_t &result, bool merge=false)
 

Private Types

typedef std::deque< result_tresults_t
 

Private Attributes

double oldest_start_pos_not_mixed_
 
results_t results_
 
size_t results_max_
 

Detailed Description

Definition at line 29 of file result_storage.cpp.

Member Typedef Documentation

Definition at line 30 of file result_storage.cpp.

Constructor & Destructor Documentation

jubatus::core::burst::result_storage::impl_::impl_ ( int  stored_results_max)
inlineexplicit

Definition at line 36 of file result_storage.cpp.

Member Function Documentation

diff_t jubatus::core::burst::result_storage::impl_::get_diff ( ) const
inline

Definition at line 93 of file result_storage.cpp.

93  {
94  diff_t diff;
95 
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_)) {
100  break;
101  }
102  diff.push_back(*iter);
103  }
104 
105  return diff;
106  }
result_t jubatus::core::burst::result_storage::impl_::get_latest_result ( ) const
inline

Definition at line 76 of file result_storage.cpp.

76  {
77  if (results_.empty()) {
78  return result_t();
79  }
80  return results_.front();
81  }
result_t jubatus::core::burst::result_storage::impl_::get_result_at ( double  pos) const
inline

Definition at line 82 of file result_storage.cpp.

82  {
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)) {
87  return *iter;
88  }
89  }
90  return result_t();
91  }
jubatus::core::burst::result_storage::impl_::MSGPACK_DEFINE ( results_  ,
results_max_  ,
oldest_start_pos_not_mixed_   
)
void jubatus::core::burst::result_storage::impl_::put_diff ( const diff_t diff)
inline

Definition at line 108 of file result_storage.cpp.

References store().

108  {
109  // merge diff
110  for (diff_t::const_iterator iter = diff.begin();
111  iter != diff.end(); ++iter) {
112  store(*iter, true);
113  }
114 
115  // clear diff
116  oldest_start_pos_not_mixed_ = DBL_MAX;
117  }
void store(const result_t &result, bool merge=false)

Here is the call graph for this function:

void jubatus::core::burst::result_storage::impl_::store ( const result_t result,
bool  merge = false 
)
inline

Definition at line 40 of file result_storage.cpp.

References jubatus::core::burst::burst_result::get_batch_size(), jubatus::core::burst::burst_result::get_start_pos(), JUBATUS_ASSERT, JUBATUS_ASSERT_EQ, and results_max_.

Referenced by put_diff().

40  {
41  double result_start_pos = result.get_start_pos();
42 
43  if (results_.empty()) {
44  results_.push_front(result);
45  } else {
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);
51  break;
52  } else if (iter->has_same_start_pos_to(result_start_pos)) {
54  iter->get_batch_size(), result.get_batch_size(), "");
55  JUBATUS_ASSERT(iter->has_same_batch_interval(result));
56  if (merge) {
57  bool mixed = iter->mix(result);
58  JUBATUS_ASSERT(mixed);
59  } else {
60  *iter = result; // update with new result
61  }
62  break;
63  }
64  }
65  }
66 
67  if (result_start_pos < oldest_start_pos_not_mixed_) {
68  oldest_start_pos_not_mixed_ = result_start_pos;
69  }
70 
71  while (results_.size() > results_max_) {
72  results_.pop_back();
73  }
74  }
#define JUBATUS_ASSERT_EQ(a, b, messages)
Definition: assert.hpp:63
#define JUBATUS_ASSERT(expr)
Definition: assert.hpp:55

Here is the call graph for this function:

Here is the caller graph for this function:

Member Data Documentation

double jubatus::core::burst::result_storage::impl_::oldest_start_pos_not_mixed_
private

Definition at line 33 of file result_storage.cpp.

results_t jubatus::core::burst::result_storage::impl_::results_
private

Definition at line 31 of file result_storage.cpp.

size_t jubatus::core::burst::result_storage::impl_::results_max_
private

Definition at line 32 of file result_storage.cpp.

Referenced by store().


The documentation for this class was generated from the following file: