Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
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 _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