WebCFace 2.5.2
Web-based Communication Framework & Dashboard-like UI
Loading...
Searching...
No Matches
MemberData Struct Reference

#include <webcface/server/member_data.h>

Collaboration diagram for MemberData:
[legend]

Public Member Functions

bool connected () const
 
void imageConvertThreadMain (const SharedString &member, const SharedString &field)
 cdの画像を変換しthisに送信
 
bool hasReq (const SharedString &member)
 
 MemberData ()=delete
 
 MemberData (const MemberData &)=delete
 
MemberDataoperator= (const MemberData &)=delete
 
 MemberData (ServerStorage *store, const wsConnPtr &con, std::string_view remote_addr, const spdlog::sink_ptr &sink, spdlog::level::level_enum level)
 
 ~MemberData ()
 
void onConnect ()
 
void onRecv (const std::string &msg)
 
void onClose ()
 
void sendPing ()
 
void send ()
 
void send (const std::string &msg)
 
template<typename T >
void pack (const T &data)
 

Public Attributes

spdlog::sink_ptr sink
 
std::shared_ptr< spdlog::logger > logger
 
spdlog::level::level_enum logger_level
 
ServerStoragestore
 
wsConnPtr con
 ws接続のポインタ、切断後(onClose後)nullptrになる
 
std::string remote_addr
 
bool sync_init = false
 初回のsync() が終わったか
 
SharedString name
 
unsigned int member_id
 
message::SyncInit init_data
 
StrMap1< std::shared_ptr< std::vector< double > > > value
 最新の値
 
StrMap1< std::shared_ptr< ValAdaptor > > text
 
StrMap1< std::shared_ptr< message::FuncInfo > > func
 
StrMap1< message::ViewDataview
 
StrMap1< message::Canvas3DDatacanvas3d
 
StrMap1< message::Canvas2DDatacanvas2d
 
StrMap1< message::ImageFrameimage
 
std::condition_variable image_cv
 
std::mutex image_m
 
StrMap1< int > image_changed
 
StrMap2< int > image_req_changed
 
StrMap2< message::ImageReqimage_req_info
 
std::chrono::system_clock::time_point last_sync_time
 
StrMap2< unsigned int > value_req
 リクエストしているmember,nameのペア
 
StrMap2< unsigned int > text_req
 
StrMap2< unsigned int > view_req
 
StrMap2< unsigned int > image_req
 
StrMap2< unsigned int > view_old_req
 
StrMap2< unsigned int > robot_model_req
 
StrMap2< unsigned int > canvas3d_req
 
StrMap2< unsigned int > canvas3d_old_req
 
StrMap2< unsigned int > canvas2d_req
 
StrMap2< unsigned int > canvas2d_old_req
 
StrMap2< unsigned int > log_req
 
StrMap2< std::optional< std::thread > > image_convert_thread
 
StrMap1< std::vector< std::shared_ptr< message::RobotLink > > > robot_model
 
StrSet1 log_req_default
 古いLogリクエスト ("default"のログを古いメッセージ形式で返す)
 
StrMap1< std::shared_ptr< std::deque< message::LogLine > > > log
 ログ全履歴
 
std::unordered_map< unsigned int, std::unordered_map< std::size_t, int > > pending_calls
 まだ完了していない自分へのcall呼び出しのリスト
 
std::atomic< bool > closing = false
 
std::chrono::system_clock::time_point last_send_ping
 
std::optional< std::chrono::milliseconds > last_ping_duration
 
bool ping_status_req = false
 
std::stringstream send_buffer
 
int send_len = 0
 

Static Public Attributes

static unsigned int last_member_id = 0
 
static constexpr std::chrono::milliseconds ping_interval {5000}
 

Constructor & Destructor Documentation

◆ MemberData() [1/3]

MemberData ( )
delete

◆ MemberData() [2/3]

MemberData ( const MemberData )
delete

◆ MemberData() [3/3]

MemberData ( ServerStorage store,
const wsConnPtr con,
std::string_view  remote_addr,
const spdlog::sink_ptr &  sink,
spdlog::level::level_enum  level 
)
inlineexplicit

◆ ~MemberData()

~MemberData ( )
inline

Member Function Documentation

◆ connected()

bool connected ( ) const
inline

◆ hasReq()

bool hasReq ( const SharedString member)

◆ imageConvertThreadMain()

void imageConvertThreadMain ( const SharedString member,
const SharedString field 
)

cdの画像を変換しthisに送信

cd.image[field]が更新されるかリクエストが更新されたときに変換を行う。

◆ onClose()

