WebCFace 3.1.1
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"
12
14namespace internal {
15
30template <typename T, typename ReqT = int, bool normalizeName = false>
38 std::vector<std::pair<SharedString, T>> data_send;
39 StrMap1<T> data_send_prev;
49 StrMap2<T> data_recv;
56 StrSet2 entry;
69 StrMap2<ReqT> req_info;
70
71 SharedString self_member_name;
72
73
74 public:
75 explicit SyncDataStore2(const SharedString &name);
76
77 std::recursive_mutex mtx;
78
79 bool isSelf(const SharedString &member) const;
80
90 unsigned int addReq(const SharedString &member, SharedString field);
102 unsigned int addReq(const SharedString &member, SharedString field,
103 const ReqT &req_info);
104
112 void setSend(SharedString name, const T &data);
113 void setSend(const FieldBase &base, const T &data);
114
119 void setRecv(const SharedString &from, SharedString name, const T &data);
120 void setRecv(const FieldBase &base, const T &data);
125 void clearRecv(const SharedString &from, SharedString name);
126 void clearRecv(const FieldBase &base);
127
132 std::optional<T> getRecv(const SharedString &from, SharedString name);
133 std::optional<T> getRecv(const FieldBase &base);
140 bool unsetRecv(const SharedString &from, SharedString name);
141 bool unsetRecv(const FieldBase &base);
142
148 void initMember(const SharedString &from);
153 void setEntry(const SharedString &from, SharedString e);
154
159 StrSet1 getEntry(const SharedString &from);
160 StrSet1 getEntry(const FieldBase &base);
161
166 std::pair<SharedString, SharedString> getReq(unsigned int req_id,
167 SharedString sub_field);
172 const ReqT &getReqInfo(const SharedString &member,
173 const SharedString &field);
174
179 StrMap1<T> transferSend(bool is_first);
180 StrMap1<T> getSendPrev(bool is_first);
181
186 StrMap2<unsigned int> transferReq();
187};
188
189struct FuncInfo;
190struct RobotLinkData;
191} // namespace internal
192class ImageFrame;
193namespace message {
194struct ViewData;
195struct Canvas2DData;
196struct Canvas3DData;
197struct ImageReq;
198} // namespace message
199namespace internal {
201using RobotModelData = std::vector<std::shared_ptr<internal::RobotLinkData>>;
203
204struct LogData {
205 std::deque<LogLineData> data;
206 std::size_t sent_lines = 0;
207
208 LogData() = default;
209 explicit LogData(const std::deque<LogLineData> &data) : data(data) {}
210
211 std::vector<LogLineData> getDiff() {
212 auto begin = data.cbegin() + static_cast<int>(sent_lines);
213 auto end = data.cend();
214 sent_lines = data.size();
215 return std::vector<LogLineData>(begin, end);
216 }
217 std::vector<LogLineData> getAll() {
218 sent_lines = data.size();
219 return std::vector<LogLineData>(data.cbegin(), data.cend());
220 }
221};
222
223#if WEBCFACE_SYSTEM_DLLEXPORT
224extern template class SyncDataStore2<std::string, int, false>; // test用
225extern template class SyncDataStore2<MutableNumVector, int, false>;
226extern template class SyncDataStore2<ValAdaptor, int, false>;
227extern template class SyncDataStore2<std::shared_ptr<FuncData>, int, true>;
228extern template class SyncDataStore2<std::shared_ptr<message::ViewData>, int,
229 false>;
230extern template class SyncDataStore2<std::shared_ptr<RobotModelData>, int,
231 false>;
232extern template class SyncDataStore2<std::shared_ptr<message::Canvas3DData>,
233 int, false>;
234extern template class SyncDataStore2<std::shared_ptr<message::Canvas2DData>,
235 int, false>;
236extern template class SyncDataStore2<ImageData, message::ImageReq, false>;
237extern template class SyncDataStore2<std::shared_ptr<LogData>, int, false>;
238#endif
239
240} // namespace internal
(ver1.3から追加) 画像データ
Definition image_frame.h:101
u8stringとstringとwstringをshared_ptrで持ち共有する
Definition encoding.h:170
送受信するデータを保持するクラス
Definition data_store2.h:31
std::recursive_mutex mtx
Definition data_store2.h:77
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:201
StrMap1< StrMap1< T > > StrMap2
Definition map.h:17
std::set< SharedString > StrSet1
Definition map.h:18
メンバ名とデータ名を持つクラス
Definition field.h:35
関数1つの情報を表す。関数の実体も持つ
Definition func_internal.h:136
Definition data_store2.h:204
LogData(const std::deque< LogLineData > &data)
Definition data_store2.h:209
std::vector< LogLineData > getDiff()
Definition data_store2.h:211
std::deque< LogLineData > data
Definition data_store2.h:205
std::vector< LogLineData > getAll()
Definition data_store2.h:217
Definition robot_link_internal.h:16
#define WEBCFACE_NS_END
Definition webcface-config.h:113
#define WEBCFACE_NS_BEGIN
Definition webcface-config.h:112