propagator_block, classe
La classe propagator_block
est une classe de base abstraite pour les blocs de messages qui sont à la fois une source et une cible. Elle combine les fonctionnalités des classes source_block
et target_block
.
Syntaxe
template<class _TargetLinkRegistry, class _SourceLinkRegistry, class _MessageProcessorType = ordered_message_processor<typename _TargetLinkRegistry::type::type>>
class propagator_block : public source_block<_TargetLinkRegistry,
_MessageProcessorType>,
public ITarget<typename _SourceLinkRegistry::type::source_type>;
Paramètres
_TargetLinkRegistry
Registre de liens à utiliser pour contenir les liens cibles.
_SourceLinkRegistry
Registre de liens à utiliser pour contenir les liens sources.
_MessageProcessorType
Type de processeur pour le traitement des messages.
Membres
Typedefs publics
Nom | Description |
---|---|
source_iterator |
Type de l’itérateur pour ce source_link_manager propagator_block . |
Constructeurs publics
Nom | Description |
---|---|
propagator_block | Construit un objet propagator_block . |
~propagator_block Destructeur | Détruit un objet propagator_block . |
Méthodes publiques
Nom | Description |
---|---|
propager | Transmet de façon asynchrone un message d’un bloc source à ce bloc cible. |
send | Lance de façon synchrone un message sur ce bloc. Appelé par un ISource bloc. Une fois cette fonction terminée, le message est déjà propagé dans le bloc. |
Méthodes protégées
Nom | Description |
---|---|
decline_incoming_messages | Indique au bloc que les nouveaux messages doivent être refusés. |
initialize_source_and_target | Initialise l’objet de base. Plus précisément, l’objet message_processor doit être initialisé. |
link_source | Lie un bloc source spécifié à cet propagator_block objet. |
process_input_messages | Traitez les messages d’entrée. Cela est utile uniquement pour les blocs de propagation, qui dérivent de source_block (substitue source_block ::p rocess_input_messages.) |
propagate_message | En cas de substitution dans une classe dérivée, cette méthode transmet de façon asynchrone un message d’un ISource bloc à cet propagator_block objet. Elle est appelée par la propagate méthode, lorsqu’elle est appelée par un bloc source. |
register_filter | Inscrit une méthode de filtre qui sera appelée sur chaque message reçu. |
remove_network_links | Supprime tous les liens réseau source et cible de cet propagator_block objet. |
send_message | En cas de substitution dans une classe dérivée, cette méthode transmet de façon synchrone un message d’un ISource bloc à cet propagator_block objet. Elle est appelée par la send méthode, lorsqu’elle est appelée par un bloc source. |
unlink_source | Dissocie un bloc source spécifié de cet propagator_block objet. |
unlink_sources | Dissocie tous les blocs sources de cet propagator_block objet. (Remplacements ITarget ::unlink_sources.) |
Notes
Pour éviter l’héritage multiple, la propagator_block
classe hérite de la classe et ITarget
de la source_block
classe abstraite. La plupart des fonctionnalités de la target_block
classe sont répliquées ici.
Hiérarchie d'héritage
propagator_block
Spécifications
En-tête : agents.h
Espace de noms : concurrency
decline_incoming_messages
Indique au bloc que les nouveaux messages doivent être refusés.
void decline_incoming_messages();
Notes
Cette méthode est appelée par le destructeur pour s’assurer que les nouveaux messages sont refusés pendant que la destruction est en cours.
initialize_source_and_target
Initialise l’objet de base. Plus précisément, l’objet message_processor
doit être initialisé.
void initialize_source_and_target(
_Inout_opt_ Scheduler* _PScheduler = NULL,
_Inout_opt_ ScheduleGroup* _PScheduleGroup = NULL);
Paramètres
_PScheduler
Planificateur à utiliser pour planifier des tâches.
_PScheduleGroup
Groupe de planification à utiliser pour planifier des tâches.
link_source
Lie un bloc source spécifié à cet propagator_block
objet.
virtual void link_source(_Inout_ ISource<_Source_type>* _PSource);
Paramètres
_PSource
Pointeur vers le ISource
bloc à lier.
process_input_messages
Traitez les messages d’entrée. Cela n’est utile que pour les blocs de propagation, qui dérivent de source_block
virtual void process_input_messages(_Inout_ message<_Target_type>* _PMessage);
Paramètres
_PMessage
Pointeur vers le message à traiter.
propager
Transmet de façon asynchrone un message d’un bloc source à ce bloc cible.
virtual message_status propagate(
_Inout_opt_ message<_Source_type>* _PMessage,
_Inout_opt_ ISource<_Source_type>* _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.
Notes
La propagate
méthode est appelée sur un bloc cible par un bloc source lié. Il met en file d’attente une tâche asynchrone pour gérer le message, s’il n’est pas déjà mis en file d’attente ou en cours d’exécution.
La méthode lève une exception invalid_argument si le ou _PSource
le _PMessage
paramètre est NULL
.
propagate_message
En cas de substitution dans une classe dérivée, cette méthode transmet de façon asynchrone un message d’un ISource
bloc à cet propagator_block
objet. 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<_Source_type>* _PMessage,
_Inout_ ISource<_Source_type>* _PSource) = 0;
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.
propagator_block
Construit un objet propagator_block
.
propagator_block();
~propagator_block
Détruit un objet propagator_block
.
virtual ~propagator_block();
register_filter
Inscrit une méthode de filtre qui sera appelée sur chaque message reçu.
void register_filter(filter_method const& _Filter);
Paramètres
_Filtre
Méthode de filtre.
remove_network_links
Supprime tous les liens réseau source et cible de cet propagator_block
objet.
void remove_network_links();
Envoyer
Lance de façon synchrone un message sur ce bloc. Appelé par un ISource
bloc. Une fois cette fonction terminée, le message est déjà propagé dans le bloc.
virtual message_status send(
_Inout_ message<_Source_type>* _PMessage,
_Inout_ ISource<_Source_type>* _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.
Notes
Cette méthode lève une exception invalid_argument si le ou _PSource
le _PMessage
paramètre est NULL
.
send_message
En cas de substitution dans une classe dérivée, cette méthode transmet de façon synchrone un message d’un ISource
bloc à cet propagator_block
objet. 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<_Source_type> *,
_Inout_ ISource<_Source_type> *);
Valeur de retour
Une message_status indication de ce que la cible a décidé de faire avec le message.
Notes
Par défaut, ce bloc retourne declined
sauf substitution par une classe dérivée.
unlink_source
Dissocie un bloc source spécifié de cet propagator_block
objet.
virtual void unlink_source(_Inout_ ISource<_Source_type>* _PSource);
Paramètres
_PSource
Pointeur vers le ISource
bloc à dissocier.
unlink_sources
Dissocie tous les blocs sources de cet propagator_block
objet.
virtual void unlink_sources();
Voir aussi
accès concurrentiel Namespace
source_block, classe
ITarget, classe