ISource, classe
La classe ISource
est l'interface de tous les blocs sources. Les blocs sources propagent les messages aux blocs ITarget
.
Syntaxe
template<class T>
class ISource;
Paramètres
T
Type de données de la charge utile dans les messages générés par le bloc source.
Membres
Typedefs publics
Nom | Description |
---|---|
source_type |
Alias de type pour T . |
Constructeurs publics
Nom | Description |
---|---|
~ISource Destructor | Détruit l’objet ISource . |
Méthodes publiques
Nom | Description |
---|---|
accepter | En cas de substitution dans une classe dérivée, accepte un message proposé par ce ISource bloc, en transférant la propriété à l’appelant. |
acquire_ref | En cas de substitution dans une classe dérivée, acquiert un nombre de références sur ce ISource bloc pour empêcher la suppression. |
Utiliser | En cas de substitution dans une classe dérivée, consomme un message précédemment proposé par ce ISource bloc et correctement réservé par la cible, transférant la propriété à l’appelant. |
link_target | En cas de substitution dans une classe dérivée, lie un bloc cible à ce ISource bloc. |
release | En cas de substitution dans une classe dérivée, libère une réservation de message réussie précédente. |
release_ref | En cas de substitution dans une classe dérivée, libère un nombre de références sur ce ISource bloc. |
reserve | En cas de substitution dans une classe dérivée, réserve un message précédemment proposé par ce ISource bloc. |
unlink_target | En cas de substitution dans une classe dérivée, dissocie un bloc cible de ce ISource bloc, s’il est trouvé précédemment lié. |
unlink_targets | En cas de substitution dans une classe dérivée, dissocie tous les blocs cibles de ce ISource bloc. |
Notes
Pour plus d’informations, consultez Blocs de messages asynchrones.
Hiérarchie d'héritage
ISource
Spécifications
En-tête : agents.h
Espace de noms : concurrency
accepter
En cas de substitution dans une classe dérivée, accepte un message proposé par ce ISource
bloc, en transférant la propriété à l’appelant.
virtual message<T>* accept(
runtime_object_identity _MsgId,
_Inout_ ITarget<T>* _PTarget) = 0;
Paramètres
_MsgId
Objet runtime_object_identity
proposé message
.
_PTarget
Pointeur vers le bloc cible appelant la accept
méthode.
Valeur de retour
Pointeur vers le message dont l’appelant a désormais la propriété.
Notes
La accept
méthode est appelée par une cible pendant qu’un message est proposé par ce ISource
bloc. Le pointeur de message retourné peut être différent de celui passé dans la propagate
méthode du ITarget
bloc, si cette source décide d’effectuer une copie du message.
acquire_ref
En cas de substitution dans une classe dérivée, acquiert un nombre de références sur ce ISource
bloc pour empêcher la suppression.
virtual void acquire_ref(_Inout_ ITarget<T>* _PTarget) = 0;
Paramètres
_PTarget
Pointeur vers le bloc cible qui appelle cette méthode.
Notes
Cette méthode est appelée par un ITarget
objet lié à cette source pendant la link_target
méthode.
consommer
En cas de substitution dans une classe dérivée, consomme un message précédemment proposé par ce ISource
bloc et correctement réservé par la cible, transférant la propriété à l’appelant.
virtual message<T>* consume(
runtime_object_identity _MsgId,
_Inout_ ITarget<T>* _PTarget) = 0;
Paramètres
_MsgId
Objet runtime_object_identity
réservé message
.
_PTarget
Pointeur vers le bloc cible appelant la consume
méthode.
Valeur de retour
Pointeur vers l’objet message
dont l’appelant a désormais la propriété.
Notes
La consume
méthode est similaire à accept
, mais doit toujours être précédée d’un appel à reserve
celui retourné true
.
~ISource
Détruit l’objet ISource
.
virtual ~ISource();
link_target
En cas de substitution dans une classe dérivée, lie un bloc cible à ce ISource
bloc.
virtual void link_target(_Inout_ ITarget<T>* _PTarget) = 0;
Paramètres
_PTarget
Pointeur vers le bloc cible lié à ce ISource
bloc.
release
En cas de substitution dans une classe dérivée, libère une réservation de message réussie précédente.
virtual void release(
runtime_object_identity _MsgId,
_Inout_ ITarget<T>* _PTarget) = 0;
Paramètres
_MsgId
Objet runtime_object_identity
réservé message
.
_PTarget
Pointeur vers le bloc cible appelant la release
méthode.
release_ref
En cas de substitution dans une classe dérivée, libère un nombre de références sur ce ISource
bloc.
virtual void release_ref(_Inout_ ITarget<T>* _PTarget) = 0;
Paramètres
_PTarget
Pointeur vers le bloc cible qui appelle cette méthode.
Notes
Cette méthode est appelée par un ITarget
objet qui n’est pas dissocié de cette source. Le bloc source est autorisé à libérer toutes les ressources réservées au bloc cible.
reserve
En cas de substitution dans une classe dérivée, réserve un message précédemment proposé par ce ISource
bloc.
virtual bool reserve(
runtime_object_identity _MsgId,
_Inout_ ITarget<T>* _PTarget) = 0;
Paramètres
_MsgId
Objet runtime_object_identity
proposé message
.
_PTarget
Pointeur vers le bloc cible appelant la reserve
méthode.
Valeur de retour
true
si le message a été correctement réservé, false
sinon. Les réservations peuvent échouer pour de nombreuses raisons, notamment : le message a déjà été réservé ou accepté par une autre cible, la source peut refuser les réservations, etc.
Notes
Une fois l’appel reserve
effectué, s’il réussit, vous devez appeler l’un consume
release
ou l’autre pour prendre ou abandonner la possession du message, respectivement.
unlink_target
En cas de substitution dans une classe dérivée, dissocie un bloc cible de ce ISource
bloc, s’il est trouvé précédemment lié.
virtual void unlink_target(_Inout_ ITarget<T>* _PTarget) = 0;
Paramètres
_PTarget
Pointeur vers le bloc cible dissocié de ce ISource
bloc.
unlink_targets
En cas de substitution dans une classe dérivée, dissocie tous les blocs cibles de ce ISource
bloc.
virtual void unlink_targets() = 0;