void onClose ( )

◆ onConnect()

void onConnect ( )

◆ onRecv()

void onRecv ( const std::string &  msg)

◆ operator=()

MemberData & operator= ( const MemberData )
delete

◆ pack()

template<typename T >
void pack ( const T &  data)
inline

◆ send() [1/2]

void send ( )

◆ send() [2/2]

void send ( const std::string &  msg)

◆ sendPing()

void sendPing ( )

Member Data Documentation

◆ canvas2d

◆ canvas2d_old_req

StrMap2<unsigned int> canvas2d_old_req

◆ canvas2d_req

StrMap2<unsigned int> canvas2d_req

◆ canvas3d

◆ canvas3d_old_req

StrMap2<unsigned int> canvas3d_old_req

◆ canvas3d_req

StrMap2<unsigned int> canvas3d_req

◆ closing

std::atomic<bool> closing = false

◆ con

wsConnPtr con

ws接続のポインタ、切断後(onClose後)nullptrになる

◆ func

StrMap1<std::shared_ptr<message::FuncInfo> > func

◆ image

◆ image_changed

StrMap1<int> image_changed

自分の画像が変化したことをスレッドに知らせる リクエストされてるメンバーのcvを起こしに行く

◆ image_convert_thread

StrMap2<std::optional<std::thread> > image_convert_thread

◆ image_cv

std::condition_variable image_cv

画像が変化したことを知らせるcv リクエストする側のcvに対して、リクエストする側も画像送信側もnotifyする

  • image_req_changedを変えるときnotify
  • image_changedが変えるとき全メンバーの中でこれをリクエストしてるやつをすべてnotify
  • closingのときnotify、全メンバーの中でこれをリクエストしてるやつをすべてnotify

    Todo:
    今後いつかマルチスレッド化したときにデッドロックする気がする

◆ image_m

std::mutex image_m

◆ image_req

StrMap2<unsigned int> image_req

◆ image_req_changed

StrMap2<int> image_req_changed

リクエストが変化したことをスレッドに知らせる

◆ image_req_info

StrMap2<message::ImageReq> image_req_info

画像をそれぞれのリクエストに合わせて変換するスレッド (リクエスト側がもつ)

◆ init_data

message::SyncInit init_data

◆ last_member_id

unsigned int last_member_id = 0
inlinestatic

◆ last_ping_duration

std::optional<std::chrono::milliseconds> last_ping_duration

◆ last_send_ping

std::chrono::system_clock::time_point last_send_ping

◆ last_sync_time

std::chrono::system_clock::time_point last_sync_time

◆ log

StrMap1<std::shared_ptr<std::deque<message::LogLine> > > log

ログ全履歴

◆ log_req

StrMap2<unsigned int> log_req

◆ log_req_default

StrSet1 log_req_default

古いLogリクエスト ("default"のログを古いメッセージ形式で返す)

◆ logger

std::shared_ptr<spdlog::logger> logger

◆ logger_level

spdlog::level::level_enum logger_level

◆ member_id

unsigned int member_id

◆ name

◆ pending_calls

std::unordered_map<unsigned int, std::unordered_map<std::size_t, int> > pending_calls

まだ完了していない自分へのcall呼び出しのリスト

[caller_member_id][caller_id]

呼び出し開始で2, response返したら1, result返したら0

切断時にそれぞれにresponseを返す必要がある。

◆ ping_interval

constexpr std::chrono::milliseconds ping_interval {5000}
staticconstexpr

◆ ping_status_req

bool ping_status_req = false

◆ remote_addr

std::string remote_addr

◆ robot_model

StrMap1<std::vector<std::shared_ptr<message::RobotLink> > > robot_model

◆ robot_model_req

StrMap2<unsigned int> robot_model_req

◆ send_buffer

std::stringstream send_buffer

◆ send_len

int send_len = 0

◆ sink

spdlog::sink_ptr sink

◆ store

ServerStorage* store

◆ sync_init

bool sync_init = false

初回のsync() が終わったか

falseならentryの通知などはしない

◆ text

StrMap1<std::shared_ptr<ValAdaptor> > text

◆ text_req

StrMap2<unsigned int> text_req

◆ value

StrMap1<std::shared_ptr<std::vector<double> > > value

最新の値

entry非表示のものも含む。

◆ value_req

StrMap2<unsigned int> value_req

リクエストしているmember,nameのペア

◆ view

◆ view_old_req

StrMap2<unsigned int> view_old_req

◆ view_req

StrMap2<unsigned int> view_req

The documentation for this struct was generated from the following files: