Partilhar via


transformador Classe

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

ISource

ITarget

source_block

propagator_block

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.

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();

Ver também

simultaneidade Namespace
chamar Classe