ITarget 類別
ITarget
類別是所有目標區塊的介面。 目標區塊會使用 ISource
區塊提供給它們的訊息。
語法
template<class T>
class ITarget;
參數
T
目標區塊所接受之訊息內的承載數據類型。
成員
公用 Typedefs
名稱 | 描述 |
---|---|
filter_method |
區塊使用之任何方法的簽章,這個方法會傳回 bool 值,以判斷是否應該接受提供的訊息。 |
type |
的類型 T 別名。 |
公用建構函式
名稱 | 描述 |
---|---|
~ITarget 解構函式 | ITarget 終結物件。 |
公用方法
名稱 | 描述 |
---|---|
傳播 | 在衍生類別中覆寫時,以異步方式將訊息從來源區塊傳遞至此目標區塊。 |
傳送 | 在衍生類別中覆寫時,以同步方式將訊息傳遞至目標區塊。 |
supports_anonymous_source | 在衍生類別中覆寫時,會根據訊息區塊是否會接受未與它連結的來源所提供的訊息傳回 true 或 false。 如果覆寫的方法傳 true 回 ,則目標無法延後提供的訊息,因為稍後延遲的訊息耗用量需要在其來源連結登錄中識別來源。 |
受保護的方法
名稱 | 描述 |
---|---|
link_source | 在衍生類別中覆寫時,會將指定的來源區塊鏈接至這個 ITarget 區塊。 |
unlink_source | 在衍生類別中覆寫時,從這個 ITarget 區塊取消連結指定的來源區塊。 |
unlink_sources | 在衍生類別中覆寫時,從這個 ITarget 區塊取消連結所有來源區塊。 |
備註
如需詳細資訊,請參閱 異步消息塊。
繼承階層架構
ITarget
需求
標頭: agents.h
命名空間: concurrency
~ITarget
ITarget
終結物件。
virtual ~ITarget();
link_source
在衍生類別中覆寫時,會將指定的來源區塊鏈接至這個 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
提供訊息的來源區塊指標。
傳回值
備註
如果 _PMessage
或參數為 NULL
,則方法會擲回invalid_argument_PSource
例外狀況。
傳送
在衍生類別中覆寫時,以同步方式將訊息傳遞至目標區塊。
virtual message_status send(
_Inout_ message<T>* _PMessage,
_Inout_ ISource<T>* _PSource) = 0;
參數
_PMessage
message
物件的指標。
_PSource
提供訊息的來源區塊指標。
傳回值
備註
如果 _PMessage
或參數為 NULL
,則方法會擲回invalid_argument_PSource
例外狀況。
send
在訊息起始之外使用 方法來傳播網路內的訊息很危險,而且可能會導致死結。
傳回時 send
,訊息已接受並傳輸至目標區塊,或已由目標拒絕。
supports_anonymous_source
在衍生類別中覆寫時,會根據訊息區塊是否會接受未與它連結的來源所提供的訊息傳回 true 或 false。 如果覆寫的方法傳 true
回 ,則目標無法延後提供的訊息,因為稍後延遲的訊息耗用量需要在其sourse連結登錄中識別來源。
virtual bool supports_anonymous_source();
傳回值
true
如果區塊可以接受來源的訊息,則為 ,否則為 false
。
unlink_source
在衍生類別中覆寫時,從這個 ITarget
區塊取消連結指定的來源區塊。
virtual void unlink_source(_Inout_ ISource<T>* _PSource) = 0;
參數
_PSource
要 ISource
從這個 ITarget
區塊取消連結的區塊。
備註
此函式不應直接在區塊上 ITarget
呼叫。 區塊應該使用 unlink_target
區塊上的 ISource
或 unlink_targets
方法中斷連線,這會在對應的目標上叫unlink_source
用 方法。
unlink_sources
在衍生類別中覆寫時,從這個 ITarget
區塊取消連結所有來源區塊。
virtual void unlink_sources() = 0;