WebCFace 3.3.1
Web-based Communication Framework & Dashboard-like UI
Loading...
Searching...
No Matches
Client Class Reference

サーバーに接続するクライアント。 More...

#include <webcface/client.h>

Inheritance diagram for Client:
[legend]
Collaboration diagram for Client:
[legend]

Public Member Functions

 Client (const Client &)=delete
 
const Client & operator= (const Client &)=delete
 
 Client ()
 名前を指定せずサーバーに接続する
 
 Client (StringInitializer name, StringInitializer host="127.0.0.1", int port=7530)
 名前を指定しサーバーに接続する
 
 Client (const SharedString &name, const SharedString &host, int port)
 
 Client (const SharedString &name, const std::shared_ptr< internal::ClientData > &data)
 
bool connected () const
 サーバーに接続できているときtrueを返す
 
template<typename F , typename std::enable_if_t< std::is_invocable_v< F >, std::nullptr_t > = nullptr>
const Client & onDisconnect (F callback) const
 切断したときに呼び出されるコールバックを設定
 
template<typename F , typename std::enable_if_t< std::is_invocable_v< F >, std::nullptr_t > = nullptr>
const Client & onConnect (F callback) const
 サーバーに接続したときに呼び出されるコールバックを設定
 
 ~Client ()
 接続を切りClientを破棄
 
const Client & close () const
 接続を切り、今後再接続しない
 
const Client & autoReconnect (bool enabled) const
 通信が切断されたときに自動で再試行するかどうかを設定する。
 
bool autoReconnect () const
 通信が切断されたときに自動で再試行するかどうかを取得する。
 
const Client & start () const
 サーバーへの接続を別スレッドで開始する。
 
const Client & waitConnection () const
 サーバーへの接続を別スレッドで開始し、成功するまで待機する。
 
const Client & sync () const
 送信用にセットしたデータをすべて送信キューに入れ、受信したデータを処理する。
 
const Client & loopSyncFor (std::chrono::microseconds timeout) const
 送信用にセットしたデータをすべて送信キューに入れ、受信したデータを処理する。
 
template<typename Clock , typename Duration >
const Client & loopSyncUntil (std::chrono::time_point< Clock, Duration > timeout) const
 送信用にセットしたデータをすべて送信キューに入れ、受信したデータを処理する。
 
const Client & loopSync () const
 送信用にセットしたデータをすべて送信キューに入れ、受信したデータを処理する。
 
Member member (StringInitializer name) const
 他のmemberにアクセスする
 
std::vector< Member > members () const
 サーバーに接続されている他のmemberのリストを得る。
 
const Client & onMemberEntry (std::function< void(Member)> callback) const
 Memberが追加された時のイベント
 
std::streambuf * loggerStreamBuf () const
 webcfaceに出力するstreambuf
 
std::streambuf * loggerStreamBuf (const StringInitializer &name) const
 webcfaceに出力するstreambuf
 
std::ostream & loggerOStream () const
 webcfaceに出力するostream
 
std::ostream & loggerOStream (const StringInitializer &name) const
 webcfaceに出力するostream
 
std::wstreambuf * loggerWStreamBuf () const
 webcfaceに出力するwstreambuf
 
std::wstreambuf * loggerWStreamBuf (const StringInitializer &name) const
 webcfaceに出力するwstreambuf
 
std::wostream & loggerWOStream () const
 webcfaceに出力するwostream
 
std::wostream & loggerWOStream (const StringInitializer &name) const
 webcfaceに出力するwostream
 
const std::string & serverVersion () const
 WebCFaceサーバーのバージョン情報
 
const std::string & serverName () const
 WebCFaceサーバーの識別情報
 
const std::string & serverHostName () const
 サーバーのホスト名
 
StringView name () const
 Member名
 
WStringView nameW () const
 Member名 (wstring)
 
template<typename Log_ = Log, bool = ::webcface::traits::assertCompleteLog < std::enable_if_t<std::is_same_v< Log_, Log >, Log_>>()>
Log_ log (StringInitializer name) const
 
template<typename Log_ = Log, bool = ::webcface::traits::assertCompleteLog < std::enable_if_t<std::is_same_v< Log_, Log >, Log_>>()>
Log_ log () const
 
template<typename T , bool >
T log () const
 
bool exists () const
 Memberのデータが存在するかどうかを返す
 
const Member & onDisconnect (std::function< void(Member)> callback) const
 Memberが切断したときに呼び出されるコールバックを設定
 
const Member & onConnect (std::function< void(Member)> callback) const
 Memberがサーバーに接続したときに呼び出されるコールバックを設定
 
const Member & onValueEntry (std::function< void(Value)> callback) const
 valueが追加された時のイベント
 
const Member & onTextEntry (std::function< void(Text)> callback) const
 textが追加された時のイベント
 
const Member & onRobotModelEntry (std::function< void(RobotModel)> callback) const
 robotModelが追加された時のイベント
 
const Member & onFuncEntry (std::function< void(Func)> callback) const
 funcが追加された時のイベント
 
const Member & onImageEntry (std::function< void(Image)> callback) const
 imageが追加されたときのイベント
 
const Member & onViewEntry (std::function< void(View)> callback) const
 viewが追加されたときのイベント
 
const Member & onCanvas3DEntry (std::function< void(Canvas3D)> callback) const
 canvas3dが追加されたときのイベント
 
const Member & onCanvas2DEntry (std::function< void(Canvas2D)> callback) const
 canvas2dが追加されたときのイベント
 
