Condividi tramite


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 viene eseguito l'override in una classe derivata, accetta un messaggio offerto da questo blocco ISource, trasferendo la proprietà del messaggio 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.
consumare Quando sovrascritto in una classe derivata, consuma un messaggio precedentemente offerto da questo ISource blocco e correttamente riservato dal target, trasferendo la proprietà al chiamante.
link_target Quando viene eseguito un override in una classe derivata, collega un blocco di destinazione a questo ISource blocco.
release Quando viene eseguito l'override in una classe derivata, annulla una prenotazione di messaggio precedentemente riuscita.
release_ref Quando viene sovrascritto in una classe derivata, rilascia un riferimento a questo blocco ISource.
reserve Quando viene sovrascritto in una classe derivata, riserva un messaggio precedentemente offerto da questo blocco ISource.
unlink_target Se sovrascritto in una classe derivata, scollega un blocco di destinazione da questo ISource blocco, se precedentemente collegato.
unlink_targets Quando viene sovrascritto 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

accettare

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
L'oggetto runtime_object_identity dell'offerta message.

_PTarget
Puntatore al blocco di destinazione che chiama il metodo accept.

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ò differire da quello passato al metodo propagate del blocco ITarget se questa origine decide di fare 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 .

consumare

Quando sovrascritto in una classe derivata, consuma un messaggio precedentemente offerto da questo ISource blocco e correttamente riservato dal target, trasferendo la proprietà al chiamante.

virtual message<T>* consume(
    runtime_object_identity _MsgId,
    _Inout_ ITarget<T>* _PTarget) = 0;

Parametri

_MsgId
La runtime_object_identity dell'oggetto riservato message.

_PTarget
Puntatore al blocco di destinazione che chiama il metodo consume.

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.

~Fonte

Elimina definitivamente l'oggetto ISource .

virtual ~ISource();

Quando viene eseguito un 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
Un puntatore al blocco di destinazione a cui questo ISource blocco è collegato.

rilascio

Quando viene eseguito l'override in una classe derivata, annulla una prenotazione di messaggio precedentemente riuscita.

virtual void release(
    runtime_object_identity _MsgId,
    _Inout_ ITarget<T>* _PTarget) = 0;

Parametri

_MsgId
La runtime_object_identity dell'oggetto riservato message.

_PTarget
Puntatore al blocco di destinazione che chiama il metodo release.

release_ref

Quando viene sovrascritto in una classe derivata, rilascia un riferimento a questo blocco ISource.

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.

riserva

Quando viene sovrascritto in una classe derivata, riserva un messaggio precedentemente offerto da questo blocco ISource.

virtual bool reserve(
    runtime_object_identity _MsgId,
    _Inout_ ITarget<T>* _PTarget) = 0;

Parametri

_MsgId
L'oggetto runtime_object_identity dell'offerta message.

_PTarget
Puntatore al blocco di destinazione che chiama il metodo reserve.

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 sovrascritto in una classe derivata, scollega un blocco di destinazione da questo ISource blocco, se precedentemente collegato.

virtual void unlink_target(_Inout_ ITarget<T>* _PTarget) = 0;

Parametri

_PTarget
Un puntatore al blocco di destinazione che viene scollegato da questo blocco ISource.

Quando viene sovrascritto in una classe derivata, scollega tutti i blocchi di destinazione da questo ISource blocco.

virtual void unlink_targets() = 0;

Vedi anche

Spazio dei nomi concorrenza
Classe ITarget