Share via


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_managerpropagator_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

Isource

ITarget

source_block

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.

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.

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.

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.

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