const Member & onLogEntry (std::function< void(Log)> callback) const
 logが追加されたときのイベント
 
const Member & onSync (std::function< void(Member)> callback) const
 Memberがsync()したときのイベント
 
template<typename F , typename std::enable_if_t< std::is_invocable_v< F >, std::nullptr_t > = nullptr>
const Member & onSync (F callback) const
 Memberがsync()したときのイベント
 
std::chrono::system_clock::time_point syncTime () const
 最後のsync()の時刻を返す
 
const std::string & libName () const
 このMemberが使っているWebCFaceライブラリの識別情報
 
const std::string & libVersion () const
 このMemberが使っているWebCFaceのバージョン
 
const std::string & remoteAddr () const
 このMemberのIPアドレス
 
std::optional< int > pingStatus () const
 通信速度を調べる
 
const Member & onPing (std::function< void(Member)> callback) const
 通信速度が更新された時のイベント
 
template<typename F , typename std::enable_if_t< std::is_invocable_v< F >, std::nullptr_t > = nullptr>
const Member & onPing (F callback) const
 通信速度が更新された時のイベント
 
template<typename T , typename std::enable_if_t< std::is_same_v< T, Member >, std::nullptr_t > = nullptr>
bool operator== (const T &other) const
 Memberを比較
 
template<typename T , typename std::enable_if_t< std::is_same_v< T, Member >, std::nullptr_t > = nullptr>
bool operator!= (const T &other) const
 
Field child (const SharedString &field) const
 
Field child (StringInitializer field) const
 「(thisの名前).(追加の名前)」を新しい名前とするField
 
Field child (int index) const
 「(thisの名前).(index)」を新しい名前とするField
 
template<typename Canvas2D_ = Canvas2D, bool = ::webcface::traits::assertCompleteCanvas2D < std::enable_if_t<std::is_same_v< Canvas2D_, Canvas2D >, Canvas2D_>>()>
Canvas2D_ canvas2D (StringInitializer field=StringInitializer()) const
 
template<typename Canvas3D_ = Canvas3D, bool = ::webcface::traits::assertCompleteCanvas3D < std::enable_if_t<std::is_same_v< Canvas3D_, Canvas3D >, Canvas3D_>>()>
Canvas3D_ canvas3D (StringInitializer field=StringInitializer()) const
 
template<typename Func_ = Func, bool = ::webcface::traits::assertCompleteFunc < std::enable_if_t<std::is_same_v< Func_, Func >, Func_>>()>
Func_ func (StringInitializer field=StringInitializer()) const
 
template<typename FuncListener_ = FuncListener, bool = ::webcface::traits::assertCompleteFuncListener < std::enable_if_t<std::is_same_v< FuncListener_, FuncListener >, FuncListener_>>()>
FuncListener_ funcListener (StringInitializer field=StringInitializer()) const
 
template<typename Image_ = Image, bool = ::webcface::traits::assertCompleteImage < std::enable_if_t<std::is_same_v< Image_, Image >, Image_>>()>
Image_ image (StringInitializer field=StringInitializer()) const
 
template<typename RobotModel_ = RobotModel, bool = ::webcface::traits::assertCompleteRobotModel < std::enable_if_t<std::is_same_v< RobotModel_, RobotModel >, RobotModel_>>()>
RobotModel_ robotModel (StringInitializer field=StringInitializer()) const
 
template<typename Text_ = Text, bool = ::webcface::traits::assertCompleteText < std::enable_if_t<std::is_same_v< Text_, Text >, Text_>>()>
Text_ text (StringInitializer field=StringInitializer()) const
 
template<typename Value_ = Value, bool = ::webcface::traits::assertCompleteValue < std::enable_if_t<std::is_same_v< Value_, Value >, Value_>>()>
Value_ value (StringInitializer field=StringInitializer()) const
 
template<typename View_ = View, bool = ::webcface::traits::assertCompleteView < std::enable_if_t<std::is_same_v< View_, View >, View_>>()>
View_ view (StringInitializer field=StringInitializer()) const
 
template<typename Canvas2D_ = Canvas2D, bool = ::webcface::traits::assertCompleteCanvas2D < std::enable_if_t<std::is_same_v< Canvas2D_, Canvas2D >, Canvas2D_>>()>
std::vector< Canvas2D_ > canvas2DEntries () const
 「(thisの名前).(追加の名前)」で公開されているcanvas2Dのリストを返す。
 
template<typename T , bool >
std::vector< T > canvas2DEntries () const
 
template<typename Canvas3D_ = Canvas3D, bool = ::webcface::traits::assertCompleteCanvas3D < std::enable_if_t<std::is_same_v< Canvas3D_, Canvas3D >, Canvas3D_>>()>
std::vector< Canvas3D_ > canvas3DEntries () const
 「(thisの名前).(追加の名前)」で公開されているcanvas3Dのリストを返す。
 
template<typename T , bool >
std::vector< T > canvas3DEntries () const
 
std::vector< Field > children () const
 「(thisの名前).(追加の名前)」で公開されているデータのリスト
 
std::vector< Field > childrenRecurse () const
 「(thisの名前).(追加の名前)」で公開されているデータのリスト(再帰)
 
template<typename Func_ = Func, bool = ::webcface::traits::assertCompleteFunc < std::enable_if_t<std::is_same_v< Func_, Func >, Func_>>()>
std::vector< Func_ > funcEntries () const
 「(thisの名前).(追加の名前)」で公開されているfuncのリストを返す。
 
