Partilhar via


propagator_block Classe

A propagator_block classe é uma classe base abstrata para blocos de mensagens que são simultaneamente uma fonte e um alvo. Combina as funcionalidades das classes source_block e target_block.

Sintaxe

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

Parâmetros

_TargetLinkRegistry
O registo de links a ser usado para armazenar os links de destino.

_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 source_link_manager este propagator_block.

Construtores Públicos

Nome Description
propagator_block Constrói um propagator_block objeto.
~propagator_block Destrutor Destrói um propagator_block objeto.

Métodos Públicos

Nome Description
propagar Passa assíncronamente uma mensagem de um bloco de origem para esse bloco alvo.
enviar Inicia sincronamente uma mensagem para este bloco. Chamado por um bloco ISource. Quando esta função termina, a mensagem já terá sido propagada para dentro do bloco.

Métodos Protegidos

Nome Description
recusar_mensagens_entrantes Indica ao bloco que novas mensagens devem ser recusadas.
initialize_source_and_target (inicializar_fonte_e_destino) Inicializa o objeto base. Especificamente, o message_processor objeto precisa de ser inicializado.
link_source Liga um bloco fonte especificado a este propagator_block objeto.
process_input_messages Processar mensagens de entrada. Isto só é útil para blocos propagadores, que derivam de source_block (Substitui source_block::process_input_messages.)
propagate_message Quando sobrescrito numa classe derivada, este método passa de forma assíncrona uma mensagem de um ISource bloco para este propagator_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.
remover_ligações_de_rede Remove todas as ligações de rede de origem e destino deste propagator_block objeto.
send_message Quando sobrescrito numa classe derivada, este método passa sincronizadamente uma mensagem de um ISource bloco para esse propagator_block objeto. É invocado pelo send método, quando chamado por um bloco fonte.
unlink_source Desvincula um bloco fonte especificado deste propagator_block objeto.
unlink_sources Desvincula todos os blocos de origem deste propagator_block objeto. (Sobrepõe ITarget::unlink_sources.)

Observações

Para evitar a herança múltipla, a propagator_block classe herda da source_block classe e ITarget da classe abstrata. A maior parte da funcionalidade da target_block classe é replicada aqui.

Hierarquia de herança

ISource

ITarget

source_block

propagator_block

Requerimentos

Cabeçalho: agents.h

Namespace: simultaneidade

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.

initialize_source_and_target

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

void initialize_source_and_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 propagator_block objeto.

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

Parâmetros

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

process_input_messages

Processar mensagens de entrada. Isto só é útil para blocos propagadores, que derivam de source_block

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

Parâmetros

_PMessage
Um apontador para a mensagem a ser processada.

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 propagate método é invocado num bloco-alvo por um bloco de origem ligado. Coloca em fila uma tarefa assíncrona para tratar a mensagem, caso ainda não esteja em fila ou em execução.

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 propagator_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.

bloco propagador

Constrói um propagator_block objeto.

propagator_block();

~propagator_block

Destrói um propagator_block objeto.

virtual ~propagator_block();

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.

Remove todas as ligações de rede de origem e destino deste propagator_block objeto.

void remove_network_links();

enviar

Inicia sincronamente uma mensagem para este bloco. Chamado por um bloco ISource. Quando esta função termina, a mensagem já terá sido propagada para dentro do bloco.

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

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

enviar_mensagem

Quando sobrescrito numa classe derivada, este método passa sincronizadamente uma mensagem de um ISource bloco para esse propagator_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.

Desvincula um bloco fonte especificado deste propagator_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 propagator_block objeto.

virtual void unlink_sources();

Consulte também

concorrência Namespace
source_block Classe
Classe ITarget