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 指標。

傳回值

呼叫端現在擁有其擁有權之訊息的指標。

備註

acceptISource 區塊提供訊息時,目標會呼叫 方法。 如果此來源決定建立訊息複本,傳回的 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 ,但之前一律必須有傳回 truereserve 呼叫。

~ISource

ISource終結 物件。

virtual ~ISource();

在衍生類別中覆寫時,將目標區塊連結至此 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 之後,如果成功,您必須呼叫 consumerelease ,才能分別取得或放棄訊息的擁有權。

在衍生類別中覆寫時,如果發現先前已連結,請取消連結此 ISource 區塊的目標區塊。

virtual void unlink_target(_Inout_ ITarget<T>* _PTarget) = 0;

參數

_PTarget
要從這個 ISource 區塊取消連結之目標區塊的指標。

在衍生類別中覆寫時,從這個 ISource 區塊取消連結所有目標區塊。

virtual void unlink_targets() = 0;

另請參閱

concurrency 命名空間
ITarget 類別