ISource 類別
ISource
類別是所有來源區塊的介面。 來源區塊會將訊息傳播至 ITarget
區塊。
語法
template<class T>
class ISource;
參數
T
來源區塊所產生的訊息中承載的數據類型。
成員
公用 Typedefs
名稱 | 描述 |
---|---|
source_type |
的類型 T 別名。 |
公用建構函式
名稱 | 描述 |
---|---|
~ISource 解構函式 | ISource 終結物件。 |
公用方法
名稱 | 描述 |
---|---|
接受 | 在衍生類別中覆寫時,接受此 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
runtime_object_identity
提供物件message
的 。
_PTarget
呼叫 方法之目標區塊的 accept
指標。
傳回值
呼叫端現在擁有其擁有權之訊息的指標。
備註
當 accept
此 ISource
區塊提供訊息時,目標會呼叫 方法。 如果此來源決定建立訊息複本,傳回的ITarget
訊息指標可能與傳入propagate
區塊方法的指標不同。
acquire_ref
在衍生類別中覆寫時,取得此 ISource
區塊的參考計數,以防止刪除。
virtual void acquire_ref(_Inout_ ITarget<T>* _PTarget) = 0;
參數
_PTarget
呼叫這個方法之目標區塊的指標。
備註
這個方法是由 ITarget
在 方法期間 link_target
連結至這個來源的物件所呼叫。
消耗
在衍生類別中覆寫時,取用此 ISource
區塊先前提供的訊息,並成功由目標保留,並將擁有權轉移給呼叫端。
virtual message<T>* consume(
runtime_object_identity _MsgId,
_Inout_ ITarget<T>* _PTarget) = 0;
參數
_MsgId
runtime_object_identity
保留message
物件的 。
_PTarget
呼叫 方法之目標區塊的 consume
指標。
傳回值
呼叫端現在擁有其擁有權的物件指標 message
。
備註
方法consume
類似於 accept
,但之前一律必須有傳回true
的 reserve
呼叫。
~ISource
ISource
終結物件。
virtual ~ISource();
link_target
在衍生類別中覆寫時,將目標區塊鏈接至此 ISource
區塊。
virtual void link_target(_Inout_ ITarget<T>* _PTarget) = 0;
參數
_PTarget
連結至此 ISource
區塊之目標區塊的指標。
版本
在衍生類別中覆寫時,釋放先前成功的訊息保留。
virtual void release(
runtime_object_identity _MsgId,
_Inout_ ITarget<T>* _PTarget) = 0;
參數
_MsgId
runtime_object_identity
保留message
物件的 。
_PTarget
呼叫 方法之目標區塊的 release
指標。
release_ref
在衍生類別中覆寫時,釋放此 ISource
區塊的參考計數。
virtual void release_ref(_Inout_ ITarget<T>* _PTarget) = 0;
參數
_PTarget
呼叫這個方法之目標區塊的指標。
備註
這個方法是由 ITarget
從這個來源取消連結的物件所呼叫。 允許來源區塊釋放保留給目標區塊的任何資源。
reserve
在衍生類別中覆寫時,保留此 ISource
區塊先前提供的訊息。
virtual bool reserve(
runtime_object_identity _MsgId,
_Inout_ ITarget<T>* _PTarget) = 0;
參數
_MsgId
runtime_object_identity
提供物件message
的 。
_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;