Partilhar via


target_block Classe

A target_block classe é uma classe base abstrata que fornece funcionalidades básicas de gestão de ligações e verificação de erros para blocos apenas de destino.

Sintaxe

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

Parâmetros

_SourceLinkRegistry
O registo de links a ser usado para armazenar os links de origem.

_MessageProcessorType
O tipo de processador para processamento de mensagens.

Membros

Definições de Tipos Públicas

Nome Description
source_iterator O tipo do iterador para o source_link_manager para este target_block objeto.

Construtores Públicos

Nome Description
target_block Constrói um target_block objeto.
~target_block Destructor Destrói o target_block objeto.

Métodos Públicos

Nome Description
propagar Passa assíncronamente uma mensagem de um bloco de origem para esse bloco alvo.
enviar Passa síncronamente uma mensagem de um bloco de origem para esse bloco de destino.

Métodos Protegidos

Nome Description
async_send De forma assíncrona, envia uma mensagem para processamento.
recusar_mensagens_entrantes Indica ao bloco que novas mensagens devem ser recusadas.
activar_processamento_em_lote Permite o processamento em lote para este bloco.
initialize_target Inicializa o objeto base. Especificamente, o message_processor objeto precisa de ser inicializado.
link_source Liga um bloco fonte especificado a este target_block objeto.
process_input_messages Processa mensagens que são recebidas como entradas.
process_message Quando sobreposta numa classe derivada, processa uma mensagem que foi aceite por este target_block objeto.
propagate_message Quando sobrescrito numa classe derivada, este método passa de forma assíncrona uma mensagem de um ISource bloco para este target_block objeto. É invocado pelo propagate método, quando chamado por um bloco fonte.
register_filter Regista um método de filtro que será invocado em cada mensagem recebida.
remove_sources Desliga todas as fontes após aguardar que as operações de envio assíncronas pendentes sejam concluídas.
send_message Quando sobrescrito numa classe derivada, este método passa sincronizadamente uma mensagem de um ISource bloco para esse target_block objeto. É invocado pelo send método, quando chamado por um bloco fonte.
sync_send Enviar uma mensagem síncrona para processamento.
unlink_source Desvincula um bloco fonte especificado deste target_block objeto.
unlink_sources Desvincula todos os blocos de origem deste target_block objeto. (Sobrepõe ITarget::unlink_sources.)
wait_for_async_sends Espera que todas as propagações assíncronas sejam concluídas.

Hierarquia de herança

ITarget

target_block

Requerimentos

Cabeçalho: agents.h

Namespace: simultaneidade

envio_assíncrono

De forma assíncrona, envia uma mensagem para processamento.

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

Parâmetros

_PMessage
Um indicador para a mensagem que está a ser enviada.

rejeitar_mensagens_entrantes

Indica ao bloco que novas mensagens devem ser recusadas.

void decline_incoming_messages();

Observações

Este método é chamado pelo destruidor para garantir que novas mensagens sejam recusadas enquanto a destruição está em curso.

enable_batched_processing

Permite o processamento em lote para este bloco.

void enable_batched_processing();

inicializar_destino

Inicializa o objeto base. Especificamente, o message_processor objeto precisa de ser inicializado.

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

Parâmetros

_PScheduler
O agendador a ser usado para agendar tarefas.

_PScheduleGroup
O grupo de agendamento a ser usado para agendar tarefas.

Liga um bloco fonte especificado a este target_block objeto.

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

Parâmetros

_PSource
Um apontador para o ISource bloco que deve ser associado.

Observações

Esta função não deve ser chamada diretamente a um target_block objeto. Os blocos devem ser ligados entre si usando o link_target método nos ISource blocos, que invocará o link_source método no alvo correspondente.

process_input_messages

Processa mensagens que são recebidas como entradas.

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

Parâmetros

_PMessage
Um apontador para a mensagem a ser processada.

processar_mensagem

Quando sobreposta numa classe derivada, processa uma mensagem que foi aceite por este target_block objeto.

virtual void process_message(message<_Source_type> *);

propagar

Passa assíncronamente uma mensagem de um bloco de origem para esse bloco alvo.

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

Parâmetros

_PMessage
Um indicador para o message objeto.

_PSource
Um apontador para o bloco de origem que oferece a mensagem.

Valor de retorno

Uma message_status indicação do que o alvo decidiu fazer com a mensagem.

Observações

O método lança uma exceção invalid_argument se o parâmetro _PMessage ou _PSource for NULL.

propagar_mensagem

Quando sobrescrito numa classe derivada, este método passa de forma assíncrona uma mensagem de um ISource bloco para este target_block objeto. É invocado pelo propagate método, quando chamado por um bloco fonte.

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

Parâmetros

_PMessage
Um indicador para o message objeto.

_PSource
Um apontador para o bloco de origem que oferece a mensagem.

Valor de retorno

Uma message_status indicação do que o alvo decidiu fazer com a mensagem.

register_filter

Regista um método de filtro que será invocado em cada mensagem recebida.

void register_filter(filter_method const& _Filter);

Parâmetros

_Filter
O método do filtro.

remover_fontes

Desliga todas as fontes após aguardar que as operações de envio assíncronas pendentes sejam concluídas.

void remove_sources();

Observações

Todos os blocos-alvo devem chamar esta rotina para remover as fontes no seu destrutor.

enviar

Passa síncronamente uma mensagem de um bloco de origem para esse bloco de destino.

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

Parâmetros

_PMessage
Um indicador para o message objeto.

_PSource
Um apontador para o bloco de origem que oferece a mensagem.

Valor de retorno

Uma message_status indicação do que o alvo decidiu fazer com a mensagem.

Observações

O método lança uma exceção invalid_argument se o parâmetro _PMessage ou _PSource for NULL.

Usar este send método fora da iniciação de mensagens e para propagar mensagens dentro de uma rede é perigoso e pode levar a deadlocks.

Quando send regressa, a mensagem já foi aceite e transferida para o bloco alvo, ou foi recusada pelo alvo.

enviar_mensagem

Quando sobrescrito numa classe derivada, este método passa sincronizadamente uma mensagem de um ISource bloco para esse target_block objeto. É invocado pelo send método, quando chamado por um bloco fonte.

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

Valor de retorno

Uma message_status indicação do que o alvo decidiu fazer com a mensagem.

Observações

Por defeito, este bloco retorna declined a menos que seja sobreposto por uma classe derivada.

sync_send

Enviar uma mensagem síncrona para processamento.

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

Parâmetros

_PMessage
Um indicador para a mensagem que está a ser enviada.

target_block

Constrói um target_block objeto.

target_block();

~target_block

Destrói o target_block objeto.

virtual ~target_block();

Desvincula um bloco fonte especificado deste target_block objeto.

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

Parâmetros

_PSource
Um apontador para o ISource bloco que deve ser desvinculado.

Desvincula todos os blocos de origem deste target_block objeto.

virtual void unlink_sources();

wait_for_async_sends

Espera que todas as propagações assíncronas sejam concluídas.

void wait_for_async_sends();

Observações

Este método é utilizado por destruidores de blocos de mensagens para garantir que todas as operações assíncronas tiveram tempo de terminar antes de destruir o bloco.

Consulte também

concorrência Namespace
Classe ITarget