jubatus_core  0.1.2
Jubatus: Online machine learning framework for distributed environment
Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
jubatus::core::framework::mixable_versioned_table Class Reference

#include <mixable_versioned_table.hpp>

Inheritance diagram for jubatus::core::framework::mixable_versioned_table:
Inheritance graph
Collaboration diagram for jubatus::core::framework::mixable_versioned_table:
Collaboration graph

Public Types

typedef jubatus::util::lang::shared_ptr< storage::column_tablemodel_ptr
 

Public Member Functions

void clear ()
 
framework::diff_object convert_diff_object (const msgpack::object &) const
 
void get_argument (framework::packer &pk) const
 
void get_diff (framework::packer &) const
 
model_ptr get_model () const
 
storage::version get_version () const
 
void mix (const msgpack::object &obj, framework::diff_object) const
 
void pull (const msgpack::object &arg, framework::packer &pk) const
 
void push (const msgpack::object &diff)
 
bool put_diff (const framework::diff_object &obj)
 
void set_model (model_ptr m)
 
void set_unlearner (jubatus::util::lang::shared_ptr< unlearner::unlearner_base > unlearner)
 
- Public Member Functions inherited from jubatus::core::framework::push_mixable
 push_mixable ()
 
virtual ~push_mixable ()
 
- Public Member Functions inherited from jubatus::core::framework::mixable
 mixable ()
 
 mixable (const std::string &name)
 
virtual std::set< std::string > mixables () const
 
virtual ~mixable ()
 
- Public Member Functions inherited from jubatus::core::framework::linear_mixable
 linear_mixable ()
 
virtual ~linear_mixable ()
 

Private Member Functions

void pull_impl (const version_clock &vc, framework::packer &) const
 
void push_impl (const msgpack::object &)
 
void update_version (const storage::column_table::version_t &version)
 

Private Attributes

model_ptr model_
 
jubatus::util::lang::shared_ptr< unlearner::unlearner_baseunlearner_
 
version_clock vc_
 

Additional Inherited Members

- Protected Attributes inherited from jubatus::core::framework::mixable
std::set< std::string > mixables_
 

Detailed Description

Definition at line 35 of file mixable_versioned_table.hpp.

Member Typedef Documentation

Definition at line 38 of file mixable_versioned_table.hpp.

Member Function Documentation

void jubatus::core::framework::mixable_versioned_table::clear ( )
inline

Definition at line 68 of file mixable_versioned_table.hpp.

68 {}
framework::diff_object jubatus::core::framework::mixable_versioned_table::convert_diff_object ( const msgpack::object &  obj) const
virtual

Implements jubatus::core::framework::linear_mixable.

Definition at line 60 of file mixable_versioned_table.cpp.

References JUBATUS_EXCEPTION.

61  {
62  if (obj.type != msgpack::type::RAW) {
63  throw JUBATUS_EXCEPTION(
64  core::common::exception::runtime_error("bad diff_object"));
65  }
66  internal_diff* diff = new internal_diff;
67  diff_object diff_obj(diff);
68 
69  msgpack::unpacked msg;
70  msgpack::unpack(&msg, obj.via.raw.ptr, obj.via.raw.size);
71 
72  msg.get().convert(&diff->objs);
73  if (!diff->objs.empty()) {
74  shared_ptr<msgpack::zone> owner(msg.zone().release());
75  diff->zones.push_back(owner);
76  }
77  return diff_obj;
78 }
jubatus::util::lang::shared_ptr< diff_object_raw > diff_object
#define JUBATUS_EXCEPTION(e)
Definition: exception.hpp:79
void jubatus::core::framework::mixable_versioned_table::get_argument ( framework::packer pk) const
virtual

Implements jubatus::core::framework::push_mixable.

Definition at line 139 of file mixable_versioned_table.cpp.

References vc_.

139  {
140  pk.pack(vc_);
141 }
void jubatus::core::framework::mixable_versioned_table::get_diff ( framework::packer pk) const
virtual

Implements jubatus::core::framework::linear_mixable.

Definition at line 80 of file mixable_versioned_table.cpp.

References pull_impl(), and vc_.

