Partager via


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

ITarget

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.

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();

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.

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.

Voir aussi

accès concurrentiel Namespace
ITarget, classe