template<typename T , bool >
std::vector< T > funcEntries () const
 
bool hasChildren () const
 「(thisの名前).(追加の名前)」で公開されているデータが存在するかどうかを返す
 
template<typename Image_ = Image, bool = ::webcface::traits::assertCompleteImage < std::enable_if_t<std::is_same_v< Image_, Image >, Image_>>()>
std::vector< Image_ > imageEntries () const
 「(thisの名前).(追加の名前)」で公開されているimageのリストを返す。
 
template<typename T , bool >
std::vector< T > imageEntries () const
 
template<typename Log_ = Log, bool = ::webcface::traits::assertCompleteLog < std::enable_if_t<std::is_same_v< Log_, Log >, Log_>>()>
std::vector< Log_ > logEntries () const
 「(thisの名前).(追加の名前)」で公開されているlogのリストを返す。
 
template<typename T , bool >
std::vector< T > logEntries () const
 
template<typename RobotModel_ = RobotModel, bool = ::webcface::traits::assertCompleteRobotModel < std::enable_if_t<std::is_same_v< RobotModel_, RobotModel >, RobotModel_>>()>
std::vector< RobotModel_ > robotModelEntries () const
 「(thisの名前).(追加の名前)」で公開されているrobotModelのリストを返す。
 
template<typename T , bool >
std::vector< T > robotModelEntries () const
 
template<typename Text_ = Text, bool = ::webcface::traits::assertCompleteText < std::enable_if_t<std::is_same_v< Text_, Text >, Text_>>()>
std::vector< Text_ > textEntries () const
 「(thisの名前).(追加の名前)」で公開されているtextのリストを返す。
 
template<typename T , bool >
std::vector< T > textEntries () const
 
template<typename Value_ = Value, bool = ::webcface::traits::assertCompleteValue < std::enable_if_t<std::is_same_v< Value_, Value >, Value_>>()>
std::vector< Value_ > valueEntries () const
 「(thisの名前).(追加の名前)」で公開されているvalueのリストを返す。
 
template<typename T , bool >
std::vector< T > valueEntries () const
 
template<typename View_ = View, bool = ::webcface::traits::assertCompleteView < std::enable_if_t<std::is_same_v< View_, View >, View_>>()>
std::vector< View_ > viewEntries () const
 「(thisの名前).(追加の名前)」で公開されているviewのリストを返す。
 
template<typename T , bool >
std::vector< T > viewEntries () const
 
template<typename Member_ = Member, bool = ::webcface::traits::assertCompleteMember < std::enable_if_t<std::is_same_v< Member_, Member >, Member_>>()>
Member_ member () const
 Memberを返す
 

Protected Member Functions

bool operator== (const Field &other) const
 
bool operator== (const FieldBase &rhs) const
 
bool operator!= (const Field &other) const
 
bool operator!= (const FieldBase &rhs) const
 
std::shared_ptr< internal::ClientData > dataLock () const
 data_wをlockし、失敗したらSanityErrorを投げる
 
std::shared_ptr< internal::ClientData > setCheck () const
 data_wをlockし、memberがselfではなければIntrusionを投げる
 
bool expired () const
 
SharedString lastName8 () const
 
std::string lastName () const
 nameのうちピリオドで区切られた最後の部分を取り出す
 
std::wstring lastNameW () const
 nameのうちピリオドで区切られた最後の部分を取り出す (wstring)
 
Field parent () const
 nameの最後のピリオドの前までを新しい名前とするField
 
Field operator[] (StringInitializer field) const
 「(thisの名前).(追加の名前)」を新しい名前とするField
 
Field operator[] (int index) const
 「(thisの名前).(index)」を新しい名前とするField
 
bool isSelf () const
 memberがselfならtrue
 

Protected Attributes

std::weak_ptr< internal::ClientData > data_w
 ClientDataの参照
 
SharedString member_
 メンバー名
 
SharedString field_
 フィールド名
 

Detailed Description

サーバーに接続するクライアント。

Constructor & Destructor Documentation

◆ Client() [1/5]

Client ( const Client &  )
delete

◆ Client() [2/5]

Client ( )
inline

名前を指定せずサーバーに接続する

サーバーのホストとポートはlocalhost:7530になる

◆ Client() [3/5]

Client ( StringInitializer  name,
StringInitializer  host = "127.0.0.1",
int  port = 7530 
)
inlineexplicit

名前を指定しサーバーに接続する

  • サーバーのホストとポートを省略した場合 127.0.0.1:7530 になる
  • ver2.0〜 wstring対応, ver3.0〜 StringInitializer 型で置き換え
  • name 名前
  • host サーバーのアドレス
  • port サーバーのポート

◆ Client() [4/5]

Client ( const SharedString &  name,
const SharedString &  host,
int  port 
)
explicit

◆ Client() [5/5]

Client ( const SharedString &  name,
const std::shared_ptr< internal::ClientData > &  data 
)
explicit

◆ ~Client()

~Client ( )

接続を切りClientを破棄

Member Function Documentation

◆ autoReconnect() [1/2]

bool autoReconnect ( ) const

通信が切断されたときに自動で再試行するかどうかを取得する。

Since
ver1.11.1

◆ autoReconnect() [2/2]

const Client & autoReconnect ( bool  enabled) const

通信が切断されたときに自動で再試行するかどうかを設定する。

Since
ver1.11.1

デフォルトはtrue

