Classe ITarget
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;