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

非同期で実行した関数の実行結果を取得するインタフェース。 More...

#include <webcface/func_result.h>

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

Public Member Functions

 Promise (const Field &base, const std::shared_ptr< internal::PromiseData > &data)
 
bool reached () const
 リモートに呼び出しメッセージが到達したかどうかを返す
 
bool found () const
 呼び出した関数がリモートに存在するか(=実行が開始されたか)を返す
 
Promise & waitReach ()
 リモートに呼び出しメッセージが到達するまで待機
 
Promise & waitReachFor (std::chrono::microseconds timeout)
 リモートに呼び出しメッセージが到達するまで待機
 
template<typename Clock , typename Duration >
Promise & waitReachUntil (std::chrono::time_point< Clock, Duration > timeout)
 リモートに呼び出しメッセージが到達するまで待機
 
bool finished () const
 関数の実行が完了したかどうかを返す
 
bool isError () const
 関数がエラーになったかどうかを返す
 
ValAdaptorVector response () const
 関数の実行が完了した場合その戻り値を返す
 
StringView rejection () const
 関数の実行がエラーになった場合そのエラーメッセージを返す
 
WStringView rejectionW () const
 関数の実行がエラーになった場合そのエラーメッセージを返す (wstring)
 
Promise & waitFinish ()
 関数の実行が完了するまで待機
 
Promise & waitFinishFor (std::chrono::microseconds timeout)
 関数の実行が完了するまで待機
 
template<typename Clock , typename Duration >
Promise & waitFinishUntil (std::chrono::time_point< Clock, Duration > timeout)
 関数の実行が完了するまで待機
 
Promise & onReach (std::function< void(Promise)> callback)
 リモートに呼び出しメッセージが到達したときに呼び出すコールバックを設定
 
template<typename F , typename std::enable_if_t< std::is_invocable_v< F >, std::nullptr_t > = nullptr>
Promise & onReach (F callback)
 リモートに呼び出しメッセージが到達したときに呼び出すコールバックを設定
 
Promise & onFinish (std::function< void(Promise)> callback)
 関数の実行が完了した時呼び出すコールバックを設定
 
template<typename F , typename std::enable_if_t< std::is_invocable_v< F >, std::nullptr_t > = nullptr>
Promise & onFinish (F callback)
 関数の実行が完了した時呼び出すコールバックを設定
 
template<typename Member_ = Member, bool = ::webcface::traits::assertCompleteMember < std::enable_if_t<std::is_same_v< Member_, Member >, Member_>>()>
Member_ member () const
 Memberを返す
 
StringView name () const
 field名を返す
 
WStringView nameW () const
 field名を返す (wstring)
 

Detailed Description

非同期で実行した関数の実行結果を取得するインタフェース。

ver1.11まではAsyncFuncResult、ver2.0からPromiseに名前変更

Constructor & Destructor Documentation

◆ Promise()

Promise ( const Field &  base,
const std::shared_ptr< internal::PromiseData > &  data 
)

Member Function Documentation

◆ finished()

bool finished ( ) const

関数の実行が完了したかどうかを返す

Since
ver2.0

finishedがtrueの場合、 response() または rejection() (rejectionW()) のどちらかに結果が入る。

◆ found()

bool found ( ) const

呼び出した関数がリモートに存在するか(=実行が開始されたか)を返す

Since
ver2.0
  • trueの場合、関数の実行が開始されている(はず)。
  • 関数がリモートに存在しないなど呼び出しが失敗した場合falseを返し、 また finished() はtrue, rejection() もエラーメッセージを返す。
  • まだリモートに呼び出しメッセージが到達していない場合にもfalseを返す。 この場合 reached() がfalse, また finished() もfalse。

◆ isError()

bool isError ( ) const

関数がエラーになったかどうかを返す

Since
ver2.0
  • trueの場合、rejection()にエラーメッセージが入る。
  • 実行が完了していてfalseの場合は、 response()に戻り値が入る。
  • まだ実行が完了していない場合falseを返す。

◆ member()

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

Memberを返す

◆ name()

StringView name ( ) const
inline

field名を返す

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

◆ nameW()

WStringView nameW ( ) const
inline

field名を返す (wstring)

Since
ver2.0

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

◆ onFinish() [1/2]

template<typename F , typename std::enable_if_t< std::is_invocable_v< F >, std::nullptr_t > = nullptr>
Promise & onFinish ( F  callback)
inline

関数の実行が完了した時呼び出すコールバックを設定

Since
ver2.0
  • コールバックの引数にはこのPromiseオブジェクトが渡される。
  • コールバックは Client::sync() のスレッドで実行され、 この関数が完了するまで他のデータの受信処理はブロックされる。
  • すでにfinished()がtrueの場合はこのスレッドで即座にcallbackが呼ばれる。
Parameters
callback引数をとらない関数

◆ onFinish() [2/2]

