Share via


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

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.

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.

Quando sottoposto a override in una classe derivata, scollega tutti i blocchi di destinazione da questo ISource blocco.

virtual void unlink_targets() = 0;

Vedi anche

Spazio dei nomi concurrency
Classe ITarget