WebCFace 2.9.0
Web-based Communication Framework & Dashboard-like UI
|
#include <webcface/internal/client_internal.h>
Classes | |
struct | SyncData |
struct | WsData |
Public Member Functions | |
ClientData (const SharedString &name, const SharedString &host=nullptr, int port=-1) | |
ClientData (const ClientData &)=delete | |
ClientData & | operator= (const ClientData &)=delete |
~ClientData () | |
void | close () |
bool | isSelf (const FieldBase &base) const |
template<typename T > | |
bool | messagePushOnline (const T &obj) |
template<typename T > | |
bool | messagePushReq (const T &obj) |
template<typename T > | |
void | messagePushAlways (const T &obj) |
void | messagePushAlways (SyncDataSnapshot &&msg) |
std::string | packSyncDataFirst (const SyncDataFirst &data) |
std::string | packSyncData (std::stringstream &buffer, int &len, const SyncDataSnapshot &data) |
void | start () |
通信関係のスレッドを開始する | |
void | join () |
threadを待機 (close時) | |
void | syncImpl (bool sync, bool forever, std::optional< std::chrono::microseconds > timeout) |
recv_queueのメッセージを処理する | |
void | onRecv (const std::vector< std::pair< int, std::shared_ptr< void > > > &messages) |
受信時の処理 | |
const SharedString & | getMemberNameFromId (unsigned int id) const |
unsigned int | getMemberIdFromName (const SharedString &name) const |
void | pingStatusReq () |
ping_status_reqをtrueにしmessage_queueに投げる | |
Public Attributes | |
SharedString | self_member_name |
Client自身の名前 | |
std::optional< unsigned int > | self_member_id |
SharedString | host |
int | port |
bool | current_curl_connected = false |
void * | current_curl_handle = nullptr |
std::string | current_curl_path |
std::string | current_ws_buf = "" |
std::vector< char > | curl_err_buffer |
std::thread | ws_thread |
websocket接続、通信するスレッド | |
std::atomic< bool > | closing = false |
MutexProxy< WsData > | ws_data |
std::atomic< bool > | auto_reconnect = true |
MutexProxy< SyncData > | sync_data |
SharedMutexProxy< StrMap1< bool > > | member_entry |
SyncDataStore2< std::shared_ptr< ValueData > > | value_store |
SyncDataStore2< std::shared_ptr< TextData > > | text_store |
SyncDataStore2< std::shared_ptr< FuncData > > | func_store |
SyncDataStore2< std::shared_ptr< message::ViewData > > | view_store |
SyncDataStore2< ImageData, message::ImageReq > | image_store |
SyncDataStore2< std::shared_ptr< RobotModelData > > | robot_model_store |
SyncDataStore2< std::shared_ptr< message::Canvas3DData > > | canvas3d_store |
SyncDataStore2< std::shared_ptr< message::Canvas2DData > > | canvas2d_store |
SyncDataStore2< std::shared_ptr< LogData > > | log_store |
SyncDataStore1< std::chrono::system_clock::time_point > | sync_time_store |
FuncResultStore | func_result_store |
MutexProxy< StrMap1< Queue< FuncCallHandle > > > | func_listener_handlers |
listenerがfetchするの待ちの関数呼び出しをためておく | |
SharedMutexProxy< StrMap1< unsigned int > > | member_ids |
SharedMutexProxy< std::unordered_map< unsigned int, std::string > > | member_lib_name |
SharedMutexProxy< std::unordered_map< unsigned int, std::string > > | member_lib_ver |
SharedMutexProxy< std::unordered_map< unsigned int, std::string > > | member_addr |
std::shared_ptr< std::function< void(Member)> > | member_entry_event |
SharedMutexProxy< StrMap1< std::shared_ptr< std::function< void(Member)> > > > | member_connected_event |
SharedMutexProxy< StrMap1< std::shared_ptr< std::function< void(Member)> > > > | member_disconnected_event |
SharedMutexProxy< StrMap2< std::shared_ptr< std::function< void(Value)> > > > | value_change_event |
SharedMutexProxy< StrMap2< std::shared_ptr< std::function< void(Variant)> > > > | text_change_event |
SharedMutexProxy< StrMap2< std::shared_ptr< std::function< void(Image)> > > > | image_change_event |
SharedMutexProxy< StrMap2< std::shared_ptr< std::function< void(RobotModel)> > > > | robot_model_change_event |
SharedMutexProxy< StrMap2< std::shared_ptr< std::function< void(View)> > > > | view_change_event |
SharedMutexProxy< StrMap2< std::shared_ptr< std::function< void(Canvas3D)> > > > | canvas3d_change_event |
SharedMutexProxy< StrMap2< std::shared_ptr< std::function< void(Canvas2D)> > > > | canvas2d_change_event |
SharedMutexProxy< StrMap2< std::shared_ptr< std::function< void(Log)> > > > | log_append_event |
SharedMutexProxy< StrMap1< std::shared_ptr< std::function< void(Member)> > > > | sync_event |
SharedMutexProxy< StrMap1< std::shared_ptr< std::function< void(Member)> > > > | ping_event |
SharedMutexProxy< StrMap1< std::shared_ptr< std::function< void(Value)> > > > | value_entry_event |
SharedMutexProxy< StrMap1< std::shared_ptr< std::function< void(Text)> > > > | text_entry_event |
SharedMutexProxy< StrMap1< std::shared_ptr< std::function< void(Func)> > > > | func_entry_event |
SharedMutexProxy< StrMap1< std::shared_ptr< std::function< void(View)> > > > | view_entry_event |
SharedMutexProxy< StrMap1< std::shared_ptr< std::function< void(Image)> > > > | image_entry_event |
SharedMutexProxy< StrMap1< std::shared_ptr< std::function< void(RobotModel)> > > > | robot_model_entry_event |
SharedMutexProxy< StrMap1< std::shared_ptr< std::function< void(Canvas3D)> > > > | canvas3d_entry_event |
SharedMutexProxy< StrMap1< std::shared_ptr< std::function< void(Canvas2D)> > > > | canvas2d_entry_event |
SharedMutexProxy< StrMap1< std::shared_ptr< std::function< void(Log)> > > > | log_entry_event |
std::shared_ptr< spdlog::logger > | logger_internal |
SharedMutexProxy< StrMap1< std::unique_ptr< std::streambuf > > > | logger_buf |
SharedMutexProxy< StrMap1< std::unique_ptr< std::ostream > > > | logger_os |
SharedMutexProxy< StrMap1< std::unique_ptr< std::wstreambuf > > > | logger_buf_w |
SharedMutexProxy< StrMap1< std::unique_ptr< std::wostream > > > | logger_os_w |
SharedMutexProxy< std::string > | svr_name |
SharedMutexProxy< std::string > | svr_version |
SharedMutexProxy< std::string > | svr_hostname |
std::shared_ptr< std::unordered_map< unsigned int, int > > | ping_status |
bool | ping_status_req = false |
|
explicit |
|
delete |
~ClientData | ( | ) |
void close | ( | ) |
|
inline |
|
inline |
|
inline |
void join | ( | ) |
threadを待機 (close時)
|
inline |
接続中かどうかに関係なくメッセージをキューに入れる
syncで確実に送信するデータに使う。
|
inline |
|
inline |
接続中の場合メッセージをキューに入れtrueを返し、 接続していない場合なにもせずfalseを返す
Call, Pingなど
|
inline |
sync_firstが空でなければメッセージをキューに入れtrueを返し、 sync_firstが空ならなにもせずfalseを返す
Reqはsync_first時にすべて含まれるので。
void onRecv | ( | const std::vector< std::pair< int, std::shared_ptr< void > > > & | messages | ) |
受信時の処理
|
delete |
std::string packSyncData | ( | std::stringstream & | buffer, |
int & | len, | ||
const SyncDataSnapshot & | data | ||
) |
std::string packSyncDataFirst | ( | const SyncDataFirst & | data | ) |
void pingStatusReq | ( | ) |
ping_status_reqをtrueにしmessage_queueに投げる
void start | ( | ) |
通信関係のスレッドを開始する
void syncImpl | ( | bool | sync, |
bool | forever, | ||
std::optional< std::chrono::microseconds > | timeout | ||
) |
recv_queueのメッセージを処理する
std::atomic<bool> auto_reconnect = true |
ただの設定フラグなのでmutexやcondとは無関係
SharedMutexProxy<StrMap2<std::shared_ptr<std::function<void(Canvas2D)> > > > canvas2d_change_event |
SharedMutexProxy<StrMap1<std::shared_ptr<std::function<void(Canvas2D)> > > > canvas2d_entry_event |
SyncDataStore2<std::shared_ptr<message::Canvas2DData> > canvas2d_store |
SharedMutexProxy<StrMap2<std::shared_ptr<std::function<void(Canvas3D)> > > > canvas3d_change_event |
SharedMutexProxy<StrMap1<std::shared_ptr<std::function<void(Canvas3D)> > > > canvas3d_entry_event |
SyncDataStore2<std::shared_ptr<message::Canvas3DData> > canvas3d_store |
std::atomic<bool> closing = false |
\brief recv_queueのメッセージを処理するスレッド auto_recv がtrueの場合のみ。 ‍/
std::thread sync_thread;
struct SyncDataSnapshot { std::chrono::system_clock::time_point time; StrMap1<std::shared_ptr<ValueData>> value_data; StrMap1<std::shared_ptr<TextData>> text_data; StrMap1<std::shared_ptr<RobotModelData>> robot_model_data; StrMap1<std::shared_ptr<message::ViewData>> view_prev, view_data; StrMap1<std::shared_ptr<message::Canvas3DData>> canvas3d_prev, canvas3d_data; StrMap1<std::shared_ptr<message::Canvas2DData>> canvas2d_prev, canvas2d_data; StrMap1<ImageData> image_data; StrMap1<std::vector<LogLineData>> log_data; StrMap1<std::shared_ptr<FuncData>> func_data; }; struct SyncDataFirst { StrMap2<unsigned int> value_req, text_req, robot_model_req, view_req, canvas3d_req, canvas2d_req, image_req, log_req; StrMap2<message::ImageReq> image_req_info; bool ping_status_req; SyncDataSnapshot sync_data; }; /*! close()が呼ばれたらtrue、すべてのスレッドは停止する
std::vector<char> curl_err_buffer |
bool current_curl_connected = false |
void* current_curl_handle = nullptr |
std::string current_curl_path |
std::string current_ws_buf = "" |
SharedMutexProxy<StrMap1<std::shared_ptr<std::function<void(Func)> > > > func_entry_event |
MutexProxy<StrMap1<Queue<FuncCallHandle> > > func_listener_handlers |
listenerがfetchするの待ちの関数呼び出しをためておく
FuncResultStore func_result_store |
SyncDataStore2<std::shared_ptr<FuncData> > func_store |
SharedString host |
SharedMutexProxy<StrMap2<std::shared_ptr<std::function<void(Image)> > > > image_change_event |
SharedMutexProxy<StrMap1<std::shared_ptr<std::function<void(Image)> > > > image_entry_event |
SyncDataStore2<ImageData, message::ImageReq> image_store |
SharedMutexProxy<StrMap2<std::shared_ptr<std::function<void(Log)> > > > log_append_event |
SharedMutexProxy<StrMap1<std::shared_ptr<std::function<void(Log)> > > > log_entry_event |
SyncDataStore2<std::shared_ptr<LogData> > log_store |
SharedMutexProxy<StrMap1<std::unique_ptr<std::streambuf> > > logger_buf |
SharedMutexProxy<StrMap1<std::unique_ptr<std::wstreambuf> > > logger_buf_w |
std::shared_ptr<spdlog::logger> logger_internal |
SharedMutexProxy<StrMap1<std::unique_ptr<std::ostream> > > logger_os |
SharedMutexProxy<StrMap1<std::unique_ptr<std::wostream> > > logger_os_w |
SharedMutexProxy<std::unordered_map<unsigned int, std::string> > member_addr |
SharedMutexProxy<StrMap1<std::shared_ptr<std::function<void(Member)> > > > member_connected_event |
自身に対するonConnectイベントもここに入れる (member_entry とは扱いが異なる)
SharedMutexProxy<StrMap1<std::shared_ptr<std::function<void(Member)> > > > member_disconnected_event |
SharedMutexProxy<StrMap1<bool> > member_entry |
存在するメンバーのリスト
std::shared_ptr<std::function<void(Member)> > member_entry_event |
各種イベントはコールバックを登録しようとした時(EventTargetの初期化時) にはじめて初期化する。
なのでmapになっていないmember_entry_eventもnullの可能性がある
SharedMutexProxy<StrMap1<unsigned int> > member_ids |
SharedMutexProxy<std::unordered_map<unsigned int, std::string> > member_lib_name |
SharedMutexProxy<std::unordered_map<unsigned int, std::string> > member_lib_ver |
SharedMutexProxy<StrMap1<std::shared_ptr<std::function<void(Member)> > > > ping_event |
std::shared_ptr<std::unordered_map<unsigned int, int> > ping_status |
bool ping_status_req = false |
int port |
SharedMutexProxy<StrMap2<std::shared_ptr<std::function<void(RobotModel)> > > > robot_model_change_event |
SharedMutexProxy<StrMap1<std::shared_ptr<std::function<void(RobotModel)> > > > robot_model_entry_event |
SyncDataStore2<std::shared_ptr<RobotModelData> > robot_model_store |
std::optional<unsigned int> self_member_id |
SharedString self_member_name |
Client自身の名前
SharedMutexProxy<std::string> svr_hostname |
SharedMutexProxy<std::string> svr_name |
SharedMutexProxy<std::string> svr_version |
MutexProxy<SyncData> sync_data |
SharedMutexProxy<StrMap1<std::shared_ptr<std::function<void(Member)> > > > sync_event |
SyncDataStore1<std::chrono::system_clock::time_point> sync_time_store |
SharedMutexProxy<StrMap2<std::shared_ptr<std::function<void(Variant)> > > > text_change_event |
SharedMutexProxy<StrMap1<std::shared_ptr<std::function<void(Text)> > > > text_entry_event |
SyncDataStore2<std::shared_ptr<TextData> > text_store |
SharedMutexProxy<StrMap2<std::shared_ptr<std::function<void(Value)> > > > value_change_event |
SharedMutexProxy<StrMap1<std::shared_ptr<std::function<void(Value)> > > > value_entry_event |
SyncDataStore2<std::shared_ptr<ValueData> > value_store |
SharedMutexProxy<StrMap2<std::shared_ptr<std::function<void(View)> > > > view_change_event |
SharedMutexProxy<StrMap1<std::shared_ptr<std::function<void(View)> > > > view_entry_event |
SyncDataStore2<std::shared_ptr<message::ViewData> > view_store |
MutexProxy<WsData> ws_data |
std::thread ws_thread |
websocket接続、通信するスレッド