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.
Um transformer bloco de mensagens é um destino único, multi-fonte, ordenado propagator_block que pode aceitar mensagens de um tipo e é capaz de armazenar um número ilimitado de mensagens de um tipo diferente.
Sintaxe
template <class _Input, class _Output>
class transformer : public propagator_block<single_link_registry<ITarget<_Output>>,
multi_link_registry<ISource<_Input>>>;
Parâmetros
_Input
O tipo de carga útil das mensagens aceitas pelo buffer.
_Output
O tipo de carga útil das mensagens armazenadas e propagadas pelo buffer.
Membros
Construtores Públicos
| Nome | Descrição |
|---|---|
transformer |
Sobrecarregado. Constrói um transformer bloco de mensagens. |
~transformer |
Destrói o transformer bloco de mensagens. |
Métodos Protegidos
| Nome | Descrição |
|---|---|
accept_message |
Aceita uma mensagem que foi oferecida por este transformer bloco de mensagens, transferindo a propriedade para o chamador. |
consume_message |
Consome uma mensagem previamente oferecida pelo transformer e reservada pelo alvo, transferindo a propriedade para o chamador. |
link_target_notification |
Um retorno de chamada que notifica que um novo destino foi vinculado a esse transformer bloco de mensagens. |
propagate_message |
Passa de forma assíncrona uma mensagem de um ISource bloco para esse transformer bloco de mensagens. Ele é invocado propagate pelo método, quando chamado por um bloco de origem. |
propagate_to_any_targets |
Executa a função de transformador nas mensagens de entrada. |
release_message |
Libera uma reserva de mensagem anterior. (Substitui source_block::release_message.) |
reserve_message |
Reserva uma mensagem oferecida anteriormente por este transformer bloco de mensagens. (Substitui source_block::reserve_message.) |
resume_propagation |
Retoma a propagação após a liberação de uma reserva. (Substitui source_block::resume_propagation.) |
send_message |
De forma síncrona, passa uma mensagem de um ISource bloco para esse transformer bloco de mensagens. Ele é invocado send pelo método, quando chamado por um bloco de origem. |
supports_anonymous_source |
Substitui o supports_anonymous_source método para indicar que esse bloco pode aceitar mensagens oferecidas a ele por uma fonte que não está vinculada. (Substitui ITarget::supports_anonymous_source.) |
Observações
Para obter mais informações, consulte Blocos de mensagens assíncronas.
Hierarquia de herança
transformer
Requerimentos
Cabeçalho: agents.h
Namespace: simultaneidade
accept_message
Aceita uma mensagem que foi oferecida por este transformer bloco de mensagens, transferindo a propriedade para o chamador.
virtual message<_Output>* accept_message(runtime_object_identity _MsgId);
Parâmetros
_MsgId
O runtime_object_identity do objeto oferecido message .
Valor de retorno
Um ponteiro para o message objeto do qual o chamador agora tem propriedade.
consume_message
Consome uma mensagem previamente oferecida pelo transformer e reservada pelo alvo, transferindo a propriedade para o chamador.
virtual message<_Output>* consume_message(runtime_object_identity _MsgId);
Parâmetros
_MsgId
O runtime_object_identity do message objeto que está sendo consumido.
Valor de retorno
Um ponteiro para o message objeto do qual o chamador agora tem propriedade.
Observações
Semelhante a accept, mas é sempre precedido por uma chamada para reserve.
link_target_notification
Um retorno de chamada que notifica que um novo destino foi vinculado a esse transformer bloco de mensagens.
virtual void link_target_notification(_Inout_ ITarget<_Output> *);
propagate_message
Passa de forma assíncrona uma mensagem de um ISource bloco para esse transformer bloco de mensagens. Ele é invocado propagate pelo método, quando chamado por um bloco de origem.
virtual message_status propagate_message(
_Inout_ message<_Input>* _PMessage,
_Inout_ ISource<_Input>* _PSource);
Parâmetros
_PMessage
Um ponteiro para o objeto message.
_PSource
Um ponteiro para o bloco de origem que oferece a mensagem.
Valor de retorno
Uma indicação message_status do que o alvo decidiu fazer com a mensagem.
propagate_to_any_targets
Executa a função de transformador nas mensagens de entrada.
virtual void propagate_to_any_targets(_Inout_opt_ message<_Output> *);
release_message
Libera uma reserva de mensagem anterior.
virtual void release_message(runtime_object_identity _MsgId);
Parâmetros
_MsgId
O runtime_object_identity do message objeto que está sendo liberado.
reserve_message
Reserva uma mensagem oferecida anteriormente por este transformer bloco de mensagens.
virtual bool reserve_message(runtime_object_identity _MsgId);
Parâmetros
_MsgId
O runtime_object_identity do message objeto reservado.
Valor de retorno
true se a mensagem foi reservada com êxito, false caso contrário.
Observações
Depois reserve é chamado, se ele retorna true, ou releaseconsume deve ser chamado para assumir ou liberar a propriedade da mensagem.
resume_propagation
Retoma a propagação após a liberação de uma reserva.
virtual void resume_propagation();
send_message
De forma síncrona, passa uma mensagem de um ISource bloco para esse transformer bloco de mensagens. Ele é invocado send pelo método, quando chamado por um bloco de origem.
virtual message_status send_message(
_Inout_ message<_Input>* _PMessage,
_Inout_ ISource<_Input>* _PSource);
Parâmetros
_PMessage
Um ponteiro para o objeto message.
_PSource
Um ponteiro para o bloco de origem que oferece a mensagem.
Valor de retorno
Uma indicação message_status do que o alvo decidiu fazer com a mensagem.
supports_anonymous_source
Substitui o supports_anonymous_source método para indicar que esse bloco pode aceitar mensagens oferecidas a ele por uma fonte que não está vinculada.
virtual bool supports_anonymous_source();
Valor de retorno
true porque o bloqueio não adia as mensagens oferecidas.
transformer
Constrói um transformer bloco de mensagens.
transformer(
_Transform_method const& _Func,
_Inout_opt_ ITarget<_Output>* _PTarget = NULL);
transformer(
_Transform_method const& _Func,
_Inout_opt_ ITarget<_Output>* _PTarget,
filter_method const& _Filter);
transformer(
Scheduler& _PScheduler,
_Transform_method const& _Func,
_Inout_opt_ ITarget<_Output>* _PTarget = NULL);
transformer(
Scheduler& _PScheduler,
_Transform_method const& _Func,
_Inout_opt_ ITarget<_Output>* _PTarget,
filter_method const& _Filter);
transformer(
ScheduleGroup& _PScheduleGroup,
_Transform_method const& _Func,
_Inout_opt_ ITarget<_Output>* _PTarget = NULL);
transformer(
ScheduleGroup& _PScheduleGroup,
_Transform_method const& _Func,
_Inout_opt_ ITarget<_Output>* _PTarget,
filter_method const& _Filter);
Parâmetros
_Func
Uma função que será invocada para cada mensagem aceita.
_PTarget
Um ponteiro para um bloco alvo para ligar com o transformador.
_Filter
Uma função de filtro que determina se as mensagens oferecidas devem ser aceitas.
_PScheduler
O Scheduler objeto dentro do qual a tarefa de propagação para o bloco de mensagens transformer está agendada.
_PScheduleGroup
O ScheduleGroup objeto dentro do qual a tarefa de propagação para o bloco de mensagens transformer está agendada. O objeto Scheduler usado é implícito pelo grupo de agenda.
Observações
O tempo de execução usa o agendador padrão se você não especificar os _PScheduler parâmetros ou _PScheduleGroup .
O tipo _Transform_method é um functor com assinatura _Output (_Input const &) que é invocado por este transformer bloco de mensagens para processar uma mensagem.
O tipo filter_method é um functor com assinatura bool (_Input const &) que é invocado por este transformer bloco de mensagens para determinar se ele deve ou não aceitar uma mensagem oferecida.
~transformer
Destrói o transformer bloco de mensagens.
~transformer();