See also
start(), waitConnection()

◆ canvas2D()

template<typename Canvas2D_ = Canvas2D, bool = ::webcface::traits::assertCompleteCanvas2D < std::enable_if_t<std::is_same_v< Canvas2D_, Canvas2D >, Canvas2D_>>()>
Canvas2D_ canvas2D ( StringInitializer  field = StringInitializer()) const
inlineinherited

◆ canvas2DEntries() [1/2]

template<typename Canvas2D_ = Canvas2D, bool = ::webcface::traits::assertCompleteCanvas2D < std::enable_if_t<std::is_same_v< Canvas2D_, Canvas2D >, Canvas2D_>>()>
template std::vector< Canvas2D > canvas2DEntries< Canvas2D, true > ( ) const
inherited

「(thisの名前).(追加の名前)」で公開されているcanvas2Dのリストを返す。

Since
ver1.6
See also
childrenRecurse()

◆ canvas2DEntries() [2/2]

template<typename T , bool >
template std::vector< Canvas2D > canvas2DEntries< Canvas2D, true > ( ) const
inherited

◆ canvas3D()

template<typename Canvas3D_ = Canvas3D, bool = ::webcface::traits::assertCompleteCanvas3D < std::enable_if_t<std::is_same_v< Canvas3D_, Canvas3D >, Canvas3D_>>()>
Canvas3D_ canvas3D ( StringInitializer  field = StringInitializer()) const
inlineinherited

◆ canvas3DEntries() [1/2]

template<typename Canvas3D_ = Canvas3D, bool = ::webcface::traits::assertCompleteCanvas3D < std::enable_if_t<std::is_same_v< Canvas3D_, Canvas3D >, Canvas3D_>>()>
template std::vector< Canvas3D > canvas3DEntries< Canvas3D, true > ( ) const
inherited

「(thisの名前).(追加の名前)」で公開されているcanvas3Dのリストを返す。

Since
ver1.6
See also
childrenRecurse()

◆ canvas3DEntries() [2/2]

template<typename T , bool >
template std::vector< Canvas3D > canvas3DEntries< Canvas3D, true > ( ) const
inherited

◆ child() [1/3]

Field child ( const SharedString &  field) const
inherited

◆ child() [2/3]

Field child ( int  index) const
inlineinherited

「(thisの名前).(index)」を新しい名前とするField

Since
ver1.11
Deprecated:
ver2.8〜

◆ child() [3/3]

Field child ( StringInitializer  field) const
inlineinherited

「(thisの名前).(追加の名前)」を新しい名前とするField

Since
ver1.11

ver2.0〜 wstring対応, ver3.0〜 StringInitializer 型で置き換え

◆ children()

std::vector< Field > children ( ) const
inherited

「(thisの名前).(追加の名前)」で公開されているデータのリスト

Since
ver2.6
  • データ型を問わずすべてのデータを列挙する。
  • childrenRecurse() と異なり、 名前にさらにピリオドが含まれる場合はその前までの名前を返す。
  • 同名で複数のデータが存在する場合も1回のみカウントする。
See also
childrenRecurse(), hasChildren()

◆ childrenRecurse()

std::vector< Field > childrenRecurse ( ) const
inherited

「(thisの名前).(追加の名前)」で公開されているデータのリスト(再帰)

Since
ver2.6
  • データ型を問わずすべてのデータを列挙する。
  • 同名で複数のデータが存在する場合も1回のみカウントする。
See also
children(), hasChildren()

◆ close()

const Client & close ( ) const

接続を切り、今後再接続しない

◆ connected()

bool connected ( ) const

サーバーに接続できているときtrueを返す

◆ dataLock()

std::shared_ptr< internal::ClientData > dataLock ( ) const
inherited

data_wをlockし、失敗したらSanityErrorを投げる

◆ exists()

bool exists ( ) const
inherited

Memberのデータが存在するかどうかを返す

Since
ver2.9
  • connected() とは異なり、切断後もサーバーにデータが残っていてまだデータを受信でき、trueになる場合がある

◆ expired()

bool expired ( ) const
inherited

◆ func()

template<typename Func_ = Func, bool = ::webcface::traits::assertCompleteFunc < std::enable_if_t<std::is_same_v< Func_, Func >, Func_>>()>
Func_ func ( StringInitializer  field = StringInitializer()) const
inlineinherited

◆ funcEntries() [1/2]

template<typename Func_ = Func, bool = ::webcface::traits::assertCompleteFunc < std::enable_if_t<std::is_same_v< Func_, Func >, Func_>>()>
template std::vector< Func > funcEntries< Func, true > ( ) const
inherited

「(thisの名前).(追加の名前)」で公開されているfuncのリストを返す。

Since
ver1.6
See also
childrenRecurse()

◆ funcEntries() [2/2]

template<typename T , bool >
template std::vector< Func > funcEntries< Func, true > ( ) const
inherited

◆ funcListener()

template<typename FuncListener_ = FuncListener, bool = ::webcface::traits::assertCompleteFuncListener < std::enable_if_t<std::is_same_v< FuncListener_, FuncListener >, FuncListener_>>()>
FuncListener_ funcListener ( StringInitializer  field = StringInitializer()) const
inlineinherited

◆ hasChildren()

bool hasChildren ( ) const
inherited

「(thisの名前).(追加の名前)」で公開されているデータが存在するかどうかを返す

Since
ver2.6
See also
children(), childrenRecurse()

◆ image()

template<typename Image_ = Image, bool = ::webcface::traits::assertCompleteImage < std::enable_if_t<std::is_same_v< Image_, Image >, Image_>>()>
Image_ image ( StringInitializer  field = StringInitializer()) const
inlineinherited

◆ imageEntries() [1/2]

template<typename Image_ = Image, bool = ::webcface::traits::assertCompleteImage < std::enable_if_t<std::is_same_v< Image_, Image >, Image_>>()>
template std::vector< Image > imageEntries< Image, true > ( ) const
inherited

「(thisの名前).(追加の名前)」で公開されているimageのリストを返す。

Since
ver1.6
See also
childrenRecurse()

◆ imageEntries() [2/2]

template<typename T , bool >
template std::vector< Image > imageEntries< Image, true > ( ) const
inherited

◆ isSelf()

bool isSelf ( ) const
inherited

memberがselfならtrue

data_wがlockできなければruntime_errorを投げる

◆ lastName()

std::string lastName ( ) const
inlineinherited

nameのうちピリオドで区切られた最後の部分を取り出す

Since
ver1.11

◆ lastName8()

SharedString lastName8 ( ) const
protectedinherited

◆ lastNameW()

std::wstring lastNameW ( ) const
inlineinherited

nameのうちピリオドで区切られた最後の部分を取り出す (wstring)

Since
ver2.0

◆ libName()

const std::string & libName ( ) const
inherited

このMemberが使っているWebCFaceライブラリの識別情報

Returns
このライブラリの場合は"cpp", javascriptクライアントは"js", pythonクライアントは"python"を返す。

◆ libVersion()

const std::string & libVersion ( ) const
inherited

このMemberが使っているWebCFaceのバージョン

◆ log() [1/3]

template<typename Log_ = Log, bool = ::webcface::traits::assertCompleteLog < std::enable_if_t<std::is_same_v< Log_, Log >, Log_>>()>
template Log log< Log, true > ( ) const
inherited

ver2.4〜: nameを省略した場合 "default" として送信される。

◆ log() [2/3]

template<typename T , bool >
template Log log< Log, true > ( ) const
inherited

◆ log() [3/3]

template<typename Log_ = Log, bool = ::webcface::traits::assertCompleteLog < std::enable_if_t<std::is_same_v< Log_, Log >, Log_>>()>
Log_ log ( StringInitializer  name) const
inlineinherited
Since
ver2.4

◆ logEntries() [1/2]

template<typename T , bool >
template std::vector< Log > logEntries< Log, true > ( ) const
inherited

◆ logEntries() [2/2]

template<typename Log_ = Log, bool = ::webcface::traits::assertCompleteLog < std::enable_if_t<std::is_same_v< Log_, Log >, Log_>>()>
template std::vector< Log > logEntries< Log, true > ( ) const
inherited

「(thisの名前).(追加の名前)」で公開されているlogのリストを返す。

Since
ver2.4
See also
childrenRecurse()

◆ loggerOStream() [1/2]

std::ostream & loggerOStream ( ) const

webcfaceに出力するostream

  • (ver1.11.xまで: 出力先が loggerStreamBuf() に設定されているostream。 すなわち、loggerSink (webcfaceに送られる) と stderr_color_sink_mt (標準エラー出力に送られる) に出力されることになる。)
  • ver2.0〜: std::ostreamの出力先として使用すると、改行が入力されるたびに webcfaceに送られると同時に stderr にも送られる。
  • ver1.0.1で logger_ostream から名前変更
See also
loggerStreamBuf()

◆ loggerOStream() [2/2]

std::ostream & loggerOStream ( const StringInitializer &  name) const

webcfaceに出力するostream

Since
ver2.4
  • nameを省略した場合 "default" になる。
  • ver3.0〜 StringInitializer 型に変更

◆ loggerStreamBuf() [1/2]

std::streambuf * loggerStreamBuf ( ) const

webcfaceに出力するstreambuf

  • (ver1.11.xまで: std::ostreamの出力先として使用すると、logger()に送られる。 すなわち、loggerSink (webcfaceに送られる) と stderr_color_sink_mt (標準エラー出力に送られる) に出力されることになる。)
  • ver2.0〜: std::ostreamの出力先として使用すると、改行が入力されるたびに webcfaceに送られると同時に stderr にも送られる。
  • levelは常にinfoになる。
  • std::flushのタイミングとは無関係に、1つの改行ごとに1つのログになる
  • ver1.0.1で logger_streambuf から名前変更
See also
loggerOStream()

◆ loggerStreamBuf() [2/2]

std::streambuf * loggerStreamBuf ( const StringInitializer &  name) const

webcfaceに出力するstreambuf

Since
ver2.4
  • nameを省略した場合 "default" になる。
  • ver3.0〜 StringInitializer 型に変更

◆ loggerWOStream() [1/2]

std::wostream & loggerWOStream ( ) const

webcfaceに出力するwostream

Since
ver2.0
See also
loggerOStream

◆ loggerWOStream() [2/2]

std::wostream & loggerWOStream ( const StringInitializer &  name) const

webcfaceに出力するwostream

Since
ver2.4
  • nameを省略した場合 "default" になる。
  • ver3.0〜 StringInitializer 型に変更

◆ loggerWStreamBuf() [1/2]

std::wstreambuf * loggerWStreamBuf ( ) const

webcfaceに出力するwstreambuf

Since
ver2.0
See also
loggerStreamBuf

◆ loggerWStreamBuf() [2/2]

