Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A classe target_block é uma classe base abstrata que fornece funcionalidade básica de gerenciamento de link 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 registro de URLs a ser usado para armazenar os links de origem.
_MessageProcessorType
O tipo de processador para processamento de mensagens.
Membros
Typedefs públicos
| Nome | Descrição |
|---|---|
source_iterator |
O tipo do iterador de source_link_manager para este objeto target_block. |
Construtores públicos
| Nome | Descrição |
|---|---|
| target_block | Constrói um objeto target_block. |
| ~target_block Destrutor | Destrói o objeto target_block. |
Métodos públicos
| Nome | Descrição |
|---|---|
| propagate | Passa uma mensagem de um bloco de origem de forma assíncrona para esse bloco de destino. |
| send | Passa uma mensagem de um bloco de origem de forma síncrona para esse bloco de destino. |
Métodos protegidos
| Nome | Descrição |
|---|---|
| async_send | Envia uma mensagem de forma assíncrona para processamento. |
| recusar_mensagens_entrantes | Indica ao bloco que novas mensagens devem ser recusadas. |
| enable_batched_processing | Habilita o processamento em lote para esse bloco. |
| initialize_target | Inicializa o objeto base. Especificamente, o objeto message_processor precisa ser inicializado. |
| link_source | Vincula um bloco de origem especificado a esse objeto target_block. |
| processar_mensagens_de_entrada | Processa mensagens recebidas como entradas. |
| process_message | Quando substituído em uma classe derivada, processa uma mensagem que foi aceita por esse objeto target_block. |
| propagate_message | Quando substituído em uma classe derivada, esse método passa de forma assíncrona uma mensagem de um bloco de origem ISource para esse objeto target_block. Ele é invocado pelo método propagate, quando chamado por um bloco de origem. |
| register_filter | Registra um método de filtro que será invocado em cada mensagem recebida. |
| remove_sources | Desvincula todas as fontes depois de aguardar a conclusão de operações de envio assíncronas pendentes. |
| send_message | Quando substituído em uma classe derivada, este método passa uma mensagem de um bloco ISource para este objeto target_block de forma síncrona. Ele é invocado pelo método send, quando chamado por um bloco de origem. |
| sync_send | Envia uma mensagem de forma síncrona para processamento. |
| unlink_source | Desvincula um bloco de origem especificado desse objeto target_block. |
| desvincular_fontes | Desvincula todos os blocos de origem desse objeto target_block. (Sobrescreve ITarget::unlink_sources.) |
| esperar_por_envios_assíncronos | Aguarda até que todas as propagações assíncronas sejam concluídas. |
Hierarquia de herança
target_block
Requisitos
Cabeçalho: agents.h
Namespace: simultaneidade
async_send
Envia uma mensagem de forma assíncrona para processamento.
void async_send(_Inout_opt_ message<_Source_type>* _PMessage);
Parâmetros
_PMessage
Um ponteiro para a mensagem que está sendo enviada.
recusar_mensagens_recebidas
Indica ao bloco que novas mensagens devem ser recusadas.
void decline_incoming_messages();
Comentários
Esse método é chamado pelo destruidor para garantir que novas mensagens sejam recusadas enquanto a destruição está em andamento.
ativar_processamento_em_lotes
Habilita o processamento em lote para esse bloco.
void enable_batched_processing();
initialize_target
Inicializa o objeto base. Especificamente, o objeto message_processor precisa ser inicializado.
void initialize_target(
_Inout_opt_ Scheduler* _PScheduler = NULL,
_Inout_opt_ ScheduleGroup* _PScheduleGroup = NULL);
Parâmetros
_PScheduler
O agendador a ser usado para tarefas de agendamento.
_PScheduleGroup
O grupo de agendamento a ser usado para agendar tarefas.
fonte_de_link
Vincula um bloco de origem especificado a esse objeto target_block.
virtual void link_source(_Inout_ ISource<_Source_type>* _PSource);
Parâmetros
_PSource
Um ponteiro para o bloco ISource que deve ser vinculado.
Comentários
Essa função não deve ser chamada diretamente em um objeto target_block. Os blocos devem ser conectados juntos usando o método link_target em blocos ISource, o que invocará o método link_source no destino correspondente.
processar_mensagens_de_entrada
Processa mensagens recebidas como entradas.
virtual void process_input_messages(_Inout_ message<_Source_type>* _PMessage);
Parâmetros
_PMessage
Um ponteiro para a mensagem que deve ser processada.
processar_mensagem
Quando substituído em uma classe derivada, processa uma mensagem que foi aceita por esse objeto target_block.
virtual void process_message(message<_Source_type> *);
propagar
Passa uma mensagem de um bloco de origem de forma assíncrona para esse bloco de destino.
virtual message_status propagate(
_Inout_opt_ message<_Source_type>* _PMessage,
_Inout_opt_ ISource<_Source_type>* _PSource);
Parâmetros
_PMessage
Um ponteiro para o message objeto.
_PSource
Um ponteiro para o bloco de origem que fornece a mensagem.
Valor de retorno
Uma indicação de message_status sobre o que o destino decidiu fazer com a mensagem.
Comentários
O método lança uma exceção invalid_argument se os parâmetros _PMessage ou _PSource forem NULL.
propagate_message
Quando substituído em uma classe derivada, esse método passa de forma assíncrona uma mensagem de um bloco de origem ISource para esse objeto target_block. Ele é invocado pelo método propagate, quando chamado por um bloco de origem.
virtual message_status propagate_message(
_Inout_ message<_Source_type>* _PMessage,
_Inout_ ISource<_Source_type>* _PSource) = 0;
Parâmetros
_PMessage
Um ponteiro para o message objeto.
_PSource
Um ponteiro para o bloco de origem que fornece a mensagem.
Valor de retorno
Uma indicação de message_status sobre o que o destino decidiu fazer com a mensagem.
registrar_filtro
Registra 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
Desvincula todas as fontes depois de aguardar a conclusão de operações de envio assíncronas pendentes.
void remove_sources();
Comentários
Todos os blocos de destino devem chamar essa rotina para remover as fontes em seu destruidor.
enviar
Passa uma mensagem de um bloco de origem de forma síncrona para esse bloco de destino.
virtual message_status send(
_Inout_ message<_Source_type>* _PMessage,
_Inout_ ISource<_Source_type>* _PSource);
Parâmetros
_PMessage
Um ponteiro para o message objeto.
_PSource
Um ponteiro para o bloco de origem que fornece a mensagem.
Valor de retorno
Uma indicação de message_status sobre o que o destino decidiu fazer com a mensagem.
Comentários
O método lança uma exceção invalid_argument se os parâmetros _PMessage ou _PSource forem NULL.
Usar o método send fora do início da mensagem e propagar mensagens em uma rede é perigoso e pode levar a deadlock.
Quando send retorna, a mensagem já foi aceita e transferida para o bloco de destino, ou foi recusada pelo destino.
enviar_mensagem
Quando substituído em uma classe derivada, este método passa uma mensagem de um bloco ISource para este objeto target_block de forma síncrona. Ele é invocado pelo método send, quando chamado por um bloco de origem.
virtual message_status send_message(
_Inout_ message<_Source_type> *,
_Inout_ ISource<_Source_type> *);
Valor de retorno
Uma indicação de message_status sobre o que o destino decidiu fazer com a mensagem.
Comentários
Por padrão, esse bloco retorna declined a menos que tenha sido substituído por uma classe derivada.
sync_send
Envia uma mensagem de forma síncrona para processamento.
void sync_send(_Inout_opt_ message<_Source_type>* _PMessage);
Parâmetros
_PMessage
Um ponteiro para a mensagem que está sendo enviada.
bloco_alvo
Constrói um objeto target_block.
target_block();
~target_block
Destrói o objeto target_block.
virtual ~target_block();
Desvincular_fonte
Desvincula um bloco de origem especificado desse objeto target_block.
virtual void unlink_source(_Inout_ ISource<_Source_type>* _PSource);
Parâmetros
_PSource
Um ponteiro para o bloco ISource que deve ser desvinculado.
unlink_sources
Desvincula todos os blocos de origem desse objeto target_block.
virtual void unlink_sources();
esperar_por_envios_assíncronos
Aguarda até que todas as propagações assíncronas sejam concluídas.
void wait_for_async_sends();
Comentários
Esse método é usado por destruidores de bloco de mensagens para garantir que todas as operações assíncronas tenham tido tempo para serem concluídas antes de destruir o bloco.