WebCFace 2.9.0
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
 関数の実行が完了した場合その戻り値を返す
 
StringView rejection () const
 関数の実行がエラーになった場合そのエラーメッセージを返す
 
WStringView 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)
 関数の実行が完了した時呼び出すコールバックを設定
 
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)
 

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

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名を返す

ver2.10〜 std::stringの参照から StringView に変更

◆ nameW()

WStringView nameW ( ) const
inline

field名を返す (wstring)

Since
ver2.0

ver2.10〜 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 ( 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()

StringView rejection ( ) const

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

Since
ver2.0

ver2.10〜 StringView型に変更

◆ rejectionW()

WStringView rejectionW ( ) const

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

Since
ver2.0
See also
rejection()

ver2.10〜 WStringView型に変更

◆ 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: