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
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.
link_target_notification
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 _PMessage
ré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