次の方法で共有


ITarget クラス

ITarget クラスは、すべてのターゲット ブロックのインターフェイスです。 ターゲット ブロックは、ISource ブロックから提供されたメッセージを処理します。

構文

template<class T>
class ITarget;

パラメーター

T
ターゲットブロックによって受け入れられるメッセージ内のペイロードのデータ型。

メンバー

パブリックTypedefs

名前 説明
filter_method 提供されたメッセージを受け入れる必要があるかどうかを判断するために bool 値を返す、ブロックによって使用されるメソッドのシグネチャ。
type T に対する型エイリアス。

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

名前 説明
~ITarget デストラクター ITarget オブジェクトを破棄します。

パブリック メソッド

名前 説明
伝播する 派生クラスでオーバーライドされた場合、このソース ブロックからこの ターゲット ブロックにメッセージを非同期的に渡します。
send 派生クラスでオーバーライドされた場合、この ターゲット ブロックにメッセージを非同期的に渡します。
匿名ソースをサポートする 派生クラスでオーバーライドされると、リンクされていないソースによって提供されるメッセージをメッセージブロックが受け入れるかどうかに応じて、True または False を返します。 オーバーライドされたメソッドが true を返す場合、提供されたメッセージをターゲットが延期することはできません。延期されたメッセージを後で使用する場合は、ソース リンク レジストリでソースを識別する必要があります。

保護メソッド

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

解説

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

継承階層

ITarget

要件

ヘッダー: agents.h

名前空間: concurrency

~ITarget

ITarget オブジェクトを破棄します。

virtual ~ITarget();

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

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

パラメーター

_PSource
この ISource ブロックにリンクされている ITarget ブロック。

解説

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

伝播する

派生クラスでオーバーライドされた場合、このソース ブロックからこの ターゲット ブロックにメッセージを非同期的に渡します。

virtual message_status propagate(
    _Inout_opt_ message<T>* _PMessage,
    _Inout_opt_ ISource<T>* _PSource) = 0;

パラメーター

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

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

戻り値

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

解説

または パラメーターのいずれかが の場合、メソッドは 例外をスローします。

送信

派生クラスでオーバーライドされた場合、この ターゲット ブロックにメッセージを非同期的に渡します。

virtual message_status send(
    _Inout_ message<T>* _PMessage,
    _Inout_ ISource<T>* _PSource) = 0;

パラメーター

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

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

戻り値

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

解説

または _PMessage のパラメーターが _PSource なら、invalid_argument 例外をメソッドはスローします。

メッセージの開始時以外に send メソッドを使用し、ネットワーク内でメッセージを伝達することは危険であり、デッドロックにつながる可能性があります。

send が返された場合、メッセージは既に受け取られていて、ターゲット ブロックに転送されているか、ターゲットによって拒否されています。

匿名のソースをサポートしている

派生クラスでオーバーライドされると、リンクされていないソースによって提供されるメッセージをメッセージブロックが受け入れるかどうかに応じて、True または False を返します。 オーバーライドされたメソッドが true を返す場合、提供されたメッセージをターゲットが延期することはできません。延期されたメッセージを後で使用する場合は、ソース リンク レジストリでソースを識別する必要があります。

virtual bool supports_anonymous_source();

戻り値

リンクされていないソースからのメッセージをブロックが受け入れることができる場合は true を返します。それ以外の場合は false を返します。

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

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

パラメーター

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

解説

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

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

virtual void unlink_sources() = 0;

関連項目

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