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 ITarget corrisponde all'interfaccia per tutti i blocchi di destinazione. I blocchi di destinazione consumano i messaggi a loro offerti dai blocchi ISource.
Sintassi
template<class T>
class ITarget;
Parametri
T
Tipo di dati del payload all'interno dei messaggi accettati dal blocco di destinazione.
Membri
Typedef pubblici
| Nome | Descrizione |
|---|---|
filter_method |
Firma di qualsiasi metodo utilizzato dal blocco che restituisce un bool valore per determinare se deve essere accettato un messaggio offerto. |
type |
Alias di tipo per T. |
Costruttori pubblici
| Nome | Descrizione |
|---|---|
| Distruttore ~ITarget | Elimina definitivamente l'oggetto ITarget . |
Metodi pubblici
| Nome | Descrizione |
|---|---|
| propagare | Quando sottoposto a override in una classe derivata, passa in modo asincrono un messaggio da un blocco di origine a questo blocco di destinazione. |
| send | Quando sottoposto a override in una classe derivata, passa in modo sincrono un messaggio al blocco di destinazione. |
| supports_anonymous_source | Quando viene sottoposto a override in una classe derivata, restituisce true o false a seconda che il blocco dei messaggi accetti messaggi offerti da un'origine che non è collegata a esso. Se il metodo sottoposto a override restituisce true, la destinazione non può posticipare un messaggio offerto, poiché l'utilizzo di un messaggio posticipato in un secondo momento richiede che l'origine venga identificata nel registro dei collegamenti di origine. |
Metodi protetti
| Nome | Descrizione |
|---|---|
| link_source | Quando sottoposto a override in una classe derivata, collega un blocco di origine specificato a questo ITarget blocco. |
| unlink_source | Quando viene sovrascritta in una classe derivata, scollega il blocco di origine specificato da questo ITarget blocco. |
| unlink_sources | Quando sovrascritto in una classe derivata, disconnette tutti i blocchi sorgente da questo blocco ITarget. |
Osservazioni:
Per altre informazioni, vedere Blocchi di messaggi asincroni.
Gerarchia di ereditarietà
ITarget
Requisiti
Intestazione: agents.h
Spazio dei nomi: Concurrency
~ITarget
Elimina definitivamente l'oggetto ITarget .
virtual ~ITarget();
fonte_collegamento
Quando sottoposto a override in una classe derivata, collega un blocco di origine specificato a questo ITarget blocco.
virtual void link_source(_Inout_ ISource<T>* _PSource) = 0;
Parametri
_PSource
Il blocco ISource è collegato a questo blocco ITarget.
Osservazioni:
Questa funzione non deve essere chiamata direttamente in un ITarget blocco. I blocchi devono essere connessi insieme usando il link_target metodo sui ISource blocchi, che richiameranno il link_source metodo sulla destinazione corrispondente.
propagarsi
Quando sottoposto a override in una classe derivata, passa in modo asincrono un messaggio da un blocco di origine a questo blocco di destinazione.
virtual message_status propagate(
_Inout_opt_ message<T>* _PMessage,
_Inout_opt_ ISource<T>* _PSource) = 0;
Parametri
_PMessage
Puntatore all'oggetto message.
_PSource
Puntatore al blocco sorgente che offre il messaggio.
Valore restituito
Un'indicazione dello stato del messaggio su ciò che il destinatario ha deciso di fare con il messaggio.
Osservazioni:
Il metodo genera un'eccezione invalid_argument se il _PMessage parametro o _PSource è NULL.
inviare
Quando sottoposto a override in una classe derivata, passa in modo sincrono un messaggio al blocco di destinazione.
virtual message_status send(
_Inout_ message<T>* _PMessage,
_Inout_ ISource<T>* _PSource) = 0;
Parametri
_PMessage
Puntatore all'oggetto message.
_PSource
Puntatore al blocco sorgente che offre il messaggio.
Valore restituito
Un'indicazione dello stato del messaggio su ciò che il destinatario ha deciso di fare con il messaggio.
Osservazioni:
Il metodo genera un'eccezione invalid_argument se il _PMessage parametro o _PSource è NULL.
L'utilizzo del metodo send al di fuori dell'iniziazione del messaggio e per propagare i messaggi all'interno di una rete è pericoloso e può portare a un deadlock.
Quando send termina, il messaggio è già stato accettato e trasferito nel blocco di destinazione oppure è stato rifiutato dalla destinazione.
supporta_sorgente_anonima
Quando viene sottoposto a override in una classe derivata, restituisce true o false a seconda che il blocco dei messaggi accetti messaggi offerti da un'origine che non è collegata a esso. Se il metodo sovrascritto restituisce true, il destinatario non può posticipare un messaggio offerto, poiché l'utilizzo di un messaggio posticipato in un secondo momento richiede che l'origine venga identificata nel registro dei collegamenti della sorgente.
virtual bool supports_anonymous_source();
Valore restituito
true se il blocco può accettare un messaggio da un'origine non collegata false in caso contrario.
disconnetti_sorgente
Quando viene sovrascritta in una classe derivata, scollega il blocco di origine specificato da questo ITarget blocco.
virtual void unlink_source(_Inout_ ISource<T>* _PSource) = 0;
Parametri
_PSource
Il blocco ISource è stato scollegato da questo blocco ITarget.
Osservazioni:
Questa funzione non deve essere chiamata direttamente in un ITarget blocco. I blocchi devono essere disconnessi utilizzando i metodi unlink_target o unlink_targets sui blocchi ISource, il che richiamerà il metodo unlink_source sulla destinazione corrispondente.
scollega_fonti
Quando sovrascritto in una classe derivata, disconnette tutti i blocchi sorgente da questo blocco ITarget.
virtual void unlink_sources() = 0;