Share via


target_block 類別

target_block 類別是一種抽象基底類別,可提供基本的連結管理功能和僅限目標區塊的錯誤檢查。

語法

template<class _SourceLinkRegistry, class _MessageProcessorType = ordered_message_processor<typename _SourceLinkRegistry::type::source_type>>
class target_block : public ITarget<typename _SourceLinkRegistry::type::source_type>;

參數

_SourceLinkRegistry
用來存放來源連結的連結登錄。

_MessageProcessorType
訊息處理的處理器類型。

成員

公用 Typedefs

名稱 描述
source_iterator 這個 target_block 物件之 的 反覆運算器 source_link_manager 型別。

公用建構函式

名稱 描述
target_block 建構 target_block 物件。
~target_block解構函式 target_block終結 物件。

公用方法

名稱 描述
傳播 以非同步方式將訊息從來源區塊傳遞至此目標區塊。
傳送 以同步方式將訊息從來源區塊傳遞至此目標區塊。

受保護的方法

名稱 描述
async_send 以非同步方式傳送訊息進行處理。
decline_incoming_messages 向 區塊指出應該拒絕新訊息。
enable_batched_processing 啟用這個區塊的批次處理。
initialize_target 初始化基底物件。 具體而言, message_processor 必須初始化 物件。
link_source 將指定的來源區塊連結至這個 target_block 物件。
process_input_messages 處理收到的輸入訊息。
process_message 在衍生類別中覆寫時,處理這個 target_block 物件接受的訊息。
propagate_message 在衍生類別中覆寫時,這個方法會以非同步方式將訊息從 ISource 區塊傳遞至這個 target_block 物件。 propagate當來源區塊呼叫時,方法會叫用它。
register_filter 註冊將在收到的每個訊息上叫用的篩選方法。
remove_sources 等候未完成的非同步傳送作業完成之後,取消連結所有來源。
send_message 在衍生類別中覆寫時,這個方法會同步將訊息從 ISource 區塊傳遞至這個 target_block 物件。 send當來源區塊呼叫時,方法會叫用它。
sync_send 同步傳送訊息以供處理。
unlink_source 從這個 target_block 物件取消連結指定的來源區塊。
unlink_sources 從這個 target_block 物件取消連結所有來源區塊。 (覆寫 ITarget::unlink_sources .
wait_for_async_sends 等候所有非同步傳播完成。

繼承階層架構

ITarget

target_block

需求

標頭: agents.h

命名空間: concurrency

async_send

以非同步方式傳送訊息進行處理。

void async_send(_Inout_opt_ message<_Source_type>* _PMessage);

參數

_PMessage
要傳送之訊息的指標。

decline_incoming_messages

向 區塊指出應該拒絕新訊息。

void decline_incoming_messages();

備註

解構函式會呼叫這個方法,以確保在解構進行時拒絕新的訊息。

enable_batched_processing

啟用這個區塊的批次處理。

void enable_batched_processing();

initialize_target

初始化基底物件。 具體而言, message_processor 必須初始化 物件。

void initialize_target(
    _Inout_opt_ Scheduler* _PScheduler = NULL,
    _Inout_opt_ ScheduleGroup* _PScheduleGroup = NULL);

參數

_PScheduler
要用於排程工作的排程器。

_PScheduleGroup
要用於排程工作的排程群組。

將指定的來源區塊連結至這個 target_block 物件。

virtual void link_source(_Inout_ ISource<_Source_type>* _PSource);

參數

_PSource
要連結之區塊的 ISource 指標。

備註

不應該直接在 物件上 target_block 呼叫此函式。 區塊應該使用 link_target 區塊上的 ISource 方法連接在一起,這會在對應的目標上叫 link_source 用 方法。

process_input_messages

處理收到的輸入訊息。

virtual void process_input_messages(_Inout_ message<_Source_type>* _PMessage);

參數

_PMessage
要處理的訊息指標。

process_message

在衍生類別中覆寫時,處理這個 target_block 物件接受的訊息。

virtual void process_message(message<_Source_type> *);

傳播

以非同步方式將訊息從來源區塊傳遞至此目標區塊。

virtual message_status propagate(
    _Inout_opt_ message<_Source_type>* _PMessage,
    _Inout_opt_ ISource<_Source_type>* _PSource);

參數

_PMessage
message 物件的指標。

_PSource
提供訊息的來源區塊指標。

傳回值

message_status 指出目標決定對訊息執行的動作。

備註

如果 _PMessage 或 參數為 NULL ,則方法會 擲回invalid_argument _PSource 例外狀況。

propagate_message

在衍生類別中覆寫時,這個方法會以非同步方式將訊息從 ISource 區塊傳遞至這個 target_block 物件。 propagate當來源區塊呼叫時,方法會叫用它。

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

參數

_PMessage
message 物件的指標。

_PSource
提供訊息的來源區塊指標。

傳回值

message_status 指出目標決定對訊息執行的動作。

register_filter

註冊將在收到的每個訊息上叫用的篩選方法。

void register_filter(filter_method const& _Filter);

參數

_濾波器
篩選方法。

remove_sources

等候未完成的非同步傳送作業完成之後,取消連結所有來源。

void remove_sources();

備註

所有目標區塊都應該呼叫此常式,以移除其解構函式中的來源。

傳送

以同步方式將訊息從來源區塊傳遞至此目標區塊。

virtual message_status send(
    _Inout_ message<_Source_type>* _PMessage,
    _Inout_ ISource<_Source_type>* _PSource);

參數

_PMessage
message 物件的指標。

_PSource
提供訊息的來源區塊指標。

傳回值

message_status 指出目標決定對訊息執行的動作。

備註

如果 _PMessage 或 參數為 NULL ,則方法會 擲回invalid_argument _PSource 例外狀況。

send在訊息起始之外使用 方法來傳播網路內的訊息很危險,而且可能會導致死結。

傳回時 send ,訊息已接受並傳輸至目標區塊,或已由目標拒絕。

send_message

在衍生類別中覆寫時,這個方法會同步將訊息從 ISource 區塊傳遞至這個 target_block 物件。 send當來源區塊呼叫時,方法會叫用它。

virtual message_status send_message(
    _Inout_ message<_Source_type> *,
    _Inout_ ISource<_Source_type> *);

傳回值

message_status 指出目標決定對訊息執行的動作。

備註

根據預設,除非由衍生類別覆寫,否則此區塊會 declined 傳回 。

sync_send

同步傳送訊息以供處理。

void sync_send(_Inout_opt_ message<_Source_type>* _PMessage);

參數

_PMessage
要傳送之訊息的指標。

target_block

建構 target_block 物件。

target_block();

~target_block

target_block終結 物件。

virtual ~target_block();

從這個 target_block 物件取消連結指定的來源區塊。

virtual void unlink_source(_Inout_ ISource<_Source_type>* _PSource);

參數

_PSource
要取消連結之區塊的 ISource 指標。

從這個 target_block 物件取消連結所有來源區塊。

virtual void unlink_sources();

wait_for_async_sends

等候所有非同步傳播完成。

void wait_for_async_sends();

備註

訊息區塊解構函式會使用這個方法,以確保所有非同步作業在終結區塊之前都有時間完成。

另請參閱

concurrency 命名空間
ITarget 類別