|
WebCFace 3.2.0
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 |
| bool | did_disconnect = false |
| std::queue< std::variant< std::string, SyncDataSnapshot > > | sync_queue |
| 送信したいメッセージを入れるキュー | |
| bool connected = false |
current_curl_connectedがWebSocket::initまたはrecv側の内部で変更されるので、 それを呼び出したスレッドがそれをこっちに反映させる
| bool did_disconnect = false |
切断時にthread側がtrueにする
Client側は次のsync()の際にこれがtrueの場合member_entryをリセットしてからfalseに戻す
| 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はロックしない)