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 をオーバーライドします。) |
解説
詳細については、「非同期メッセージ ブロック」を参照してください。
継承階層
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
です。