Promise & onFinish ( std::function< void(Promise)>  callback)

関数の実行が完了した時呼び出すコールバックを設定

Since
ver2.0
  • コールバックの引数にはこのPromiseオブジェクトが渡される。
  • コールバックは Client::sync() のスレッドで実行され、 この関数が完了するまで他のデータの受信処理はブロックされる。
  • すでにfinished()がtrueの場合はこのスレッドで即座にcallbackが呼ばれる。
Parameters
callback引数にPromiseをとる関数

◆ onReach() [1/2]

template<typename F , typename std::enable_if_t< std::is_invocable_v< F >, std::nullptr_t > = nullptr>
Promise & onReach ( F  callback)
inline

リモートに呼び出しメッセージが到達したときに呼び出すコールバックを設定

Since
ver2.0
  • コールバックは Client::sync() のスレッドで実行され、 この関数が完了するまで他のデータの受信処理はブロックされる。
  • すでにreached()がtrueの場合はこのスレッドで即座にcallbackが呼ばれる。
Parameters
callback引数をとらない関数

◆ onReach() [2/2]

Promise & onReach ( std::function< void(Promise)>  callback)

リモートに呼び出しメッセージが到達したときに呼び出すコールバックを設定

Since
ver2.0
  • コールバックの引数にはこのPromiseオブジェクトが渡される。
  • コールバックは Client::sync() のスレッドで実行され、 この関数が完了するまで他のデータの受信処理はブロックされる。
  • すでにreached()がtrueの場合はこのスレッドで即座にcallbackが呼ばれる。
Parameters
callback引数にPromiseをとる関数

◆ reached()

bool reached ( ) const

リモートに呼び出しメッセージが到達したかどうかを返す

Since
ver2.0

◆ rejection()

StringView rejection ( ) const

関数の実行がエラーになった場合そのエラーメッセージを返す

Since
ver2.0

ver3.0〜 StringView型に変更

◆ rejectionW()

WStringView rejectionW ( ) const

関数の実行がエラーになった場合そのエラーメッセージを返す (wstring)

Since
ver2.0
See also
rejection()

ver3.0〜 WStringView型に変更

◆ response()

ValAdaptorVector response ( ) const

関数の実行が完了した場合その戻り値を返す

Since
ver2.0

ver3.0〜 ValAdptorVectorに変更

◆ waitFinish()

Promise & waitFinish ( )
inline

関数の実行が完了するまで待機

Since
ver2.0
  • finished() がtrueになるまで待機する。
  • onFinished にコールバックが設定されている場合そのコールバックの完了も待機する。
  • Client::sync() を呼ぶのとは別のスレッドで使用することを想定している。 関数実行が完了したかどうかの情報の受信は Client::sync() で行われるため、 この関数を使用して待機している間に Client::sync() が呼ばれていないとデッドロックしてしまうので注意。
See also
waitFinishFor(), waitFinishUntil(), onFinished()

◆ waitFinishFor()

Promise & waitFinishFor ( std::chrono::microseconds  timeout)
inline

関数の実行が完了するまで待機

Since
ver2.0
  • waitFinish()と同じだが、timeoutが経過したらreturnする。
See also
waitFinish(), waitFinishUntil(), onFinished()

◆ waitFinishUntil()

template<typename Clock , typename Duration >
Promise & waitFinishUntil ( std::chrono::time_point< Clock, Duration >  timeout)
inline

関数の実行が完了するまで待機

Since
ver2.0
  • waitFinish()と同じだが、timeoutが経過したらreturnする。
See also
waitFinish(), waitFinishFor(), onFinished()

◆ waitReach()

Promise & waitReach ( )
inline

リモートに呼び出しメッセージが到達するまで待機

Since
ver2.0
  • reached() がtrueになるまで待機する。
  • onReached にコールバックが設定されている場合そのコールバックの完了も待機する。
  • Client::sync() を呼ぶのとは別のスレッドで使用することを想定している。 呼び出しが成功したかどうかの情報の受信は Client::sync() で行われるため、 この関数を使用して待機している間に Client::sync() が呼ばれていないとデッドロックしてしまうので注意。
See also
waitReachFor(), waitReachUntil(), onReached()

◆ waitReachFor()

Promise & waitReachFor ( std::chrono::microseconds  timeout)
inline

リモートに呼び出しメッセージが到達するまで待機

Since
ver2.0
  • waitReach()と同じだが、timeoutが経過したらreturnする。
See also
waitReach(), waitReachUntil(), onReached()

◆ waitReachUntil()

template<typename Clock , typename Duration >
Promise & waitReachUntil ( std::chrono::time_point< Clock, Duration >  timeout)
inline

リモートに呼び出しメッセージが到達するまで待機

Since
ver2.0
  • waitReach()と同じだが、timeoutが経過したらreturnする。
See also
waitReach(), waitReachFor(), onReached()

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