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 <mutex>
4#include <optional>
6#include "webcface/field.h"
7#include "webcface/log.h"
9
11namespace internal {
21template <typename T, typename ReqT = int>
27 StrMap1<T> data_send;
28 StrMap1<T> data_send_prev;
38 StrMap2<T> data_recv;
45 StrSet2 entry;
58 StrMap2<ReqT> req_info;
59
60 SharedString self_member_name;
61
62
63 public:
64 explicit SyncDataStore2(const SharedString &name);
65
66 std::recursive_mutex mtx;
67
68 bool isSelf(const SharedString &member) const;
69
79 unsigned int addReq(const SharedString &member, const SharedString &field);
91 unsigned int addReq(const SharedString &member, const SharedString &field,
92 const ReqT &req_info);
93
101 void setSend(const SharedString &name, const T &data);
102 void setSend(const FieldBase &base, const T &data);
103
108 void setRecv(const SharedString &from, const SharedString &name,
109 const T &data);
110 void setRecv(const FieldBase &base, const T &data);
115 void clearRecv(const SharedString &from, const SharedString &name);
116 void clearRecv(const FieldBase &base);
117
122 std::optional<T> getRecv(const SharedString &from,
123 const SharedString &name);
124 std::optional<T> getRecv(const FieldBase &base);
131 bool unsetRecv(const SharedString &from, const SharedString &name);
132 bool unsetRecv(const FieldBase &base);
133
139 void initMember(const SharedString &from);
144 void setEntry(const SharedString &from, const SharedString &e);
145
150 StrSet1 getEntry(const SharedString &from);
151 StrSet1 getEntry(const FieldBase &base);
152
157 std::pair<SharedString, SharedString> getReq(unsigned int req_id,
158 const SharedString &sub_field);
163 const ReqT &getReqInfo(const SharedString &member,
164 const SharedString &field);
165
170 StrMap1<T> transferSend(bool is_first);
171 StrMap1<T> getSendPrev(bool is_first);
172
177 StrMap2<unsigned int> transferReq();
178};
179
180struct FuncInfo;
181struct RobotLinkData;
182} // namespace internal
183class ImageFrame;
184namespace message {
185struct ViewData;
186struct Canvas2DData;
187struct Canvas3DData;
188struct ImageReq;
189} // namespace message
190namespace internal {
191using ValueData = std::vector<double>;
194using RobotModelData = std::vector<std::shared_ptr<internal::RobotLinkData>>;
196
197struct LogData {
198 std::deque<LogLineData> data;
199 std::size_t sent_lines = 0;
200
201 LogData() = default;
202 explicit LogData(const std::deque<LogLineData> &data) : data(data) {}
203
204 std::vector<LogLineData> getDiff() {
205 auto begin = data.cbegin() + static_cast<int>(sent_lines);
206 auto end = data.cend();
207 sent_lines = data.size();
208 return std::vector<LogLineData>(begin, end);
209 }
210 std::vector<LogLineData> getAll() {
211 sent_lines = data.size();
212 return std::vector<LogLineData>(data.cbegin(), data.cend());
213 }
214};
215
216#if WEBCFACE_SYSTEM_DLLEXPORT
217extern template class SyncDataStore2<std::string, int>; // test用
218extern template class SyncDataStore2<std::shared_ptr<ValueData>, int>;
219extern template class SyncDataStore2<std::shared_ptr<TextData>, int>;
220extern template class SyncDataStore2<std::shared_ptr<FuncData>, int>;
221extern template class SyncDataStore2<std::shared_ptr<message::ViewData>, int>;
222extern template class SyncDataStore2<std::shared_ptr<RobotModelData>, int>;
223extern template class SyncDataStore2<std::shared_ptr<message::Canvas3DData>,
224 int>;
225extern template class SyncDataStore2<std::shared_ptr<message::Canvas2DData>,
226 int>;
227extern template class SyncDataStore2<ImageData, message::ImageReq>;
228extern template class SyncDataStore2<std::shared_ptr<LogData>, int>;
229#endif
230
231} // 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:22
std::recursive_mutex mtx
Definition data_store2.h:66
std::vector< double > ValueData
Definition data_store2.h:191
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:194
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:197
LogData(const std::deque< LogLineData > &data)
Definition data_store2.h:202
std::vector< LogLineData > getDiff()
Definition data_store2.h:204
std::deque< LogLineData > data
Definition data_store2.h:198
std::vector< LogLineData > getAll()
Definition data_store2.h:210
Definition robot_link_internal.h:16
#define WEBCFACE_NS_END
Definition webcface-config.h:118
#define WEBCFACE_NS_BEGIN
Definition webcface-config.h:117