Classe transformer

Un bloc de messagerie transformer est un propagator_block à cible unique, à sources multiples et classé qui peut accepter des messages d'un type et est capable de stocker un nombre illimité de messages d'un type différent.

Syntaxe

template<class _Input, class _Output>
class transformer : public propagator_block<single_link_registry<ITarget<_Output>>,
    multi_link_registry<ISource<_Input>>>;

Paramètres

_Entrée
Type de charge utile des messages acceptés par la mémoire tampon.

_Sortie
Type de charge utile des messages stockés et propagés par la mémoire tampon.

Membres

Constructeurs publics

Nom Description
transformateur Surcharge. Construit un bloc de messagerie transformer .
~ Destructeur du transformateur Détruit le transformer bloc de messagerie.

Méthodes protégées

Nom Description
accept_message Accepte un message proposé par ce transformer bloc de messagerie, en transférant la propriété à l’appelant.
consume_message Consomme un message précédemment proposé par la transformer cible et réservé par la cible, en transférant la propriété à l’appelant.
link_target_notification Rappel qui informe qu’une nouvelle cible a été liée à ce transformer bloc de messagerie.
propagate_message Transmet de façon asynchrone un message d’un ISource bloc à ce transformer bloc de messagerie. Elle est appelée par la propagate méthode, lorsqu’elle est appelée par un bloc source.
propagate_to_any_targets Exécute la fonction transformateur sur les messages d’entrée.
release_message Libère une réservation de message précédente. (Remplace source_block ::release_message.)
reserve_message Réserve un message précédemment proposé par ce transformer bloc de messagerie. (Remplace source_block ::reserve_message.)
resume_propagation Reprend la propagation après la publication d’une réservation. (Remplace source_block ::resume_propagation.)
send_message Transmet de façon synchrone un message d’un ISource bloc à ce transformer bloc de messagerie. Elle est appelée par la send méthode, lorsqu’elle est appelée par un bloc source.
supports_anonymous_source Remplace la supports_anonymous_source méthode pour indiquer que ce bloc peut accepter les messages proposés par une source qui n’est pas liée. (Remplacements ITarget ::supports_anonymous_source.)

Notes

Pour plus d’informations, consultez Blocs de messages asynchrones.

Hiérarchie d'héritage

ISource

ITarget

source_block

propagator_block

transformer

Spécifications

En-tête : agents.h

Espace de noms : concurrency

accept_message

Accepte un message proposé par ce transformer bloc de messagerie, en transférant la propriété à l’appelant.

virtual message<_Output>* accept_message(runtime_object_identity _MsgId);

Paramètres

_MsgId
Objet runtime_object_identity proposé message .

Valeur de retour

Pointeur vers l’objet message dont l’appelant a désormais la propriété.

consume_message

Consomme un message précédemment proposé par la transformer cible et réservé par la cible, en transférant la propriété à l’appelant.

virtual message<_Output>* consume_message(runtime_object_identity _MsgId);

Paramètres

_MsgId
De runtime_object_identity l’objet message consommé.

Valeur de retour

Pointeur vers l’objet message dont l’appelant a désormais la propriété.

Notes

Similaire à accept, mais est toujours précédé d’un appel à reserve.

Rappel qui informe qu’une nouvelle cible a été liée à ce transformer bloc de messagerie.

virtual void link_target_notification(_Inout_ ITarget<_Output> *);

propagate_message

Transmet de façon asynchrone un message d’un ISource bloc à ce transformer bloc de messagerie. Elle est appelée par la propagate méthode, lorsqu’elle est appelée par un bloc source.

virtual message_status propagate_message(
    _Inout_ message<_Input>* _PMessage,
    _Inout_ ISource<_Input>* _PSource);

Paramètres

_PMessage
Pointeur vers l'objet message.

_PSource
Pointeur vers le bloc source offrant le message.

Valeur de retour

Une message_status indication de ce que la cible a décidé de faire avec le message.

propagate_to_any_targets

Exécute la fonction transformateur sur les messages d’entrée.

virtual void propagate_to_any_targets(_Inout_opt_ message<_Output> *);

release_message

Libère une réservation de message précédente.

virtual void release_message(runtime_object_identity _MsgId);

Paramètres

_MsgId
De runtime_object_identity l’objet message libéré.

reserve_message

Réserve un message précédemment proposé par ce transformer bloc de messagerie.

virtual bool reserve_message(runtime_object_identity _MsgId);

Paramètres

_MsgId
De runtime_object_identity l’objet message réservé.

Valeur de retour

true si le message a été correctement réservé, false sinon.

Notes

Une fois reserve appelé, s’il retourne true, soit release consume doit être appelé pour prendre ou libérer la propriété du message.

resume_propagation

Reprend la propagation après la publication d’une réservation.

virtual void resume_propagation();

send_message

Transmet de façon synchrone un message d’un ISource bloc à ce transformer bloc de messagerie. Elle est appelée par la send méthode, lorsqu’elle est appelée par un bloc source.

virtual message_status send_message(
    _Inout_ message<_Input>* _PMessage,
    _Inout_ ISource<_Input>* _PSource);

Paramètres

_PMessage
Pointeur vers l'objet message.

_PSource
Pointeur vers le bloc source offrant le message.

Valeur de retour

Une message_status indication de ce que la cible a décidé de faire avec le message.

supports_anonymous_source

Remplace la supports_anonymous_source méthode pour indiquer que ce bloc peut accepter les messages proposés par une source qui n’est pas liée.

virtual bool supports_anonymous_source();

Valeur de retour

true car le bloc ne reporte pas les messages proposés.

transformateur

Construit un bloc de messagerie 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);

Paramètres

_Func
Fonction qui sera appelée pour chaque message accepté.

_PTarget
Pointeur vers un bloc cible à lier avec le transformateur.

_Filtre
Fonction de filtre qui détermine si les messages proposés doivent être acceptés.

_PScheduler
Objet Scheduler dans lequel la tâche de propagation du bloc de messagerie transformer est planifiée.

_PScheduleGroup
Objet ScheduleGroup dans lequel la tâche de propagation du bloc de messagerie transformer est planifiée. L’objet Scheduler utilisé est suggéré par le groupe de planification.

Notes

Le runtime utilise le planificateur par défaut si vous ne spécifiez pas les paramètres _PScheduler ou _PScheduleGroup .

Le type _Transform_method est un fonctor avec signature _Output (_Input const &) qui est appelé par ce transformer bloc de messagerie pour traiter un message.

Le type filter_method est un fonctor avec signature bool (_Input const &) qui est appelé par ce transformer bloc de messagerie pour déterminer s’il doit accepter ou non un message proposé.

~transformateur

Détruit le transformer bloc de messagerie.

~transformer();

Voir aussi

accès concurrentiel Namespace
call, classe