Share via


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
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 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();

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.

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.

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.

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_targetISource blocchi, che richiameranno il unlink_source metodo sulla destinazione corrispondente.

Quando sottoposto a override in una classe derivata, scollega tutti i blocchi di origine da questo ITarget blocco.

virtual void unlink_sources() = 0;

Vedi anche

Spazio dei nomi concurrency
Classe ISource