std::wstreambuf * loggerWStreamBuf ( const StringInitializer &  name) const

webcfaceに出力するwstreambuf

Since
ver2.4
  • nameを省略した場合 "default" になる。
  • ver3.0〜 StringInitializer 型に変更

◆ loopSync()

const Client & loopSync ( ) const
inline

送信用にセットしたデータをすべて送信キューに入れ、受信したデータを処理する。

Since
ver2.0
  • loopSyncFor()と同じだが、close()されるまで無制限にsync()を再試行する。
  • autoReconnectがfalseでサーバーに接続できてない場合はreturnする。 (deadlock回避)
See also
sync(), loopSyncFor(), loopSyncUntil()

◆ loopSyncFor()

const Client & loopSyncFor ( std::chrono::microseconds  timeout) const
inline

送信用にセットしたデータをすべて送信キューに入れ、受信したデータを処理する。

Since
ver2.0
  • sync()と同じだが、データを受信してもしなくても timeout 経過するまでは繰り返しsync()を再試行する。 timeout=0 または負の値なら再試行せず即座にreturnする。(sync()と同じ)
  • autoReconnectがfalseでサーバーに接続できてない場合はreturnする。 (deadlock回避)
See also
sync(), loopSyncUntil(), loopSync()

◆ loopSyncUntil()

template<typename Clock , typename Duration >
const Client & loopSyncUntil ( std::chrono::time_point< Clock, Duration >  timeout) const
inline

送信用にセットしたデータをすべて送信キューに入れ、受信したデータを処理する。

Since
ver2.0

loopSyncFor() と同じだが、timeoutを絶対時間で指定

See also
sync(), loopSyncFor(), loopSync()

◆ member() [1/2]

template<typename Member_ = Member, bool = ::webcface::traits::assertCompleteMember < std::enable_if_t<std::is_same_v< Member_, Member >, Member_>>()>
Member_ member ( ) const
inlineinherited

Memberを返す

◆ member() [2/2]

Member member ( StringInitializer  name) const
inline

他のmemberにアクセスする

      \brief 別スレッドでsync()を自動的に呼び出す間隔を設定する。
      \since ver2.0

      * start() や waitConnection() より前に設定する必要がある。
      *

autoSyncが有効の場合、別スレッドで一定間隔(100μs)ごとにsync()が呼び出され、 各種コールバック (onEntry, onChange, Func::run()など) も別のスレッドで呼ばれることになる (そのためmutexなどを適切に設定すること)

  • デフォルトでは無効なので、手動でsync()などを呼び出す必要がある
Parameters
enabledtrueにすると自動でsync()が呼び出されるようになる
See also
sync(), loopSyncFor(), loopSyncUntil(), loopSync() ‍/ void autoSync(bool enabled);

private: Member member(const SharedString &name) const { if (name.empty()) { return *this; } else { return Member{data, name}; } }

