WebCFace 2.5.2
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, const std::shared_future< bool > &started, const std::shared_future< ValAdaptor > &result)
 
bool reached () const
 リモートに呼び出しメッセージが到達したかどうかを返す
 
bool found () const
 呼び出した関数がリモートに存在するか(=実行が開始されたか)を返す
 
PromisewaitReach ()
 リモートに呼び出しメッセージが到達するまで待機
 
PromisewaitReachFor (std::chrono::microseconds timeout)
 リモートに呼び出しメッセージが到達するまで待機
 
template<typename Clock , typename Duration >
PromisewaitReachUntil (std::chrono::time_point< Clock, Duration > timeout)
 リモートに呼び出しメッセージが到達するまで待機
 
bool finished () const
 関数の実行が完了したかどうかを返す
 
bool isError () const
 関数がエラーになったかどうかを返す
 
ValAdaptor response () const
 関数の実行が完了した場合その戻り値を返す
 
const std::string & rejection () const
 関数の実行がエラーになった場合そのエラーメッセージを返す
 
const std::wstring & rejectionW () const
 関数の実行がエラーになった場合そのエラーメッセージを返す (wstring)
 
PromisewaitFinish ()
 関数の実行が完了するまで待機
 
PromisewaitFinishFor (std::chrono::microseconds timeout)
 関数の実行が完了するまで待機
 
template<typename Clock , typename Duration >
PromisewaitFinishUntil (std::chrono::time_point< Clock, Duration > timeout)
 関数の実行が完了するまで待機
 
PromiseonReach (std::function< void(Promise)> callback)
 リモートに呼び出しメッセージが到達したときに呼び出すコールバックを設定
 
template<typename F , typename std::enable_if_t< std::is_invocable_v< F >, std::nullptr_t > = nullptr>
PromiseonReach (F callback)
 リモートに呼び出しメッセージが到達したときに呼び出すコールバックを設定
 
PromiseonFinish (std::function< void(Promise)> callback)
 関数の実行が完了した時呼び出すコールバックを設定
 
template<typename F , typename std::enable_if_t< std::is_invocable_v< F >, std::nullptr_t > = nullptr>
PromiseonFinish (F callback)
 関数の実行が完了した時呼び出すコールバックを設定
 
Member member () const
 Memberを返す
 
const std::string & name () const
 field名を返す
 
const std::wstring & nameW () const
 field名を返す (wstring)
 

Public Attributes

std::shared_future< bool > started
 リモートに呼び出しメッセージが到達したときに値が入る
 
std::shared_future< ValAdaptorresult
 関数の実行が完了した時戻り値が入る
 

Detailed Description

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

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

Constructor & Destructor Documentation

◆ Promise()

Promise ( const Field base,
const std::shared_ptr< internal::PromiseData > &  data,
const std::shared_future< bool > &  started,
const std::shared_future< ValAdaptor > &  result 
)

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()

Member member ( ) const

Memberを返す

◆ name()

const std::string & name ( ) const
inline

field名を返す

◆ nameW()

const std::wstring & nameW ( ) const
inline

field名を返す (wstring)

Since
ver2.0

◆ onFinish() [1/2]

template<typename F , typename std::enable_if_t< std::is_invocable_v< F >, std::nullptr_t > = nullptr>
Promise & onFinish ( 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 ( 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()

const std::string & rejection ( ) const

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

Since
ver2.0

◆ rejectionW()

const std::wstring & rejectionW ( ) const

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

Since
ver2.0
See also
rejection()

◆ response()

ValAdaptor response ( ) const

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

Since
ver2.0

◆ 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()

Member Data Documentation

◆ result

std::shared_future<ValAdaptor> result

関数の実行が完了した時戻り値が入る

  • 例外が発生した場合例外が入る
  • ver2.0〜: 例外はresultにexceptionとして格納されるが、 そのエラーメッセージにはutf-8ではないstringが使われる

    Deprecated:
    ver2.0〜 finished(), response(), rejection(), waitFinish() を推奨。 result.get(), result.wait() 使用時の注意はwaitFinish()を参照。

◆ started

std::shared_future<bool> started

リモートに呼び出しメッセージが到達したときに値が入る

  • 実行開始したらtrue, 呼び出しに失敗したらfalseが返る。 falseの場合resultにFuncNotFound例外が入る

    Deprecated:
    ver2.0〜 reached(), found(), waitReach() を推奨。 started.get(), started.wait() 使用時の注意はwaitReach()を参照。

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