Partager via


Classe overwrite_buffer

Un bloc de messagerie overwrite_buffer est un propagator_block à cibles multiples, à sources multiples et ordonné, capable de stocker un seul message à la fois. Les nouveaux messages remplacent ceux précédemment conservés.

Syntaxe

template<class T>
class overwrite_buffer : public propagator_block<multi_link_registry<ITarget<T>>, multi_link_registry<ISource<T>>>;

Paramètres

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

Membres

Constructeurs publics

Nom Description
overwrite_buffer Surcharge. Construit un overwrite_buffer bloc de messagerie.
~overwrite_buffer Destructeur Détruit le overwrite_buffer bloc de messagerie.

Méthodes publiques

Nom Description
has_value Vérifie si ce overwrite_buffer bloc de messagerie a encore une valeur.
valeur Obtient une référence à la charge utile actuelle du message stocké dans le overwrite_buffer bloc de messagerie.

Méthodes protégées

Nom Description
accept_message Accepte un message proposé par ce overwrite_buffer bloc de messagerie, renvoyant une copie du message à l’appelant.
consume_message Consomme un message précédemment proposé par le overwrite_buffer bloc de messagerie et réservé par la cible, renvoyant une copie du message à l’appelant.
link_target_notification Rappel qui informe qu’une nouvelle cible a été liée à ce overwrite_buffer bloc de messagerie.
propagate_message Transmet de façon asynchrone un message d’un ISource bloc à ce overwrite_buffer 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 Place le message _PMessage bloc de messagerie dans ce overwrite_buffer bloc de messagerie et l’offre à toutes les cibles liées.
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 overwrite_buffer 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 overwrite_buffer 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

Un overwrite_buffer bloc de messagerie propage des copies de son message stocké à chacune de ses cibles.

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

Hiérarchie d'héritage

ISource

ITarget

source_block

propagator_block

overwrite_buffer

Spécifications

En-tête : agents.h

Espace de noms : concurrency

accept_message

Accepte un message proposé par ce overwrite_buffer bloc de messagerie, renvoyant une copie du message à l’appelant.

virtual message<T>* 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é.

Notes

Le overwrite_buffer bloc de messagerie retourne des copies du message à ses cibles, plutôt que de transférer la propriété du message actuellement conservé.

consume_message

Consomme un message précédemment proposé par le overwrite_buffer bloc de messagerie et réservé par la cible, renvoyant une copie du message à l’appelant.

virtual message<T>* 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.

has_value

Vérifie si ce overwrite_buffer bloc de messagerie a encore une valeur.

bool has_value() const;

Valeur de retour

true si le bloc a reçu une valeur, false sinon.

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

virtual void link_target_notification(_Inout_ ITarget<T>* _PTarget);

Paramètres

_PTarget
Pointeur vers la cible nouvellement liée.

~overwrite_buffer

Détruit le overwrite_buffer bloc de messagerie.

~overwrite_buffer();

overwrite_buffer

Construit un overwrite_buffer bloc de messagerie.

overwrite_buffer();

overwrite_buffer(
    filter_method const& _Filter);

overwrite_buffer(
    Scheduler& _PScheduler);

overwrite_buffer(
    Scheduler& _PScheduler,
    filter_method const& _Filter);

overwrite_buffer(
    ScheduleGroup& _PScheduleGroup);

overwrite_buffer(
    ScheduleGroup& _PScheduleGroup,
    filter_method const& _Filter);

Paramètres

_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 overwrite_buffer est planifiée.

_PScheduleGroup
Objet ScheduleGroup dans lequel la tâche de propagation du bloc de messagerie overwrite_buffer 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 filter_method est un fonctor avec signature bool (T const &) qui est appelé par ce overwrite_buffer bloc de messagerie pour déterminer s’il doit accepter ou non un message proposé.

propagate_message

Transmet de façon asynchrone un message d’un ISource bloc à ce overwrite_buffer 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<T>* _PMessage,
    _Inout_ ISource<T>* _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

Place le message _PMessage bloc de messagerie dans ce overwrite_buffer bloc de messagerie et l’offre à toutes les cibles liées.

virtual void propagate_to_any_targets(_Inout_ message<T>* _PMessage);

Paramètres

_PMessage
Pointeur vers un message objet dont cela overwrite_buffer a pris possession.

Notes

Cette méthode remplace le message actuel dans le overwrite_buffer message _PMessagerécemment accepté.

send_message

Transmet de façon synchrone un message d’un ISource bloc à ce overwrite_buffer 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<T>* _PMessage,
    _Inout_ ISource<T>* _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.

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

valeur

Obtient une référence à la charge utile actuelle du message stocké dans le overwrite_buffer bloc de messagerie.

T value();

Valeur de retour

Charge utile du message actuellement stocké.

Notes

La valeur stockée dans le fichier overwrite_buffer peut changer immédiatement après la retour de cette méthode. Cette méthode attend qu’un message arrive si aucun message n’est actuellement stocké dans le overwrite_buffer.

Voir aussi

accès concurrentiel Namespace
Classe unbounded_buffer
single_assignment, classe