Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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();
link_target
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.
unlink_target
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.
unlink_targets
Quando viene sovrascritto in una classe derivata, scollega tutti i blocchi di destinazione da questo ISource blocco.
virtual void unlink_targets() = 0;