Condividi tramite


Classe ITarget

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

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.

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.

Quando sovrascritto in una classe derivata, disconnette tutti i blocchi sorgente da questo blocco ITarget.

virtual void unlink_sources() = 0;

Vedi anche

Spazio dei nomi concorrenza
Classe ISource