WebCFace 2.5.2
Web-based Communication Framework & Dashboard-like UI
|
#include <webcface/internal/client_internal.h>
Public Attributes | |
bool | connected = false |
bool | sync_init_end = false |
bool | do_ws_init = false |
bool | do_ws_recv = false |
bool | recv_ready = false |
std::queue< std::vector< std::pair< int, std::shared_ptr< void > > > > | recv_queue |
std::queue< std::variant< std::string, SyncDataSnapshot > > | sync_queue |
送信したいメッセージを入れるキュー | |
bool connected = false |
current_curl_connectedがWebSocket::initまたはrecv側の内部で変更されるので、 それを呼び出したスレッドがそれをこっちに反映させる
bool do_ws_init = false |
Client側から関数が呼ばれたらtrue、 WebSocket::側のinit関数が完了したらfalse
trueになったときnotify
bool do_ws_recv = false |
Client側から関数が呼ばれたらtrue、 WebSocket::側のrecv関数が完了したらfalse
true,falseになったときnotify
recv_readyの間にdo_ws_recvを立て、 recv()を行い、これがfalseになったことで完了したことを知る
std::queue<std::vector<std::pair<int, std::shared_ptr<void> > > > recv_queue |
bool recv_ready = false |
recv待機中true WebSocket::側のrecv関数が完了したらfalse
bool sync_init_end = false |
SyncInitEndを受信したらtrue 切断時にfalseにもどす
std::queue<std::variant<std::string, SyncDataSnapshot> > sync_queue |
送信したいメッセージを入れるキュー
接続できていない場合送信されずキューにたまる
msgpackのシリアライズに時間がかかるので、 sync()時はシリアライズ後のメッセージではなく 必要なデータを含んだSyncDataSnapshotをpushし(syncData()), あとで別スレッドでそれをメッセージにする (packSyncData())
変更するときはws_mをロックしws_condで変更通知をする (sync_mはロックしない)