public: /*!

  • (ver1.7から)nameが空の場合 *this を返す
  • ver2.0〜 wstring対応, ver3.0〜 StringInitializer 型で置き換え
See also
members(), onMemberEntry()

◆ members()

std::vector< Member > members ( ) const

サーバーに接続されている他のmemberのリストを得る。

自分自身と、無名のmemberを除く。

See also
member(), onMemberEntry()

◆ name()

StringView name ( ) const
inlineinherited

Member名

ver3.0〜 std::stringの参照から StringView に変更

◆ nameW()

WStringView nameW ( ) const
inlineinherited

Member名 (wstring)

Since
ver2.0

ver3.0〜 std::wstringの参照から WStringView に変更

◆ onCanvas2DEntry()

const Member & onCanvas2DEntry ( std::function< void(Canvas2D)>  callback) const
inherited

canvas2dが追加されたときのイベント

Since
ver2.0
Parameters
callbackCanvas2D型の引数をとる関数

◆ onCanvas3DEntry()

const Member & onCanvas3DEntry ( std::function< void(Canvas3D)>  callback) const
inherited

canvas3dが追加されたときのイベント

Since
ver2.0
Parameters
callbackCanvas3D型の引数をとる関数

◆ onConnect() [1/2]

template<typename F , typename std::enable_if_t< std::is_invocable_v< F >, std::nullptr_t > = nullptr>
const Client & onConnect ( F  callback) const
inline

サーバーに接続したときに呼び出されるコールバックを設定

Since
ver2.9
Parameters
callback引数をとらない関数

◆ onConnect() [2/2]

const Member & onConnect ( std::function< void(Member)>  callback) const
inherited

Memberがサーバーに接続したときに呼び出されるコールバックを設定

Since
ver2.9
Parameters
callbackMember型の引数(thisが渡される)を1つ取る関数

◆ onDisconnect() [1/2]

template<typename F , typename std::enable_if_t< std::is_invocable_v< F >, std::nullptr_t > = nullptr>
const Client & onDisconnect ( F  callback) const
inline

切断したときに呼び出されるコールバックを設定

Since
ver2.9
Parameters
callback引数をとらない関数
  • 通信が切断されて以降で最初のsync()の中で呼ばれる

◆ onDisconnect() [2/2]

const Member & onDisconnect ( std::function< void(Member)>  callback) const
inherited

Memberが切断したときに呼び出されるコールバックを設定

Since
ver2.9
Parameters
callbackMember型の引数(thisが渡される)を1つ取る関数
  • 自身のサーバーとの通信が切断された場合も、全メンバーについて呼び出される。

◆ onFuncEntry()

const Member & onFuncEntry ( std::function< void(Func)>  callback) const
inherited

funcが追加された時のイベント

Since
ver2.0
Parameters
callbackFunc型の引数をとる関数

◆ onImageEntry()

const Member & onImageEntry ( std::function< void(Image)>  callback) const
inherited

imageが追加されたときのイベント

Since
ver2.0
Parameters
callbackImage型の引数をとる関数

◆ onLogEntry()

const Member & onLogEntry ( std::function< void(Log)>  callback) const
inherited

logが追加されたときのイベント

Since
ver2.4
Parameters
callbackLog型の引数をとる関数

◆ onMemberEntry()

const Client & onMemberEntry ( std::function< void(Member)>  callback) const

Memberが追加された時のイベント

コールバックの型は void(Member)

See also
member(), members()

◆ onPing() [1/2]

template<typename F , typename std::enable_if_t< std::is_invocable_v< F >, std::nullptr_t > = nullptr>
const Member & onPing ( F  callback) const
inlineinherited

通信速度が更新された時のイベント

Since
ver2.0
Parameters
callback引数をとらない関数

◆ onPing() [2/2]

const Member & onPing ( std::function< void(Member)>  callback) const
inherited

通信速度が更新された時のイベント

Since
ver2.0
  • 通常は約5秒に1回更新される。
  • pingStatus() と同様、通信速度データのリクエストも行う。
  • ver2.0〜 Client自身に対しても使用可能
Parameters
callbackMember型の引数を取る関数
See also
pingStatus()

◆ onRobotModelEntry()

const Member & onRobotModelEntry ( std::function< void(RobotModel)>  callback) const
inherited

robotModelが追加された時のイベント

Since
ver2.0
Parameters
callbackRobotModel型の引数をとる関数

◆ onSync() [1/2]

template<typename F , typename std::enable_if_t< std::is_invocable_v< F >, std::nullptr_t > = nullptr>
const Member & onSync ( F  callback) const
inlineinherited

Memberがsync()したときのイベント

Since
ver2.0
Parameters
callback引数をとらない関数

◆ onSync() [2/2]

const Member & onSync ( std::function< void(Member)>  callback) const
inherited

Memberがsync()したときのイベント

Since
ver2.0
Parameters
callbackMember型の引数をとる関数

◆ onTextEntry()

const Member & onTextEntry ( std::function< void(Text)>  callback) const
inherited

textが追加された時のイベント

Since
ver2.0
Parameters
callbackText型の引数をとる関数

◆ onValueEntry()

const Member & onValueEntry ( std::function< void(Value)>  callback) const
inherited

valueが追加された時のイベント

Since
ver2.0
Parameters
callbackValue型の引数をとる関数

◆ onViewEntry()

const Member & onViewEntry ( std::function< void(View)>  callback) const
inherited

viewが追加されたときのイベント

Since
ver2.0
Parameters
callbackView型の引数をとる関数

◆ operator!=() [1/3]

bool operator!= ( const Field &  other) const
inlineinherited

◆ operator!=() [2/3]

bool operator!= ( const FieldBase &  rhs) const
inlineinherited

◆ operator!=() [3/3]

template<typename T , typename std::enable_if_t< std::is_same_v< T, Member >, std::nullptr_t > = nullptr>
bool operator!= ( const T &  other) const
inlineinherited

◆ operator=()

const Client & operator= ( const Client &  )
delete

◆ operator==() [1/3]

bool operator== ( const Field &  other) const
inherited

◆ operator==() [2/3]

bool operator== ( const FieldBase &  rhs) const
inlineinherited

◆ operator==() [3/3]

template<typename T , typename std::enable_if_t< std::is_same_v< T, Member >, std::nullptr_t > = nullptr>
bool operator== ( const T &  other) const
inlineinherited

Memberを比較

Since
ver1.11

◆ operator[]() [1/2]

Field operator[] ( int  index) const
inlineinherited

「(thisの名前).(index)」を新しい名前とするField

Since
ver1.11
Deprecated:
ver2.8〜

◆ operator[]() [2/2]

Field operator[] ( StringInitializer  field) const
inlineinherited

「(thisの名前).(追加の名前)」を新しい名前とするField

Since
ver1.11

ver2.0〜 wstring対応, ver3.0〜 StringInitializer 型で置き換え

◆ parent()

Field parent ( ) const
inherited

nameの最後のピリオドの前までを新しい名前とするField

Since
ver1.11

◆ pingStatus()

std::optional< int > pingStatus ( ) const
inherited

通信速度を調べる

  • 初回の呼び出しで通信速度データをリクエストし、 sync()後通信速度が得られるようになる
  • ver2.0〜 Client自身に対しても使用可能 (Client::pingStatus() または member("自分の名前").pingStatus())
Returns
初回→ std::nullopt, 2回目以降(取得できれば)→ pingの往復時間 (ms)
See also
onPing()

◆ remoteAddr()

const std::string & remoteAddr ( ) const
inherited

このMemberのIPアドレス

◆ robotModel()

template<typename RobotModel_ = RobotModel, bool = ::webcface::traits::assertCompleteRobotModel < std::enable_if_t<std::is_same_v< RobotModel_, RobotModel >, RobotModel_>>()>
RobotModel_ robotModel ( StringInitializer  field = StringInitializer()) const
inlineinherited

◆ robotModelEntries() [1/2]

template<typename RobotModel_ = RobotModel, bool = ::webcface::traits::assertCompleteRobotModel < std::enable_if_t<std::is_same_v< RobotModel_, RobotModel >, RobotModel_>>()>
template std::vector< RobotModel > robotModelEntries< RobotModel, true > ( ) const
inherited

「(thisの名前).(追加の名前)」で公開されているrobotModelのリストを返す。

Since
ver1.6
See also
childrenRecurse()

◆ robotModelEntries() [2/2]

template<typename T , bool >
template std::vector< RobotModel > robotModelEntries< RobotModel, true > ( ) const
inherited

◆ serverHostName()

const std::string & serverHostName ( ) const

サーバーのホスト名

Since
ver2.0

◆ serverName()

const std::string & serverName ( ) const

WebCFaceサーバーの識別情報

Returns
webcface付属のサーバーであれば通常は "webcface" が返る
See also
serverVersion()

◆ serverVersion()

const std::string & serverVersion ( ) const

WebCFaceサーバーのバージョン情報

◆ setCheck()

std::shared_ptr< internal::ClientData > setCheck ( ) const
inherited

data_wをlockし、memberがselfではなければIntrusionを投げる

◆ start()

const Client & start ( ) const

サーバーへの接続を別スレッドで開始する。

Since
ver1.2
See also
waitConnection(), autoReconnect()

◆ sync()

const Client & sync ( ) const
inline

送信用にセットしたデータをすべて送信キューに入れ、受信したデータを処理する。

  • 実際に送信をするのは別スレッドであり、この関数はブロックしない。
  • ver1.2以降: サーバーに接続していない場合、start()を呼び出す。
  • ver2.0以降: データを受信した場合、各種コールバック(onEntry, onChange, Func::run()など)をこのスレッドで呼び出し、 それがすべて完了するまでこの関数はブロックされる。
    • データをまだ何も受信していない場合やサーバーに接続していない場合は、 即座にreturnする。
See also
start(), loopSyncFor(), loopSyncUntil(), loopSync()

◆ syncTime()

std::chrono::system_clock::time_point syncTime ( ) const
inherited

最後のsync()の時刻を返す

Since
ver1.7 (Value::time(), Text::time() 等から変更)

◆ text()

template<typename Text_ = Text, bool = ::webcface::traits::assertCompleteText < std::enable_if_t<std::is_same_v< Text_, Text >, Text_>>()>
Text_ text ( StringInitializer  field = StringInitializer()) const
inlineinherited

◆ textEntries() [1/2]

template<typename T , bool >
template std::vector< Text > textEntries< Text, true > ( ) const
inherited

◆ textEntries() [2/2]

template<typename Text_ = Text, bool = ::webcface::traits::assertCompleteText < std::enable_if_t<std::is_same_v< Text_, Text >, Text_>>()>
template std::vector< Text > textEntries< Text, true > ( ) const
inherited

「(thisの名前).(追加の名前)」で公開されているtextのリストを返す。

Since
ver1.6
See also
childrenRecurse()

◆ value()

template<typename Value_ = Value, bool = ::webcface::traits::assertCompleteValue < std::enable_if_t<std::is_same_v< Value_, Value >, Value_>>()>
Value_ value ( StringInitializer  field = StringInitializer()) const
inlineinherited

◆ valueEntries() [1/2]

template<typename T , bool >
template std::vector< Value > valueEntries< Value, true > ( ) const
inherited

◆ valueEntries() [2/2]

template<typename Value_ = Value, bool = ::webcface::traits::assertCompleteValue < std::enable_if_t<std::is_same_v< Value_, Value >, Value_>>()>
template std::vector< Value > valueEntries< Value, true > ( ) const
inherited

「(thisの名前).(追加の名前)」で公開されているvalueのリストを返す。

Since
ver1.6
See also
childrenRecurse()

◆ view()

template<typename View_ = View, bool = ::webcface::traits::assertCompleteView < std::enable_if_t<std::is_same_v< View_, View >, View_>>()>
View_ view ( StringInitializer  field = StringInitializer()) const
inlineinherited

◆ viewEntries() [1/2]

template<typename T , bool >
template std::vector< View > viewEntries< View, true > ( ) const
inherited

◆ viewEntries() [2/2]

template<typename View_ = View, bool = ::webcface::traits::assertCompleteView < std::enable_if_t<std::is_same_v< View_, View >, View_>>()>
template std::vector< View > viewEntries< View, true > ( ) const
inherited

「(thisの名前).(追加の名前)」で公開されているviewのリストを返す。

Since
ver1.6
See also
childrenRecurse()

◆ waitConnection()

const Client & waitConnection ( ) const

サーバーへの接続を別スレッドで開始し、成功するまで待機する。

Since
ver1.2
  • ver1.11.1以降: autoReconnect が false の場合は1回目の接続のみ待機し、失敗しても再接続せずreturnする。
  • ver2.0以降: 接続だけでなくentryの受信や初期化が完了するまで待機する。 loopSync() と同様、このスレッドで受信処理 (onEntry コールバックの呼び出しなど) が行われる。
See also
start(), autoReconnect()

Member Data Documentation

◆ data_w

std::weak_ptr<internal::ClientData> data_w
inherited

ClientDataの参照

ClientData内に保持するクラスもあるので循環参照を避けるためweak_ptr

◆ field_

SharedString field_
inherited

フィールド名

Memberなどフィールド名が不要なクラスでは使用しない

◆ member_

SharedString member_
inherited

メンバー名


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