9 #include "ps_parambase.h"
11 #include <initializer_list>
16 namespace parameter_server {
24 inline bool isFound()
const {
return param_ !=
nullptr; }
26 inline const char* getPath()
const {
return param_->getInfo().getPath(); }
31 param_->getInfo().getInfo(&info);
55 void setUserGroup(UserGroup user_group);
63 void updateOutput(
bool newval);
65 void updateOutputOnce();
67 void updateOutputOnce(
size_t length);
69 void updateOutputOnInput(
bool newval);
72 void write(
const T& in_data) {
73 *(T*)origin_ptr_ = in_data;
78 void write(
const T in_data,
int length) {
79 for (
int i = 0; i < length; i++) {
80 ((T)origin_ptr_)[i] = in_data[i];
86 uint32_t update_counter_{};
104 void setUserGroup(UserGroup user_group);
110 void updateOutput(
bool newval);
112 void updateOutputOnce();
114 void updateOutputOnInput(
bool newval);
116 template <
typename T>
117 void write(
const std::string& name,
const T& in_data) {
118 params_handle_[name].write(in_data);
121 template <
typename T>
122 void write(
const std::string& name,
const T in_data,
int length) {
123 params_handle_[name].write(in_data, length);
127 std::map<std::string, ParamHandle> params_handle_;
146 template <
typename T>
147 bool read(T* out_data,
int number_of_param);
149 template <
typename T>
150 bool read(T& out_data);
152 const struct timespec& getTime()
const;
155 long update_counter_{};
156 struct timespec update_time_ {};
159 template <
typename T>
160 bool ReqHandle::read(T* out_data,
int number_of_param) {
162 if (update_counter_ >= 0 && update_counter_ != param_->getReplyId()) {
163 param_->read(out_data,
sizeof(T) * number_of_param, &update_time_);
164 update_counter_ = -1;
167 update_counter_ = param_->addRequest();
174 template <
typename T>
175 bool ReqHandle::read(T& out_data) {
176 return read(&out_data, 1);
194 template <
typename T>
195 struct timespec read(T& out_data);
198 template <
typename T>
199 struct timespec
SubHandle::read(T& out_data) {
200 log_assert(param_,
"SubHandle can not have NULL pointer to the parameter") struct timespec timestamp {};
201 param_->read(&out_data,
sizeof(out_data), ×tamp);
220 template <
typename T>
221 void write(std::initializer_list<T> in_data);
223 template <
typename T,
int number_of_param = 1>
224 void write(
const T& in_data);
227 template <
typename T>
228 void PubHandle::write(std::initializer_list<T> in_data) {
229 log_assert(param_,
"PubHandle can not have NULL pointer to the parameter")
230 param_->write(in_data.begin(), static_cast<uint32_t>(in_data.size() * sizeof(T)));
233 template <typename T,
int number_of_param>
234 void PubHandle::write(const T& in_data) {
235 log_assert(param_,
"PubHandle can not have NULL pointer to the parameter")
236 param_->write(&in_data, number_of_param * sizeof(in_data));
254 void activate(
bool flag);
257 uint32_t element_offset_{};
272 void activate(
bool flag);
274 template <
typename T>
275 void write(std::initializer_list<T> in_data);
277 template <
typename T,
int number_of_param = 1>
278 void write(
const T& in_data);
281 template <
typename T>
282 void OverwriteHandle::write(std::initializer_list<T> in_data) {
283 log_assert(param_,
"OverwriteHandle can not have NULL pointer to the parameter")
284 param_->force(in_data.begin(), static_cast<uint32_t>(in_data.size() * sizeof(T)));
287 template <typename T,
int number_of_param>
289 log_assert(param_,
"OverwriteHandle can not have NULL pointer to the parameter")
290 param_->force(&in_data, number_of_param * sizeof(in_data));