Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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
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.
link_fonte
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.
remover_ligações_de_rede
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.
desvincular_fonte
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.
desvincular_fontes
Desvincula todos os blocos de origem deste propagator_block objeto.
virtual void unlink_sources();