Oharra
Orrialde honetara sartzeak baimena behar du. Saioa hasteko edo direktorioak aldatzen saia zaitezke.
Orrialde honetara sartzeak baimena behar du. Direktorioak aldatzen saia zaitezke.
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();