ITarget クラスは、すべてのターゲット ブロックのインターフェイスです。 ターゲット ブロックは、ISource ブロックから提供されたメッセージを処理します。
構文
template<class T>
class ITarget;
パラメーター
T
ターゲットブロックによって受け入れられるメッセージ内のペイロードのデータ型。
メンバー
パブリック typedef
| 名前 | 説明 |
|---|---|
filter_method |
提供されたメッセージを受け入れる必要があるかどうかを判断するために bool 値を返す、ブロックによって使用されるメソッドのシグネチャ。 |
type |
T の型エイリアス。 |
パブリック コンストラクター
| 名前 | 説明 |
|---|---|
| ~ITarget Destructor | ITarget オブジェクトを破棄します。 |
パブリック メソッド
| 名前 | 説明 |
|---|---|
| propagate | 派生クラスでオーバーライドされた場合、このソース ブロックからこの ターゲット ブロックにメッセージを非同期的に渡します。 |
| send | 派生クラスでオーバーライドされた場合、この ターゲット ブロックにメッセージを非同期的に渡します。 |
| supports_anonymous_source | 派生クラスでオーバーライドされると、リンクされていないソースによって提供されるメッセージをメッセージブロックが受け入れるかどうかに応じて、True または False を返します。 オーバーライドされたメソッドが true を返す場合、提供されたメッセージをターゲットが延期することはできません。延期されたメッセージを後で使用する場合は、ソース リンク レジストリでソースを識別する必要があります。 |
保護メソッド
| 名前 | 説明 |
|---|---|
| link_source | 派生クラスでオーバーライドされると、指定されたソース ブロックをこの ITarget ブロックにリンクします。 |
| unlink_source | 派生クラスでオーバーライドされると、指定されたソース ブロックとこの ITarget ブロックとのリンクを解除します。 |
| unlink_sources | 派生クラスでオーバーライドされると、指定されたソース ブロックすべてとこの ITarget ブロックとのリンクを解除します。 |
解説
詳細については、「非同期メッセージ ブロック」を参照してください。
継承階層
ITarget
要件
ヘッダー: agents.h
名前空間: concurrency
~ITarget
ITarget オブジェクトを破棄します。
virtual ~ITarget();
link_source
派生クラスでオーバーライドされると、指定されたソース ブロックをこの ITarget ブロックにリンクします。
virtual void link_source(_Inout_ ISource<T>* _PSource) = 0;
パラメーター
_PSource
この ITarget ブロックにリンクされている ISource ブロック。
解説
この関数は、ITarget ブロックで直接呼び出すことはできません。 ブロックは、ISource ブロックで link_target メソッドを使用して一緒に接続する必要があります。これにより、対応するターゲットで link_source メソッドが呼び出されます。
propagate
派生クラスでオーバーライドされた場合、このソース ブロックからこの ターゲット ブロックにメッセージを非同期的に渡します。
virtual message_status propagate(
_Inout_opt_ message<T>* _PMessage,
_Inout_opt_ ISource<T>* _PSource) = 0;
パラメーター
_PMessage
message オブジェクトを指すポインター。
_PSource
メッセージを提供するソース ブロックへのポインター。
戻り値
ターゲットがメッセージをどのように処理したのかを示す message_status。
解説
_PMessage パラメーターまたは _PSource パラメーターのいずれかが NULL の場合、メソッドは invalid_argument 例外をスローします。
[Send]
派生クラスでオーバーライドされた場合、この ターゲット ブロックにメッセージを非同期的に渡します。
virtual message_status send(
_Inout_ message<T>* _PMessage,
_Inout_ ISource<T>* _PSource) = 0;
パラメーター
_PMessage
message オブジェクトを指すポインター。
_PSource
メッセージを提供するソース ブロックへのポインター。
戻り値
ターゲットがメッセージをどのように処理したのかを示す message_status。
解説
_PMessage パラメーターまたは _PSource パラメーターのいずれかが NULL の場合、メソッドは invalid_argument 例外をスローします。
メッセージの開始時以外に send メソッドを使用し、ネットワーク内でメッセージを伝達することは危険であり、デッドロックにつながる可能性があります。
send が返された場合、メッセージは既に受け取られていて、ターゲット ブロックに転送されているか、ターゲットによって拒否されています。
supports_anonymous_source
派生クラスでオーバーライドされると、リンクされていないソースによって提供されるメッセージをメッセージブロックが受け入れるかどうかに応じて、True または False を返します。 オーバーライドされたメソッドが true を返す場合、提供されたメッセージをターゲットが延期することはできません。延期されたメッセージを後で使用する場合は、ソース リンク レジストリでソースを識別する必要があります。
virtual bool supports_anonymous_source();
戻り値
リンクされていないソースからのメッセージをブロックが受け入れることができる場合は true を返します。それ以外の場合は false を返します。
unlink_source
派生クラスでオーバーライドされると、指定されたソース ブロックとこの ITarget ブロックとのリンクを解除します。
virtual void unlink_source(_Inout_ ISource<T>* _PSource) = 0;
パラメーター
_PSource
この ITarget ブロックからリンク解除されている ISource ブロック。
解説
この関数は、ITarget ブロックで直接呼び出すことはできません。 ブロックは、 ISource ブロックで unlink_target メソッドまたは unlink_targets メソッドを使用して接続を遮断する必要があります。これにより、対応するターゲットで unlink_source メソッドが呼び出されます。
unlink_sources
派生クラスでオーバーライドされると、指定されたソース ブロックすべてとこの ITarget ブロックとのリンクを解除します。
virtual void unlink_sources() = 0;