WebCFace 2.9.0
Web-based Communication Framework & Dashboard-like UI
Loading...
Searching...
No Matches
member.h
Go to the documentation of this file.
1#pragma once
2#include <functional>
3#include <string>
4#include <vector>
5#include <optional>
6#include <chrono>
7#include "field.h"
8#ifdef WEBCFACE_MESON
9#include "webcface-config.h"
10#else
11#include "webcface/common/webcface-config.h"
12#endif
13
15
23class WEBCFACE_DLL Member : protected Field {
24 public:
25 Member() = default;
26 Member(const std::weak_ptr<internal::ClientData> &data_w,
27 const SharedString &member)
28 : Field(data_w, member) {}
29 Member(const Field &base) : Field(base.data_w, base.member_) {}
30
31 friend struct internal::ClientData;
32
39 StringView name() const { return member_.decodeShare(); }
47 WStringView nameW() const { return member_.decodeShareW(); }
48
49 using Field::child;
50 using Field::operator[];
51
52 using Field::canvas2D;
53 using Field::canvas3D;
54 using Field::func;
55 using Field::funcListener;
56 using Field::image;
57 using Field::robotModel;
58 using Field::text;
59 using Field::value;
60 using Field::view;
61
65 template <WEBCFACE_COMPLETE(Log)>
66 Log_ log(StringInitializer name) const {
67 return this->child(static_cast<SharedString &>(name));
68 }
73 template <WEBCFACE_COMPLETE(Log)>
74 Log_ log() const;
75
76 using Field::canvas2DEntries;
77 using Field::canvas3DEntries;
78 using Field::children;
79 using Field::childrenRecurse;
80 using Field::funcEntries;
81 using Field::hasChildren;
82 using Field::imageEntries;
83 using Field::logEntries;
84 using Field::robotModelEntries;
85 using Field::textEntries;
86 using Field::valueEntries;
87 using Field::viewEntries;
93 [[deprecated]]
94 std::vector<Value> values() const;
99 [[deprecated]]
100 std::vector<Text> texts() const;
106 [[deprecated]]
107 std::vector<RobotModel> robotModels() const;
113 [[deprecated]]
114 std::vector<Func> funcs() const;
119 [[deprecated]]
120 std::vector<View> views() const;
125 [[deprecated]]
126 std::vector<Image> images() const;
127
136 bool exists() const;
144 bool connected() const;
152 const Member &
153 onDisconnect(std::function<void WEBCFACE_CALL_FP(Member)> callback) const;
161 template <typename F, typename std::enable_if_t<std::is_invocable_v<F>,
162 std::nullptr_t> = nullptr>
163 const Member &onDisconnect(F callback) const {
164 return onDisconnect(
165 [callback = std::move(callback)](const auto &) { callback(); });
166 }
174 const Member &
175 onConnect(std::function<void WEBCFACE_CALL_FP(Member)> callback) const;
183 template <typename F, typename std::enable_if_t<std::is_invocable_v<F>,
184 std::nullptr_t> = nullptr>
185 const Member &onConnect(F callback) const {
186 return onConnect(
187 [callback = std::move(callback)](const auto &) { callback(); });
188 }
189
196 const Member &
197 onValueEntry(std::function<void WEBCFACE_CALL_FP(Value)> callback) const;
204 const Member &
205 onTextEntry(std::function<void WEBCFACE_CALL_FP(Text)> callback) const;
212 const Member &onRobotModelEntry(
213 std::function<void WEBCFACE_CALL_FP(RobotModel)> callback) const;
220 const Member &
221 onFuncEntry(std::function<void WEBCFACE_CALL_FP(Func)> callback) const;
228 const Member &
229 onImageEntry(std::function<void WEBCFACE_CALL_FP(Image)> callback) const;
236 const Member &
237 onViewEntry(std::function<void WEBCFACE_CALL_FP(View)> callback) const;
244 const Member &onCanvas3DEntry(
245 std::function<void WEBCFACE_CALL_FP(Canvas3D)> callback) const;
252 const Member &onCanvas2DEntry(
253 std::function<void WEBCFACE_CALL_FP(Canvas2D)> callback) const;
260 const Member &
261 onLogEntry(std::function<void WEBCFACE_CALL_FP(Log)> callback) const;
262
269 const Member &
270 onSync(std::function<void WEBCFACE_CALL_FP(Member)> callback) const;
277 template <typename F, typename std::enable_if_t<std::is_invocable_v<F>,
278 std::nullptr_t> = nullptr>
279 const Member &onSync(F callback) const {
280 return onSync(
281 [callback = std::move(callback)](const auto &) { callback(); });
282 }
283
289 std::chrono::system_clock::time_point syncTime() const;
297 const std::string &libName() const;
302 const std::string &libVersion() const;
307 const std::string &remoteAddr() const;
308
320 std::optional<int> pingStatus() const;
332 const Member &
333 onPing(std::function<void WEBCFACE_CALL_FP(Member)> callback) const;
340 template <typename F, typename std::enable_if_t<std::is_invocable_v<F>,
341 std::nullptr_t> = nullptr>
342 const Member &onPing(F callback) const {
343 return onPing(
344 [callback = std::move(callback)](const auto &) { callback(); });
345 }
346
351 template <typename T, typename std::enable_if_t<std::is_same_v<T, Member>,
352 std::nullptr_t> = nullptr>
353 bool operator==(const T &other) const {
354 return static_cast<Field>(*this) == static_cast<Field>(other);
355 }
356 template <typename T, typename std::enable_if_t<std::is_same_v<T, Member>,
357 std::nullptr_t> = nullptr>
358 bool operator!=(const T &other) const {
359 return static_cast<Field>(*this) != static_cast<Field>(other);
360 }
361};
362extern template Log Member::log<Log, true>() const;
363
Canvas2Dの送受信データを表すクラス
Definition canvas2d.h:24
Canvas3Dの送受信データを表すクラス
Definition canvas3d.h:28
関数1つを表すクラス
Definition func.h:108
(ver1.3から追加) 画像の送受信データを表すクラス
Definition image.h:20
ログの送受信データを表すクラス
Definition log.h:105
Memberを指すクラス
Definition member.h:23
Member()=default
StringView name() const
Member名
Definition member.h:39
bool operator==(const T &other) const
Memberを比較
Definition member.h:353
const Member & onConnect(F callback) const
Memberがサーバーに接続したときに呼び出されるコールバックを設定
Definition member.h:185
Log_ log(StringInitializer name) const
Definition member.h:66
Log_ log() const
bool operator!=(const T &other) const
Definition member.h:358
const Member & onSync(F callback) const
Memberがsync()したときのイベント
Definition member.h:279
const Member & onDisconnect(F callback) const
Memberが切断したときに呼び出されるコールバックを設定
Definition member.h:163
Member(const std::weak_ptr< internal::ClientData > &data_w, const SharedString &member)
Definition member.h:26
WStringView nameW() const
Member名 (wstring)
Definition member.h:47
Member(const Field &base)
Definition member.h:29
const Member & onPing(F callback) const
通信速度が更新された時のイベント
Definition member.h:342
RobotModelの送受信データを表すクラス
Definition robot_model.h:26
u8stringとstringとwstringをshared_ptrで持ち共有する
Definition encoding.h:159
SharedString のpublicなコンストラクタインタフェース (入力専用)
Definition encoding.h:215
webcfaceで管理されている文字列を参照するstring_view
Definition encoding.h:60
文字列の送受信データを表すクラス
Definition text.h:206
実数値またはその配列の送受信データを表すクラス
Definition value.h:61
Viewの送受信データを表すクラス
Definition view.h:36
ClientDataの参照とメンバ名とデータ名を持つクラス
Definition field.h:71
Field child(const SharedString &field) const
Definition field.cc:42
Definition client_internal.h:46
#define WEBCFACE_DLL
Definition webcface-config.h:69
#define WEBCFACE_NS_END
Definition webcface-config.h:113
#define WEBCFACE_NS_BEGIN
Definition webcface-config.h:112
#define WEBCFACE_CALL_FP
Definition webcface-config.h:107