target_block, classe
La classe target_block
est une classe de base abstraite qui fournit une fonctionnalité de gestion des liens de base et une vérification des erreurs pour les blocs cibles uniquement.
Syntaxe
template<class _SourceLinkRegistry, class _MessageProcessorType = ordered_message_processor<typename _SourceLinkRegistry::type::source_type>>
class target_block : public ITarget<typename _SourceLinkRegistry::type::source_type>;
Paramètres
_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 cet source_link_manager target_block objet. |
Constructeurs publics
Nom | Description |
---|---|
target_block | Construit un objet target_block . |
~target_block Destructeur | Détruit l’objet target_block . |
Méthodes publiques
Nom | Description |
---|---|
propager | Transmet de façon asynchrone un message d’un bloc source à ce bloc cible. |
send | Transmet de façon synchrone un message d’un bloc source à ce bloc cible. |
Méthodes protégées
Nom | Description |
---|---|
async_send | Envoie de façon asynchrone un message pour le traitement. |
decline_incoming_messages | Indique au bloc que les nouveaux messages doivent être refusés. |
enable_batched_processing | Active le traitement par lots pour ce bloc. |
initialize_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 target_block objet. |
process_input_messages | Traite les messages reçus en tant qu’entrées. |
process_message | En cas de substitution dans une classe dérivée, traite un message accepté par cet target_block objet. |
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 target_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_sources | Dissocie toutes les sources après avoir attendu la fin des opérations d’envoi asynchrones en attente. |
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 target_block objet. Elle est appelée par la send méthode, lorsqu’elle est appelée par un bloc source. |
sync_send | Envoyez de façon synchrone un message pour le traitement. |
unlink_source | Dissocie un bloc source spécifié de cet target_block objet. |
unlink_sources | Dissocie tous les blocs sources de cet target_block objet. (Remplacements ITarget ::unlink_sources.) |
wait_for_async_sends | Attend que toutes les propagations asynchrones se terminent. |
Hiérarchie d'héritage
target_block
Spécifications
En-tête : agents.h
Espace de noms : concurrency
async_send
Envoie de façon asynchrone un message pour le traitement.
void async_send(_Inout_opt_ message<_Source_type>* _PMessage);
Paramètres
_PMessage
Pointeur vers le message envoyé.
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.
enable_batched_processing
Active le traitement par lots pour ce bloc.
void enable_batched_processing();
initialize_target
Initialise l’objet de base. Plus précisément, l’objet message_processor
doit être initialisé.
void initialize_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 target_block
objet.
virtual void link_source(_Inout_ ISource<_Source_type>* _PSource);
Paramètres
_PSource
Pointeur vers le ISource
bloc à lier.
Notes
Cette fonction ne doit pas être appelée directement sur un target_block
objet. Les blocs doivent être connectés à l’aide de la link_target
méthode sur ISource
les blocs, ce qui appelle la link_source
méthode sur la cible correspondante.
process_input_messages
Traite les messages reçus en tant qu’entrées.
virtual void process_input_messages(_Inout_ message<_Source_type>* _PMessage);
Paramètres
_PMessage
Pointeur vers le message à traiter.
process_message
En cas de substitution dans une classe dérivée, traite un message accepté par cet target_block
objet.
virtual void process_message(message<_Source_type> *);
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 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 target_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.
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_sources
Dissocie toutes les sources après avoir attendu la fin des opérations d’envoi asynchrones en attente.
void remove_sources();
Notes
Tous les blocs cibles doivent appeler cette routine pour supprimer les sources dans leur destructeur.
Envoyer
Transmet de façon synchrone un message d’un bloc source à ce bloc cible.
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
La méthode lève une exception invalid_argument si le ou _PSource
le _PMessage
paramètre est NULL
.
L’utilisation de la méthode en dehors de l’initiation send
des messages et la propagation de messages au sein d’un réseau est dangereuse et peut entraîner un blocage.
Lorsqu’il send
est retourné, le message a déjà été accepté et transféré dans le bloc cible, ou il a été refusé par la cible.
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 target_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.
sync_send
Envoyez de façon synchrone un message pour le traitement.
void sync_send(_Inout_opt_ message<_Source_type>* _PMessage);
Paramètres
_PMessage
Pointeur vers le message envoyé.
target_block
Construit un objet target_block
.
target_block();
~target_block
Détruit l’objet target_block
.
virtual ~target_block();
unlink_source
Dissocie un bloc source spécifié de cet target_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 target_block
objet.
virtual void unlink_sources();
wait_for_async_sends
Attend que toutes les propagations asynchrones se terminent.
void wait_for_async_sends();
Notes
Cette méthode est utilisée par les destructeurs de bloc de message pour s’assurer que toutes les opérations asynchrones ont eu le temps de se terminer avant de détruire le bloc.