次の方法で共有


call クラス

call メッセージング ブロックは、複数のソースを持つ、順序付けられた target_block であり、メッセージを受け取ったときに指定された関数を呼び出します。

構文

template<class T, class _FunctorType = std::function<void(T const&)>>
class call : public target_block<multi_link_registry<ISource<T>>>;

パラメーター

T
このブロックに伝達されるメッセージのペイロードの型。

_FunctorType
このブロックが受け入れることができる関数のシグネチャ。

メンバー

パブリック コンストラクター

名前 説明
call 過負荷です。 call メッセージング ブロックを構築します。
~call デストラクター call メッセージング ブロックを破棄します。

保護メソッド

名前 説明
process_input_messages 入力メッセージに対して call 関数を実行します。
process_message この call メッセージング ブロックで受け入れられたメッセージを処理します。
propagate_message ISource ブロックからこの call メッセージング ブロックにメッセージを非同期的に渡します。 ソース ブロックによって呼び出されると、propagate メソッドによって呼び出されます。
send_message ISource ブロックからこの call メッセージング ブロックにメッセージを同期的に渡します。 ソース ブロックによって呼び出されると、send メソッドによって呼び出されます。
supports_anonymous_source supports_anonymous_source メソッドをオーバーライドして、リンクされていないソースから提供されたメッセージをこのブロックが受け入れることができることを示します。 (ITarget::supports_anonymous_source をオーバーライドします。)

解説

詳細については、「非同期メッセージ ブロック」を参照してください。

継承階層

ITarget

target_block

call

要件

ヘッダー: agents.h

名前空間: concurrency

call

call メッセージング ブロックを構築します。

call(
    _Call_method const& _Func);

call(
    _Call_method const& _Func,
    filter_method const& _Filter);

call(
    Scheduler& _PScheduler,
    _Call_method const& _Func);

call(
    Scheduler& _PScheduler,
    _Call_method const& _Func,
    filter_method const& _Filter);

call(
    ScheduleGroup& _PScheduleGroup,
    _Call_method const& _Func);

call(
    ScheduleGroup& _PScheduleGroup,
    _Call_method const& _Func,
    filter_method const& _Filter);

パラメーター

_Func
受け入れられた各メッセージに対して呼び出される関数。

_Filter
提供されたメッセージを受け入れるかどうかを決定するフィルター関数。

_PScheduler
その内部で Scheduler メッセージング ブロックの反映タスクがスケジュールされる call オブジェクト。

_PScheduleGroup
その内部で ScheduleGroup メッセージング ブロックの反映タスクがスケジュールされる call オブジェクト。 使用される Scheduler オブジェクトは、スケジュール グループによって暗黙的に指定されます。

解説

_PScheduler または _PScheduleGroup パラメーターを指定しない場合、ランタイムは既定のスケジューラを使用しています。

_Call_method 型は、メッセージを処理するためにこの call メッセージング ブロックによって呼び出される、シグネチャ void (T const &) を持つファンクタです。

filter_method 型は、提供されたメッセージを受け入れるかどうかを決定するためにこの call メッセージング ブロックによって呼び出される、シグネチャ bool (T const &) を持つファンクタです。

~呼び出し

call メッセージング ブロックを破棄します。

~call();

process_input_messages

入力メッセージに対して call 関数を実行します。

virtual void process_input_messages(_Inout_ message<T>* _PMessage);

パラメーター

_PMessage
処理するメッセージへのポインター。

process_message

この call メッセージング ブロックで受け入れられたメッセージを処理します。

virtual void process_message(_Inout_ message<T>* _PMessage);

パラメーター

_PMessage
処理するメッセージへのポインター。

propagate_message

ISource ブロックからこの call メッセージング ブロックにメッセージを非同期的に渡します。 ソース ブロックによって呼び出されると、propagate メソッドによって呼び出されます。

virtual message_status propagate_message(
    _Inout_ message<T>* _PMessage,
    _Inout_ ISource<T>* _PSource);

パラメーター

_PMessage
message オブジェクトを指すポインター。

_PSource
メッセージを提供するソース ブロックへのポインター。

戻り値

ターゲットがメッセージをどのように処理したのかを示す message_status

send_message

ISource ブロックからこの call メッセージング ブロックにメッセージを同期的に渡します。 ソース ブロックによって呼び出されると、send メソッドによって呼び出されます。

virtual message_status send_message(
    _Inout_ message<T>* _PMessage,
    _Inout_ ISource<T>* _PSource);

パラメーター

_PMessage
message オブジェクトを指すポインター。

_PSource
メッセージを提供するソース ブロックへのポインター。

戻り値

ターゲットがメッセージをどのように処理したのかを示す message_status

supports_anonymous_source

supports_anonymous_source メソッドをオーバーライドして、リンクされていないソースから提供されたメッセージをこのブロックが受け入れることができることを示します。

virtual bool supports_anonymous_source();

戻り値

ブロックは提供されたメッセージを延期しないため、true です。

関連項目

コンカレンシー名前空間
transformer クラス