ITarget クラス
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;