source_block, classe
La classe source_block est une classe de base abstraite pour les blocs source uniquement. La classe fournit une fonctionnalité basique de gestion des liaisons et vérifie les erreurs courantes.
template<
class _TargetLinkRegistry,
class _MessageProcessorType = ordered_message_processor<typename _TargetLinkRegistry::type::type>
>
class source_block : public ISource<typename _TargetLinkRegistry::type::type>;
Paramètres
_TargetLinkRegistry
Registre de liens à utiliser pour contenir les liens cibles._MessageProcessorType
Type de processeur pour le traitement du message.
Membres
Typedefs publics
Nom |
Description |
---|---|
target_iterator |
Itérateur pour parcourir les cibles connectées. |
Constructeurs publics
Nom |
Description |
---|---|
Construit un objet source_block. |
|
Détruit l'objet source_block. |
Méthodes publiques
Nom |
Description |
---|---|
Accepte un message qui a été transmis par cet objet source_block, en transférant la propriété à l'appelant. |
|
Acquiert un décompte de références sur cet objet source_block, pour empêcher la suppression. |
|
Consomme un message offert précédemment par cet objet source_block et réservé avec succès par la cible, en transférant la propriété à l'appelant. |
|
Lie un bloc cible à cet objet source_block. |
|
Libère une réservation de message réussie précédente. |
|
Libère un nombre de références sur cet objet source_block. |
|
Réserve un message précédemment offert par cet objet source_block. |
|
Dissocie un bloc cible de cet objet source_block. |
|
Dissocie tous les blocs cibles de cet objet source_block. (Substitue ISource::unlink_targets.) |
Méthodes protégées
Nom |
Description |
---|---|
En cas de substitution dans une classe dérivée, accepte un message offert par la source. Les blocs de messages doivent substituer cette méthode pour valider le _MsgId et retourner un message. |
|
Place les messages en file d'attente et démarre une tâche de propagation de façon asynchrone, si cela n'a pas déjà été fait |
|
En cas de substitution dans une classe dérivée, consomme un message qui était précédemment réservé. |
|
Permet de traiter en lots pour ce bloc. |
|
Initialise le message_propagator dans ce source_block. |
|
Rappel qui notifie qu'une nouvelle cible a été liée à cet objet source_block. |
|
Messages d'entrée du processus. Ce n'est utile que pour les blocs de propagateur, qui dérive de bloc source |
|
Messages de propagation aux cibles. |
|
En cas de substitution dans une classe dérivée, propage le message donné une à cible liée particulière ou à toutes. C'est la routine de propagation principale pour les blocs de messages. |
|
En cas de substitution dans une classe dérivée, émet une réservation de message précédente. |
|
Supprime tous les liens cibles de ce bloc source. Doit être appelé à partir du destructeur. |
|
En cas de substitution dans une classe dérivée, réserve un message précédemment offert par cet objet source_block. |
|
En cas de substitution dans une classe dérivée, continue la propagation après qu'une réservation a été émise. |
|
Met en file d'attente de façon synchrone des messages et démarre une tâche de propagation, si cela n'a pas déjà été fait. |
|
Rappel qui notifie qu'une cible a été dissociée de cet objet source_block. |
|
Attend que toutes les propagations asynchrones soient terminées. Cette attente de rotation spécifique au propagateur est utilisée dans les destructeurs de blocs de messages pour veiller à ce que toutes les propagations asynchrones aient le temps de se terminer avant de détruire le bloc. |
Notes
Les blocs de messages doivent dériver de ce bloc pour tirer parti de la gestion et synchronisation de liens et fournies par cette classe.
Hiérarchie d'héritage
source_block
Configuration requise
En-tête : agents.h
Espace de noms : concurrency