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 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
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.
link_fonte
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();
desvincular_fonte
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.
desvincular_fontes
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.