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 usano messaggi a loro offerti da 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 |
|---|---|
| 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. |
| 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 sottoposto a override in una classe derivata, scollega un blocco di origine specificato da questo ITarget blocco. |
| unlink_sources | Quando sottoposto a override in una classe derivata, scollega tutti i blocchi di origine da questo ITarget blocco. |
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();
link_source
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
Blocco ISource collegato a questo ITarget blocco.
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 di origine che offre il messaggio.
Valore restituito
Un message_status'indicazione di ciò che la destinazione ha deciso di fare con il messaggio.
Osservazioni:
Il metodo genera un'eccezione invalid_argument se il _PMessage parametro o _PSource è NULL.
send
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 di origine che offre il messaggio.
Valore restituito
Un message_status'indicazione di ciò che la destinazione ha deciso di fare con il messaggio.
Osservazioni:
Il metodo genera un'eccezione invalid_argument se il _PMessage parametro o _PSource è NULL.
L'uso del metodo all'esterno dell'avvio send del messaggio e la propagazione dei messaggi all'interno di una rete è pericoloso e può causare deadlock.
Quando send termina, il messaggio è già stato accettato e trasferito nel blocco di destinazione oppure è stato rifiutato dalla 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 acide.
virtual bool supports_anonymous_source();
Valore restituito
true se il blocco può accettare un messaggio da un'origine non collegata false in caso contrario.
unlink_source
Quando sottoposto a override in una classe derivata, scollega un blocco di origine specificato da questo ITarget blocco.
virtual void unlink_source(_Inout_ ISource<T>* _PSource) = 0;
Parametri
_PSource
Blocco ISource scollegato da questo ITarget blocco.
Osservazioni:
Questa funzione non deve essere chiamata direttamente in un ITarget blocco. I blocchi devono essere disconnessi usando i metodi o unlink_targets sui unlink_target ISource blocchi, che richiameranno il unlink_source metodo sulla destinazione corrispondente.
unlink_sources
Quando sottoposto a override in una classe derivata, scollega tutti i blocchi di origine da questo ITarget blocco.
virtual void unlink_sources() = 0;