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"
12
14namespace internal {
15
25template <typename T, typename ReqT = int>
33 std::vector<std::pair<SharedString, T>> data_send;
34 StrMap1<T> data_send_prev;
44 StrMap2<T> data_recv;
51 StrSet2 entry;
64 StrMap2<ReqT> req_info;
65
66 SharedString self_member_name;
67
68
69 public:
70 explicit SyncDataStore2(const SharedString &name);
71
72 std::recursive_mutex mtx;
73
74 bool isSelf(const SharedString &member) const;
75
85 unsigned int addReq(const SharedString &member, const SharedString &field);
97 unsigned int addReq(const SharedString &member, const SharedString &field,
98 const ReqT &req_info);
99
107 void setSend(const SharedString &name, const T &data);
108 void setSend(const FieldBase &base, const T &data);
109
114 void setRecv(const SharedString &from, const SharedString &name,
115 const T &data);
116 void setRecv(const FieldBase &base, const T &data);
121 void clearRecv(const SharedString &from, const SharedString &name);
122 void clearRecv(const FieldBase &base);
123
128 std::optional<T> getRecv(const SharedString &from,
129 const SharedString &name);
130 std::optional<T> getRecv(const FieldBase &base);
137 bool unsetRecv(const SharedString &from, const SharedString &name);
138 bool unsetRecv(const FieldBase &base);
139
145 void initMember(const SharedString &from);
150 void setEntry(const SharedString &from, const SharedString &e);
151
156 StrSet1 getEntry(const SharedString &from);
157 StrSet1 getEntry(const FieldBase &base);
158
163 std::pair<SharedString, SharedString> getReq(unsigned int req_id,
164 const SharedString &sub_field);
169 const ReqT &getReqInfo(const SharedString &member,
170 const SharedString &field);
171
176 StrMap1<T> transferSend(bool is_first);
177 StrMap1<T> getSendPrev(bool is_first);
178
183 StrMap2<unsigned int> transferReq();
184};
185
186struct FuncInfo;
187struct RobotLinkData;
188} // namespace internal
189class ImageFrame;
190namespace message {
191struct ViewData;
192struct Canvas2DData;
193struct Canvas3DData;
194struct ImageReq;
195} // namespace message
196namespace internal {
198using RobotModelData = std::vector<std::shared_ptr<internal::RobotLinkData>>;
200
201struct LogData {
202 std::deque<LogLineData> data;
203 std::size_t sent_lines = 0;
204
205 LogData() = default;
206 explicit LogData(const std::deque<LogLineData> &data) : data(data) {}
207
208 std::vector<LogLineData> getDiff() {
209 auto begin = data.cbegin() + static_cast<int>(sent_lines);
210 auto end = data.cend();
211 sent_lines = data.size();
212 return std::vector<LogLineData>(begin, end);
213 }
214 std::vector<LogLineData> getAll() {
215 sent_lines = data.size();
216 return std::vector<LogLineData>(data.cbegin(), data.cend());
217 }
218};
219
220#if WEBCFACE_SYSTEM_DLLEXPORT
221extern template class SyncDataStore2<std::string, int>; // test用
222extern template class SyncDataStore2<MutableNumVector, int>;
223extern template class SyncDataStore2<ValAdaptor, int>;
224extern template class SyncDataStore2<std::shared_ptr<FuncData>, int>;
225extern template class SyncDataStore2<std::shared_ptr<message::ViewData>, int>;
226extern template class SyncDataStore2<std::shared_ptr<RobotModelData>, int>;
227extern template class SyncDataStore2<std::shared_ptr<message::Canvas3DData>,
228 int>;
229extern template class SyncDataStore2<std::shared_ptr<message::Canvas2DData>,
230 int>;
231extern template class SyncDataStore2<ImageData, message::ImageReq>;
232extern template class SyncDataStore2<std::shared_ptr<LogData>, int>;
233#endif
234
235} // namespace internal
(ver1.3から追加) 画像データ
Definition image_frame.h:101
u8stringとstringとwstringをshared_ptrで持ち共有する
Definition encoding.h:159
送受信するデータを保持するクラス
Definition data_store2.h:26
std::recursive_mutex mtx
Definition data_store2.h:72
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:198
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:201
LogData(const std::deque< LogLineData > &data)
Definition data_store2.h:206
std::vector< LogLineData > getDiff()
Definition data_store2.h:208
std::deque< LogLineData > data
Definition data_store2.h:202
std::vector< LogLineData > getAll()
Definition data_store2.h:214
Definition robot_link_internal.h:16
#define WEBCFACE_NS_END
Definition webcface-config.h:118
#define WEBCFACE_NS_BEGIN
Definition webcface-config.h:117