WebCFace 2.9.0
Web-based Communication Framework & Dashboard-like UI
Loading...
Searching...
No Matches
data_store2.h
Go to the documentation of this file.
1#pragma once
2#include <deque>
3#include <vector>
4#include <utility>
5#include <mutex>
6#include <optional>
8#include "webcface/field.h"
9#include "webcface/log.h"
11
13namespace internal {
14
24template <typename T, typename ReqT = int>
32 std::vector<std::pair<SharedString, T>> data_send;
33 StrMap1<T> data_send_prev;
43 StrMap2<T> data_recv;
50 StrSet2 entry;
63 StrMap2<ReqT> req_info;
64
65 SharedString self_member_name;
66
67
68 public:
69 explicit SyncDataStore2(const SharedString &name);
70
71 std::recursive_mutex mtx;
72
73 bool isSelf(const SharedString &member) const;
74
84 unsigned int addReq(const SharedString &member, const SharedString &field);
96 unsigned int addReq(const SharedString &member, const SharedString &field,
97 const ReqT &req_info);
98
106 void setSend(const SharedString &name, const T &data);
107 void setSend(const FieldBase &base, const T &data);
108
113 void setRecv(const SharedString &from, const SharedString &name,
114 const T &data);
115 void setRecv(const FieldBase &base, const T &data);
120 void clearRecv(const SharedString &from, const SharedString &name);
121 void clearRecv(const FieldBase &base);
122
127 std::optional<T> getRecv(const SharedString &from,
128 const SharedString &name);
129 std::optional<T> getRecv(const FieldBase &base);
136 bool unsetRecv(const SharedString &from, const SharedString &name);
137 bool unsetRecv(const FieldBase &base);
138
144 void initMember(const SharedString &from);
149 void setEntry(const SharedString &from, const SharedString &e);
150
155 StrSet1 getEntry(const SharedString &from);
156 StrSet1 getEntry(const FieldBase &base);
157
162 std::pair<SharedString, SharedString> getReq(unsigned int req_id,
163 const SharedString &sub_field);
168 const ReqT &getReqInfo(const SharedString &member,
169 const SharedString &field);
170
175 StrMap1<T> transferSend(bool is_first);
176 StrMap1<T> getSendPrev(bool is_first);
177
182 StrMap2<unsigned int> transferReq();
183};
184
185struct FuncInfo;
186struct RobotLinkData;
187} // namespace internal
188class ImageFrame;
189namespace message {
190struct ViewData;
191struct Canvas2DData;
192struct Canvas3DData;
193struct ImageReq;
194} // namespace message
195namespace internal {
196using ValueData = std::vector<double>;
199using RobotModelData = std::vector<std::shared_ptr<internal::RobotLinkData>>;
201
202struct LogData {
203 std::deque<LogLineData> data;
204 std::size_t sent_lines = 0;
205
206 LogData() = default;
207 explicit LogData(const std::deque<LogLineData> &data) : data(data) {}
208
209 std::vector<LogLineData> getDiff() {
210 auto begin = data.cbegin() + static_cast<int>(sent_lines);
211 auto end = data.cend();
212 sent_lines = data.size();
213 return std::vector<LogLineData>(begin, end);
214 }
215 std::vector<LogLineData> getAll() {
216 sent_lines = data.size();
217 return std::vector<LogLineData>(data.cbegin(), data.cend());
218 }
219};
220
221#if WEBCFACE_SYSTEM_DLLEXPORT
222extern template class SyncDataStore2<std::string, int>; // test用
223extern template class SyncDataStore2<std::shared_ptr<ValueData>, int>;
224extern template class SyncDataStore2<std::shared_ptr<TextData>, int>;
225extern template class SyncDataStore2<std::shared_ptr<FuncData>, int>;
226extern template class SyncDataStore2<std::shared_ptr<message::ViewData>, int>;
227extern template class SyncDataStore2<std::shared_ptr<RobotModelData>, int>;
228extern template class SyncDataStore2<std::shared_ptr<message::Canvas3DData>,
229 int>;
230extern template class SyncDataStore2<std::shared_ptr<message::Canvas2DData>,
231 int>;
232extern template class SyncDataStore2<ImageData, message::ImageReq>;
233extern template class SyncDataStore2<std::shared_ptr<LogData>, int>;
234#endif
235
236} // namespace internal
(ver1.3から追加) 画像データ
Definition image_frame.h:101
u8stringとstringとwstringをshared_ptrで持ち共有する
Definition encoding.h:67
数値、文字列などの値を相互変換するクラス
Definition val_adaptor.h:87
送受信するデータを保持するクラス
Definition data_store2.h:25
std::recursive_mutex mtx
Definition data_store2.h:71
std::vector< double > ValueData
Definition data_store2.h:196
std::map< SharedString, T > StrMap1
Definition map.h:15
StrMap1< StrSet1 > StrSet2
Definition map.h:19
std::vector< std::shared_ptr< internal::RobotLinkData > > RobotModelData
Definition data_store2.h:199
StrMap1< StrMap1< T > > StrMap2
Definition map.h:17
std::set< SharedString > StrSet1
Definition map.h:18
メンバ名とデータ名を持つクラス
Definition field.h:38
関数1つの情報を表す。関数の実体も持つ
Definition func_internal.h:142
Definition data_store2.h:202
LogData(const std::deque< LogLineData > &data)
Definition data_store2.h:207
std::vector< LogLineData > getDiff()
Definition data_store2.h:209
std::deque< LogLineData > data
Definition data_store2.h:203
std::vector< LogLineData > getAll()
Definition data_store2.h:215
Definition robot_link_internal.h:16
#define WEBCFACE_NS_END
Definition webcface-config.h:118
#define WEBCFACE_NS_BEGIN
Definition webcface-config.h:117