WebCFace 3.1.1
Web-based Communication Framework & Dashboard-like UI
Loading...
Searching...
No Matches
SyncDataStore2< T, ReqT, normalizeName > Class Template Reference

送受信するデータを保持するクラス More...

#include <webcface/internal/data_store2.h>

Inheritance diagram for SyncDataStore2< T, ReqT, normalizeName >:
[legend]

Public Member Functions

 SyncDataStore2 (const SharedString &name)
 
bool isSelf (const SharedString &member) const
 
unsigned int addReq (const SharedString &member, SharedString field)
 リクエストを追加
 
unsigned int addReq (const SharedString &member, SharedString field, const ReqT &req_info)
 リクエストを追加
 
void setSend (SharedString name, const T &data)
 送信するデータをセット
 
void setSend (const FieldBase &base, const T &data)
 
void setRecv (const SharedString &from, SharedString name, const T &data)
 受信したデータをdata_recvにセット
 
void setRecv (const FieldBase &base, const T &data)
 
void clearRecv (const SharedString &from, SharedString name)
 受信したデータを削除
 
void clearRecv (const FieldBase &base)
 
std::optional< T > getRecv (const SharedString &from, SharedString name)
 data_recvからデータを返す
 
std::optional< T > getRecv (const FieldBase &base)
 
bool unsetRecv (const SharedString &from, SharedString name)
 data_recvからデータを削除, reqを消す
 
bool unsetRecv (const FieldBase &base)
 
void initMember (const SharedString &from)
 memberのentryとデータをクリア
 
void setEntry (const SharedString &from, SharedString e)
 受信したentryを追加
 
StrSet1 getEntry (const SharedString &from)
 entryを取得
 
StrSet1 getEntry (const FieldBase &base)
 
std::pair< SharedString, SharedStringgetReq (unsigned int req_id, SharedString sub_field)
 req_idに対応するmember名とフィールド名を返す
 
const ReqT & getReqInfo (const SharedString &member, const SharedString &field)
 member名とフィールド名に対応するreq_infoを返す
 
StrMap1< T > transferSend (bool is_first)
 data_sendを返し、data_sendをクリア
 
StrMap1< T > getSendPrev (bool is_first)
 
StrMap2< unsigned int > transferReq ()
 req_sendを返し、req_sendをクリア
 

Public Attributes

std::recursive_mutex mtx
 

Detailed Description

template<typename T, typename ReqT = int, bool normalizeName = false>
class webcface::internal::SyncDataStore2< T, ReqT, normalizeName >

送受信するデータを保持するクラス

memberごとにフィールドを持つデータに使う。 member, fieldの2次元mapとなる

T=FuncInfoの時、entryとreqは使用しない(常にすべての関数の情報が送られてくる)

ver3.1〜 normalizeNameがtrueの場合(Funcのみ)、field名を常に正規化 (Func以外はサーバー側で正規化しており、 サーバーからクライアントに名前指定を含むメッセージが送られてくることはないので、 正規化の必要がない)

Constructor & Destructor Documentation

◆ SyncDataStore2()

template<typename T , typename ReqT , bool normalizeName>
SyncDataStore2 ( const SharedString name)
explicit

Member Function Documentation

◆ addReq() [1/2]

template<typename T , typename ReqT , bool normalizeName>
unsigned int addReq ( const SharedString member,
SharedString  field 
)

リクエストを追加

memberがselfの場合無効

Returns
追加した場合req_idを返し、すでにリクエストされていた場合 or selfの場合 0を返す

◆ addReq() [2/2]

template<typename T , typename ReqT , bool normalizeName>
unsigned int addReq ( const SharedString member,
SharedString  field,
const ReqT &  req_info 
)

リクエストを追加

req_infoが前回と異なっていればすでにリクエストされていても上書きする

memberがselfの場合無効

Returns
追加した場合req_idを返し、すでにリクエストされていた場合 or selfの場合 0を返す

◆ clearRecv() [1/2]

template<typename T , typename ReqT , bool normalizeName>
void clearRecv ( const FieldBase base)

◆ clearRecv() [2/2]

template<typename T , typename ReqT , bool normalizeName>
void clearRecv ( const SharedString from,
SharedString  name 
)

受信したデータを削除

◆ getEntry() [1/2]

template<typename T , typename ReqT , bool normalizeName>
StrSet1 getEntry ( const FieldBase base)

◆ getEntry() [2/2]

template<typename T , typename ReqT , bool normalizeName>
StrSet1 getEntry ( const SharedString from)

entryを取得

◆ getRecv() [1/2]

template<typename T , typename ReqT , bool normalizeName>
std::optional< T > getRecv ( const FieldBase base)

◆ getRecv() [2/2]

template<typename T , typename ReqT , bool normalizeName>
std::optional< T > getRecv ( const SharedString from,
SharedString  name 
)

data_recvからデータを返す

◆ getReq()

template<typename T , typename ReqT , bool normalizeName>
std::pair< SharedString, SharedString > getReq ( unsigned int  req_id,
SharedString  sub_field 
)

req_idに対応するmember名とフィールド名を返す

◆ getReqInfo()

template<typename T , typename ReqT , bool normalizeName>
const ReqT & getReqInfo ( const SharedString member,
const SharedString field 
)

member名とフィールド名に対応するreq_infoを返す

◆ getSendPrev()

template<typename T , typename ReqT , bool normalizeName>
StrMap1< T > getSendPrev ( bool  is_first)

◆ initMember()

template<typename T , typename ReqT , bool normalizeName>
void initMember ( const SharedString from)

memberのentryとデータをクリア

ambiguousなので引数にFieldBaseは使わない (そもそも必要ない)

◆ isSelf()

template<typename T , typename ReqT , bool normalizeName>
bool isSelf ( const SharedString member) const

◆ setEntry()

template<typename T , typename ReqT , bool normalizeName>
void setEntry ( const SharedString from,
SharedString  e 
)

受信したentryを追加

◆ setRecv() [1/2]

template<typename T , typename ReqT , bool normalizeName>
void setRecv ( const FieldBase base,
const T &  data 
)

◆ setRecv() [2/2]

template<typename T , typename ReqT , bool normalizeName>
void setRecv ( const SharedString from,
SharedString  name,
const T &  data 
)

受信したデータをdata_recvにセット

◆ setSend() [1/2]

template<typename T , typename ReqT , bool normalizeName>
void setSend ( const FieldBase base,
const T &  data 
)

◆ setSend() [2/2]

template<typename T , typename ReqT , bool normalizeName>
void setSend ( SharedString  name,
const T &  data 
)

送信するデータをセット

データをdata_sendとdata_recv[self_member_name]にセットし、 has_sendをtrueにする

◆ transferReq()

template<typename T , typename ReqT , bool normalizeName>
StrMap2< unsigned int > transferReq

req_sendを返し、req_sendをクリア

◆ transferSend()

template<typename T , typename ReqT , bool normalizeName>
StrMap1< T > transferSend ( bool  is_first)

data_sendを返し、data_sendをクリア

◆ unsetRecv() [1/2]

template<typename T , typename ReqT , bool normalizeName>
bool unsetRecv ( const FieldBase base)

◆ unsetRecv() [2/2]

template<typename T , typename ReqT , bool normalizeName>
bool unsetRecv ( const SharedString from,
SharedString  name 
)

data_recvからデータを削除, reqを消す

Returns
reqを削除したらtrue, reqがすでに削除されてればfalse

Member Data Documentation

◆ mtx

template<typename T , typename ReqT = int, bool normalizeName = false>
std::recursive_mutex mtx

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