80  {
81  msgpack::sbuffer data;
82  core::framework::stream_writer<msgpack::sbuffer> st(data);
83  core::framework::jubatus_packer jp(st);
85  pull_impl(vc_, p);
86 
87  // Wrap msgpack binary more for holding msgpack::zone in internal diff_object.
88  pk.pack_raw(data.size());
89  pk.pack_raw_body(data.data(), data.size());
90 }
void pull_impl(const version_clock &vc, framework::packer &) const
msgpack::packer< jubatus_packer > packer
Definition: bandit_base.hpp:31

Here is the call graph for this function:

model_ptr jubatus::core::framework::mixable_versioned_table::get_model ( ) const
inline

Definition at line 64 of file mixable_versioned_table.hpp.

References model_.

Referenced by pull_impl(), and push_impl().

Here is the caller graph for this function:

storage::version jubatus::core::framework::mixable_versioned_table::get_version ( ) const
inlinevirtual

Reimplemented from jubatus::core::framework::mixable.

Definition at line 56 of file mixable_versioned_table.hpp.

56  {
57  return storage::version();
58  }
void jubatus::core::framework::mixable_versioned_table::mix ( const msgpack::object &  obj,
framework::diff_object  ptr 
) const
virtual

Implements jubatus::core::framework::linear_mixable.

Definition at line 109 of file mixable_versioned_table.cpp.

References JUBATUS_EXCEPTION.

111  {
112  internal_diff* diff_obj = dynamic_cast<internal_diff*>(ptr.get());
113  if (!diff_obj) {
114  throw JUBATUS_EXCEPTION(
115  core::common::exception::runtime_error("bad diff_object"));
116  }
117 
118  if (obj.type != msgpack::type::RAW) {
119  throw JUBATUS_EXCEPTION(
120  core::common::exception::runtime_error("bad diff_object"));
121  }
122  msgpack::unpacked msg;
123  msgpack::unpack(&msg, obj.via.raw.ptr, obj.via.raw.size);
124  msgpack::object o = msg.get();
125  if (o.type != msgpack::type::ARRAY) {
126  throw JUBATUS_EXCEPTION(
127  core::common::exception::runtime_error("bad diff_object"));
128  }
129  for (size_t i = 0; i < o.via.array.size; i++) {
130  diff_obj->objs.push_back(o.via.array.ptr[i]);
131  }
132 
133  if (o.via.array.size > 0) {
134  shared_ptr<msgpack::zone> owner(msg.zone().release());
135  diff_obj->zones.push_back(owner);
136  }
137 }
#define JUBATUS_EXCEPTION(e)
Definition: exception.hpp:79
void jubatus::core::framework::mixable_versioned_table::pull ( const msgpack::object &  arg,
framework::packer pk 
) const
virtual

Implements jubatus::core::framework::push_mixable.

Definition at line 143 of file mixable_versioned_table.cpp.

References pull_impl().

145  {
146  version_clock vc;
147  arg.convert(&vc);
148  pull_impl(vc, pk);
149 }
void pull_impl(const version_clock &vc, framework::packer &) const
std::map< storage::owner, uint64_t > version_clock

Here is the call graph for this function:

void jubatus::core::framework::mixable_versioned_table::pull_impl ( const version_clock vc,
framework::packer pk 
) const
private

Definition at line 155 of file mixable_versioned_table.cpp.

References get_model().

Referenced by get_diff(), and pull().

156  {
157 
158  model_ptr table = get_model();
159  const uint64_t table_size = table->size();
160 
161  size_t pack_size = 0;
162  for (uint64_t i = 0; i < table_size; ++i) {
163  const version_t version = table->get_version(i);
164  version_clock::const_iterator it = vc.find(version.first);
165  if (it == vc.end() || it->second < version.second) {
166  pack_size++;
167  }
168  }
169  pk.pack_array(pack_size);
170 
171  for (uint64_t i = 0; i < table_size; ++i) {
172  const version_t version = table->get_version(i);
173  version_clock::const_iterator it = vc.find(version.first);
174  if (it == vc.end() || it->second < version.second) {
175  table->get_row(i, pk);
176  }
177  }
178 }
jubatus::core::storage::column_table::version_t version_t
jubatus::util::lang::shared_ptr< storage::column_table > model_ptr

Here is the call graph for this function:

Here is the caller graph for this function:

void jubatus::core::framework::mixable_versioned_table::push ( const msgpack::object &  diff)
virtual

Implements jubatus::core::framework::push_mixable.

Definition at line 151 of file mixable_versioned_table.cpp.

References push_impl().

151  {
152  push_impl(diff);
153 }

Here is the call graph for this function:

void jubatus::core::framework::mixable_versioned_table::push_impl ( const msgpack::object &  o)
private

Definition at line 180 of file mixable_versioned_table.cpp.

References get_model(), JUBATUS_EXCEPTION, and update_version().

Referenced by push(), and put_diff().

181  {
182  model_ptr table = get_model();
183  if (o.type != msgpack::type::ARRAY) {
184  throw JUBATUS_EXCEPTION(
185  core::common::exception::runtime_error("bad diff_object"));
186  }
187  for (uint64_t i = 0; i < o.via.array.size; ++i) {
188  const version_t version = table->set_row(o.via.array.ptr[i]);
189  update_version(version);
190  }
191 }
#define JUBATUS_EXCEPTION(e)
Definition: exception.hpp:79
void update_version(const storage::column_table::version_t &version)
jubatus::core::storage::column_table::version_t version_t
jubatus::util::lang::shared_ptr< storage::column_table > model_ptr

Here is the call graph for this function:

Here is the caller graph for this function:

bool jubatus::core::framework::mixable_versioned_table::put_diff ( const framework::diff_object obj)
virtual

Implements jubatus::core::framework::linear_mixable.

Definition at line 92 of file mixable_versioned_table.cpp.

References JUBATUS_EXCEPTION, and push_impl().

92  {
93  internal_diff* diff_obj = dynamic_cast<internal_diff*>(ptr.get());
94  if (!diff_obj) {
95  throw JUBATUS_EXCEPTION(
96  core::common::exception::runtime_error("bad diff_object"));
97  }
98 
99  msgpack::object obj;
100  obj.type = msgpack::type::ARRAY;
101  obj.via.array.ptr = &diff_obj->objs[0];
102  obj.via.array.size = diff_obj->objs.size();
103 
104  push_impl(obj);
105 
106  return true;
107 }
#define JUBATUS_EXCEPTION(e)
Definition: exception.hpp:79

Here is the call graph for this function:

void jubatus::core::framework::mixable_versioned_table::set_model ( model_ptr  m)
inline

Definition at line 60 of file mixable_versioned_table.hpp.

References model_.

void jubatus::core::framework::mixable_versioned_table::set_unlearner ( jubatus::util::lang::shared_ptr< unlearner::unlearner_base unlearner)
inline

Definition at line 40 of file mixable_versioned_table.hpp.

References unlearner, and unlearner_.

41  {
43  }
jubatus::util::data::optional< std::string > unlearner
jubatus::util::lang::shared_ptr< unlearner::unlearner_base > unlearner_
void jubatus::core::framework::mixable_versioned_table::update_version ( const storage::column_table::version_t version)
private

Definition at line 193 of file mixable_versioned_table.cpp.

References vc_.

Referenced by push_impl().

193  {
194  version_clock::iterator it = vc_.find(version.first);
195  if (it == vc_.end()) {
196  vc_.insert(version);
197  } else if (it->second < version.second) {
198  it->second = version.second;
199  }
200 }

Here is the caller graph for this function:

Member Data Documentation

model_ptr jubatus::core::framework::mixable_versioned_table::model_
private

Definition at line 76 of file mixable_versioned_table.hpp.

Referenced by get_model(), and set_model().

jubatus::util::lang::shared_ptr<unlearner::unlearner_base> jubatus::core::framework::mixable_versioned_table::unlearner_
private

Definition at line 77 of file mixable_versioned_table.hpp.

Referenced by set_unlearner().

version_clock jubatus::core::framework::mixable_versioned_table::vc_
private

Definition at line 78 of file mixable_versioned_table.hpp.

Referenced by get_argument(), get_diff(), and update_version().


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