Classe ISource
La classe ISource
corrisponde all'interfaccia per tutti i blocchi di origine. I blocchi di origine propagano messaggi ai blocchi ITarget
.
Sintassi
template<class T>
class ISource;
Parametri
T
Tipo di dati del payload all'interno dei messaggi generati dal blocco di origine.
Membri
Typedef pubblici
Nome | Descrizione |
---|---|
source_type |
Alias di tipo per T . |
Costruttori pubblici
Nome | Descrizione |
---|---|
Distruttore ~ISource | Elimina definitivamente l'oggetto ISource . |
Metodi pubblici
Nome | Descrizione |
---|---|
accettare | Quando sottoposto a override in una classe derivata, accetta un messaggio offerto da questo ISource blocco, trasferendo la proprietà al chiamante. |
acquire_ref | Quando sottoposto a override in una classe derivata, acquisisce un conteggio dei riferimenti su questo ISource blocco per impedire l'eliminazione. |
utilizzare | Quando sottoposto a override in una classe derivata, utilizza un messaggio offerto in precedenza da questo ISource blocco e riservato correttamente dalla destinazione, trasferendo la proprietà al chiamante. |
link_target | Quando sottoposto a override in una classe derivata, collega un blocco di destinazione a questo ISource blocco. |
release | Quando ne viene eseguito l'override in una classe derivata, rilascia una prenotazione di messaggi con esito positivo precedente. |
release_ref | Quando sottoposto a override in una classe derivata, rilascia un conteggio dei riferimenti su questo ISource blocco. |
reserve | Quando sottoposto a override in una classe derivata, riserva un messaggio offerto in precedenza da questo ISource blocco. |
unlink_target | Se sottoposto a override in una classe derivata, scollega un blocco di destinazione da questo ISource blocco, se trovato in precedenza collegato. |
unlink_targets | Quando sottoposto a override in una classe derivata, scollega tutti i blocchi di destinazione da questo ISource blocco. |
Osservazioni:
Per altre informazioni, vedere Blocchi di messaggi asincroni.
Gerarchia di ereditarietà
ISource
Requisiti
Intestazione: agents.h
Spazio dei nomi: Concurrency
accept
Quando sottoposto a override in una classe derivata, accetta un messaggio offerto da questo ISource
blocco, trasferendo la proprietà al chiamante.
virtual message<T>* accept(
runtime_object_identity _MsgId,
_Inout_ ITarget<T>* _PTarget) = 0;
Parametri
_MsgId
Oggetto runtime_object_identity
dell'oggetto offerto message
.
_PTarget
Puntatore al blocco di destinazione che chiama il accept
metodo .
Valore restituito
Puntatore al messaggio di cui il chiamante ha ora la proprietà.
Osservazioni:
Il accept
metodo viene chiamato da una destinazione mentre un messaggio viene offerto da questo ISource
blocco. Il puntatore del messaggio restituito può essere diverso da quello passato al propagate
metodo del ITarget
blocco, se l'origine decide di creare una copia del messaggio.
acquire_ref
Quando sottoposto a override in una classe derivata, acquisisce un conteggio dei riferimenti su questo ISource
blocco per impedire l'eliminazione.
virtual void acquire_ref(_Inout_ ITarget<T>* _PTarget) = 0;
Parametri
_PTarget
Puntatore al blocco di destinazione che chiama questo metodo.
Osservazioni:
Questo metodo viene chiamato da un ITarget
oggetto collegato a questa origine durante il link_target
metodo .
consume
Quando sottoposto a override in una classe derivata, utilizza un messaggio offerto in precedenza da questo ISource
blocco e riservato correttamente dalla destinazione, trasferendo la proprietà al chiamante.
virtual message<T>* consume(
runtime_object_identity _MsgId,
_Inout_ ITarget<T>* _PTarget) = 0;
Parametri
_MsgId
Oggetto runtime_object_identity
dell'oggetto riservato message
.
_PTarget
Puntatore al blocco di destinazione che chiama il consume
metodo .
Valore restituito
Puntatore all'oggetto message
di cui il chiamante ha ora la proprietà.
Osservazioni:
Il consume
metodo è simile a accept
, ma deve essere sempre preceduto da una chiamata a reserve
che ha restituito true
.
~ISource
Elimina definitivamente l'oggetto ISource
.
virtual ~ISource();
link_target
Quando sottoposto a override in una classe derivata, collega un blocco di destinazione a questo ISource
blocco.
virtual void link_target(_Inout_ ITarget<T>* _PTarget) = 0;
Parametri
_PTarget
Puntatore al blocco di destinazione collegato a questo ISource
blocco.
release
Quando ne viene eseguito l'override in una classe derivata, rilascia una prenotazione di messaggi con esito positivo precedente.
virtual void release(
runtime_object_identity _MsgId,
_Inout_ ITarget<T>* _PTarget) = 0;
Parametri
_MsgId
Oggetto runtime_object_identity
dell'oggetto riservato message
.
_PTarget
Puntatore al blocco di destinazione che chiama il release
metodo .
release_ref
Quando sottoposto a override in una classe derivata, rilascia un conteggio dei riferimenti su questo ISource
blocco.
virtual void release_ref(_Inout_ ITarget<T>* _PTarget) = 0;
Parametri
_PTarget
Puntatore al blocco di destinazione che chiama questo metodo.
Osservazioni:
Questo metodo viene chiamato da un ITarget
oggetto che viene scollegato da questa origine. Il blocco di origine può rilasciare tutte le risorse riservate per il blocco di destinazione.
reserve
Quando sottoposto a override in una classe derivata, riserva un messaggio offerto in precedenza da questo ISource
blocco.
virtual bool reserve(
runtime_object_identity _MsgId,
_Inout_ ITarget<T>* _PTarget) = 0;
Parametri
_MsgId
Oggetto runtime_object_identity
dell'oggetto offerto message
.
_PTarget
Puntatore al blocco di destinazione che chiama il reserve
metodo .
Valore restituito
true
se il messaggio è stato riservato correttamente, false
in caso contrario. Le prenotazioni possono avere esito negativo per vari motivi, ad esempio: il messaggio era già riservato o accettato da un'altra destinazione, le prenotazioni potrebbero essere negate dall'origine e così via.
Osservazioni:
Dopo aver chiamato reserve
, se ha esito positivo, è necessario chiamare consume
o release
per accettare o rinunciare rispettivamente al possesso del messaggio.
unlink_target
Se sottoposto a override in una classe derivata, scollega un blocco di destinazione da questo ISource
blocco, se trovato in precedenza collegato.
virtual void unlink_target(_Inout_ ITarget<T>* _PTarget) = 0;
Parametri
_PTarget
Puntatore al blocco di destinazione scollegato da questo ISource
blocco.
unlink_targets
Quando sottoposto a override in una classe derivata, scollega tutti i blocchi di destinazione da questo ISource
blocco.
virtual void unlink_targets() = 0;