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

派生クラスでオーバーライドされると、指定されたソース ブロックをこの 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 を返します。

派生クラスでオーバーライドされると、指定されたソース ブロックとこの ITarget ブロックとのリンクを解除します。

virtual void unlink_source(_Inout_ ISource<T>* _PSource) = 0;

パラメーター

_PSource
この ITarget ブロックからリンク解除されている ISource ブロック。

解説

この関数は、ITarget ブロックで直接呼び出すことはできません。 ブロックは、 ISource ブロックで unlink_target メソッドまたは unlink_targets メソッドを使用して接続を遮断する必要があります。これにより、対応するターゲットで unlink_source メソッドが呼び出されます。

派生クラスでオーバーライドされると、指定されたソース ブロックすべてとこの ITarget ブロックとのリンクを解除します。

virtual void unlink_sources() = 0;

関連項目

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