Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Un bloque de mensajería transformer es un bloque propagator_block de destino único, de varios orígenes y ordenado capaz de almacenar un número ilimitado de mensajes de un tipo diferente.
Sintaxis
template <class _Input, class _Output>
class transformer : public propagator_block<single_link_registry<ITarget<_Output>>,
multi_link_registry<ISource<_Input>>>;
Parámetros
_Input
Tipo de carga de los mensajes aceptados por el búfer.
_Output
El tipo de carga de los mensajes almacenados y propagados por el búfer.
Miembros
Constructores públicos
| Nombre | Descripción |
|---|---|
transformer |
Con sobrecarga. Construye un bloque de mensajería transformer . |
~transformer |
Destruye el bloque de mensajería transformer. |
Métodos protegidos
| Nombre | Descripción |
|---|---|
accept_message |
Acepta un mensaje ofrecido por este bloque de mensajería transformer y transfiere la propiedad al autor de la llamada. |
consume_message |
Consume un mensaje ofrecido previamente por el bloque de mensajería transformer y reservado por el destino, y transfiere la propiedad al autor de la llamada. |
link_target_notification |
Devolución de llamada que notifica que se ha vinculado un nuevo destino a este bloque de mensajería transformer. |
propagate_message |
Pasa de forma asincrónica un mensaje de un bloque ISource a este bloque de mensajería transformer. Se invoca mediante el propagate método, cuando lo llama un bloque de origen. |
propagate_to_any_targets |
Ejecuta la función transformer en los mensajes de entrada. |
release_message |
Libera una reserva de mensajes anterior. (Invalida source_block::release_message). |
reserve_message |
Reserva un mensaje ofrecido anteriormente por este bloque de mensajería transformer. (Invalida source_block::reserve_message). |
resume_propagation |
Reanuda la propagación después de que se haya liberado una reserva. (Invalida source_block::resume_propagation). |
send_message |
Pasa de forma sincrónica un mensaje de un ISource bloque a este transformer bloque de mensajería. Se invoca mediante el send método, cuando lo llama un bloque de origen. |
supports_anonymous_source |
Invalida el supports_anonymous_source método para indicar que este bloque puede aceptar mensajes ofrecidos por un origen que no está vinculado. (Invalida ITarget::supports_anonymous_source). |
Comentarios
Para obtener más información, consulte Bloques de mensajes asincrónicos.
Jerarquía de herencia
transformer
Requisitos
Encabezado: agents.h
Espacio de nombres: simultaneidad
accept_message
Acepta un mensaje ofrecido por este bloque de mensajería transformer y transfiere la propiedad al autor de la llamada.
virtual message<_Output>* accept_message(runtime_object_identity _MsgId);
Parámetros
_MsgId
El valor runtime_object_identity del objeto message ofrecido.
Valor devuelto
Puntero al objeto message del que el autor de la llamada tiene ahora la propiedad.
consume_message
Consume un mensaje ofrecido previamente por el bloque de mensajería transformer y reservado por el destino, y transfiere la propiedad al autor de la llamada.
virtual message<_Output>* consume_message(runtime_object_identity _MsgId);
Parámetros
_MsgId
Valor runtime_object_identity del objeto message que se consumirá.
Valor devuelto
Puntero al objeto message del que el autor de la llamada tiene ahora la propiedad.
Comentarios
Es similar a accept, pero siempre va precedido de una llamada a reserve.
link_target_notification
Devolución de llamada que notifica que se ha vinculado un nuevo destino a este bloque de mensajería transformer.
virtual void link_target_notification(_Inout_ ITarget<_Output> *);
propagate_message
Pasa de forma asincrónica un mensaje de un bloque ISource a este bloque de mensajería transformer. Se invoca mediante el propagate método, cuando lo llama un bloque de origen.
virtual message_status propagate_message(
_Inout_ message<_Input>* _PMessage,
_Inout_ ISource<_Input>* _PSource);
Parámetros
_PMessage
Un puntero al objeto message.
_PSource
Puntero al bloque de origen que ofrece el mensaje.
Valor devuelto
Una indicación message_status de lo que el destino decidió hacer con el mensaje.
propagate_to_any_targets
Ejecuta la función transformer en los mensajes de entrada.
virtual void propagate_to_any_targets(_Inout_opt_ message<_Output> *);
release_message
Libera una reserva de mensajes anterior.
virtual void release_message(runtime_object_identity _MsgId);
Parámetros
_MsgId
El valor runtime_object_identity del objeto message que se libera.
reserve_message
Reserva un mensaje ofrecido anteriormente por este bloque de mensajería transformer.
virtual bool reserve_message(runtime_object_identity _MsgId);
Parámetros
_MsgId
El runtime_object_identity del objeto message que se está reservando.
Valor devuelto
true si se ha reservado correctamente el mensaje; de lo contrario, false.
Comentarios
Después de llamar a reserve, si devuelve true, se debe llamar a consume o release para aceptar o liberar la propiedad del mensaje.
resume_propagation
Reanuda la propagación después de que se haya liberado una reserva.
virtual void resume_propagation();
send_message
Pasa de forma sincrónica un mensaje de un ISource bloque a este transformer bloque de mensajería. Se invoca mediante el send método, cuando lo llama un bloque de origen.
virtual message_status send_message(
_Inout_ message<_Input>* _PMessage,
_Inout_ ISource<_Input>* _PSource);
Parámetros
_PMessage
Un puntero al objeto message.
_PSource
Puntero al bloque de origen que ofrece el mensaje.
Valor devuelto
Una indicación message_status de lo que el destino decidió hacer con el mensaje.
supports_anonymous_source
Invalida el supports_anonymous_source método para indicar que este bloque puede aceptar mensajes ofrecidos por un origen que no está vinculado.
virtual bool supports_anonymous_source();
Valor devuelto
true porque el bloque no pospone los mensajes ofrecidos.
transformer
Construye un bloque de mensajería transformer .
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
Función que se invocará para cada mensaje aceptado.
_PTarget
Puntero a un bloque de destino que se va a vincular con la función transformer.
_Filter
Función de filtro que determina si se deben aceptar los mensajes ofrecidos.
_PScheduler
El objeto Scheduler dentro del que se programa la tarea de propagación para el bloque de mensajería transformer .
_PScheduleGroup
El objeto ScheduleGroup dentro del que se programa la tarea de propagación para el bloque de mensajería transformer . El objeto Scheduler utilizado está implícito en el grupo de programación.
Comentarios
El runtime usa el programador predeterminado si no se especifican los parámetros _PScheduler o _PScheduleGroup .
El tipo _Transform_method es un functor con firma _Output (_Input const &) invocada por este transformer bloque de mensajería para procesar un mensaje.
El tipo filter_method es un functor con firma bool (_Input const &) invocada por este bloque de mensajería transformer para determinar si debe aceptar o no un mensaje ofrecido.
~transformer
Destruye el bloque de mensajería transformer.
~transformer();