ISource クラス
ISource
クラスは、すべてのソース ブロック用のインターフェイスです。 ソース ブロックは、メッセージを ITarget
ブロックに伝達します。
構文
template<class T>
class ISource;
パラメーター
T
ソース ブロックによって生成されるメッセージ内のペイロードのデータ型。
メンバー
パブリック typedef
名前 | 説明 |
---|---|
source_type |
T の型エイリアス。 |
パブリック コンストラクター
名前 | 説明 |
---|---|
~ISource デストラクター | ISource オブジェクトを破棄します。 |
パブリック メソッド
名前 | 説明 |
---|---|
accept | 派生クラスでオーバーライドされると、この ISource ブロックから提供されたメッセージを受け入れ、所有権を呼び出し元に譲渡します。 |
acquire_ref | 派生クラスでオーバーライドされると、削除を防ぐために、この ISource ブロックの参照数を取得します。 |
使用 | 派生クラスでオーバーライドされると、この ISource ブロックから過去に提供され、ターゲットによって正常に予約されているメッセージを使用して、所有権を呼び出し元に譲渡します。 |
link_target | 派生クラスでオーバーライドされると、ターゲット ブロックをこの ISource ブロックにリンクします。 |
release | 派生クラスでオーバーライドされると、以前に成功したメッセージ予約を解放します。 |
release_ref | 派生クラスでオーバーライドされると、この ISource ブロックの参照数を解放します。 |
reserve | 派生クラスでオーバーライドされると、この ISource ブロックによって以前に提供されたメッセージを予約します。 |
unlink_target | 派生クラスでオーバーライドされると、以前にリンクされていたことがわかった場合は、この ISource ブロックからターゲット ブロックのリンクを解除します。 |
unlink_targets | 派生クラスでオーバーライドされると、この ISource ブロックからすべてのターゲット ブロックのリンクを解除します。 |
解説
詳細については、「非同期メッセージ ブロック」を参照してください。
継承階層
ISource
要件
ヘッダー: agents.h
名前空間: concurrency
accept
派生クラスでオーバーライドされると、この ISource
ブロックから提供されたメッセージを受け入れ、所有権を呼び出し元に譲渡します。
virtual message<T>* accept(
runtime_object_identity _MsgId,
_Inout_ ITarget<T>* _PTarget) = 0;
パラメーター
_MsgId
提供された message
オブジェクトの runtime_object_identity
。
_PTarget
accept
メソッドを呼び出しているターゲット ブロックへのポインター。
戻り値
現在呼び出し元が所有権を持っているメッセージへのポインター。
解説
この ISource
ブロックによってメッセージが提供されている間に、accept
メソッドがターゲットによって呼び出されます。 このソースがメッセージのコピーを作成する場合、返されるメッセージ ポインターは、ITarget
ブロックの propagate
メソッドに渡されるメッセージ ポインターとは異なる場合があります。
acquire_ref
派生クラスでオーバーライドされると、削除を防ぐために、この ISource
ブロックの参照数を取得します。
virtual void acquire_ref(_Inout_ ITarget<T>* _PTarget) = 0;
パラメーター
_PTarget
このメソッドを呼び出しているターゲット ブロックへのポインター。
解説
このメソッドは、link_target
メソッドの実行中にこのソースにリンクされる ITarget
オブジェクトによって呼び出されます。
消費
派生クラスでオーバーライドされると、この ISource
ブロックから過去に提供され、ターゲットによって正常に予約されているメッセージを使用して、所有権を呼び出し元に譲渡します。
virtual message<T>* consume(
runtime_object_identity _MsgId,
_Inout_ ITarget<T>* _PTarget) = 0;
パラメーター
_MsgId
予約された message
オブジェクトの runtime_object_identity
。
_PTarget
consume
メソッドを呼び出しているターゲット ブロックへのポインター。
戻り値
現在呼び出し元が所有権を持っている message
オブジェクトへのポインター。
解説
consume
メソッドは accept
に似ていますが、必ず、このメソッドの前に reserve
の呼び出しで true
が返されている必要があります。
~ISource
ISource
オブジェクトを破棄します。
virtual ~ISource();
link_target
派生クラスでオーバーライドされると、ターゲット ブロックをこの ISource
ブロックにリンクします。
virtual void link_target(_Inout_ ITarget<T>* _PTarget) = 0;
パラメーター
_PTarget
この ISource
ブロックにリンクされているターゲット ブロックへのポインター。
release
派生クラスでオーバーライドされると、以前に成功したメッセージ予約を解放します。
virtual void release(
runtime_object_identity _MsgId,
_Inout_ ITarget<T>* _PTarget) = 0;
パラメーター
_MsgId
予約された message
オブジェクトの runtime_object_identity
。
_PTarget
release
メソッドを呼び出しているターゲット ブロックへのポインター。
release_ref
派生クラスでオーバーライドされると、この ISource
ブロックの参照数を解放します。
virtual void release_ref(_Inout_ ITarget<T>* _PTarget) = 0;
パラメーター
_PTarget
このメソッドを呼び出しているターゲット ブロックへのポインター。
解説
このメソッドは、このソースからリンク解除されている ITarget
オブジェクトによって呼び出されます。 ソース ブロックは、ターゲット ブロック用に予約されたすべてのリソースを解放できます。
予約
派生クラスでオーバーライドされると、この ISource
ブロックによって以前に提供されたメッセージを予約します。
virtual bool reserve(
runtime_object_identity _MsgId,
_Inout_ ITarget<T>* _PTarget) = 0;
パラメーター
_MsgId
提供された message
オブジェクトの runtime_object_identity
。
_PTarget
reserve
メソッドを呼び出しているターゲット ブロックへのポインター。
戻り値
メッセージが正常に予約された場合は true
、それ以外の場合は false
。 予約は、さまざまな理由で失敗する可能性があります。たとえば、メッセージが別のターゲットによって既に予約されているか受け入れられている場合や、ソースが予約を拒否できる場合などです。
解説
reserve
を呼び出し、それが成功したら、consume
または release
のどちらかを呼び出して、メッセージの所有権を取得または放棄する必要があります。
unlink_target
派生クラスでオーバーライドされると、以前にリンクされていたことがわかった場合は、この ISource
ブロックからターゲット ブロックのリンクを解除します。
virtual void unlink_target(_Inout_ ITarget<T>* _PTarget) = 0;
パラメーター
_PTarget
この ISource
ブロックからリンクを解除されているターゲット ブロックへのポインター。
unlink_targets
派生クラスでオーバーライドされると、この ISource
ブロックからすべてのターゲット ブロックのリンクを解除します。
virtual void unlink_targets() = 0;