Condividi tramite


Classe target_block

La classe target_block corrisponde a una classe base astratta che mette a disposizione la funzionalità di gestione dei collegamenti di base e il controllo degli errori per blocchi di sola destinazione.

Sintassi

template<class _SourceLinkRegistry, class _MessageProcessorType = ordered_message_processor<typename _SourceLinkRegistry::type::source_type>>
class target_block : public ITarget<typename _SourceLinkRegistry::type::source_type>;

Parametri

_SourceLinkRegistry
Registro di sistema dei collegamenti da utilizzare per contenere i collegamenti di origine.

_MessageProcessorType
Tipo di processore per l'elaborazione dei messaggi.

Membri

Typedef pubblici

Nome Descrizione
source_iterator Tipo dell'iteratore per l'oggetto source_link_manager per questo target_block oggetto.

Costruttori pubblici

Nome Descrizione
target_block Costruisce un oggetto target_block.
Distruttore ~target_block Elimina definitivamente l'oggetto target_block .

Metodi pubblici

Nome Descrizione
propagarsi Passa in modo asincrono un messaggio da un blocco di origine a questo blocco di destinazione.
send Passa in modo sincrono un messaggio da un blocco di origine a questo blocco di destinazione.

Metodi protetti

Nome Descrizione
async_send Invia in modo asincrono un messaggio per l'elaborazione.
decline_incoming_messages Indica al blocco che i nuovi messaggi devono essere rifiutati.
enable_batched_processing Abilita l'elaborazione batch per questo blocco.
initialize_target Inizializza l'oggetto di base. In particolare, l'oggetto message_processor deve essere inizializzato.
link_source Collega un blocco di origine specificato a questo target_block oggetto.
process_input_messages Elabora i messaggi ricevuti come input.
process_message Quando sottoposto a override in una classe derivata, elabora un messaggio che è stato accettato dall'oggetto target_block.
propagate_message Quando sottoposto a override in una classe derivata, questo metodo passa in modo asincrono un messaggio da un ISource blocco a questo target_block oggetto. Viene richiamato dal propagate metodo , quando viene chiamato da un blocco di origine.
register_filter Registra un metodo di filtro che verrà richiamato in ogni messaggio ricevuto.
remove_sources Scollega tutte le origini dopo l'attesa del completamento delle operazioni di invio asincrone in sospeso.
send_message Quando sottoposto a override in una classe derivata, questo metodo passa in modo sincrono un messaggio da un ISource blocco a questo target_block oggetto. Viene richiamato dal send metodo , quando viene chiamato da un blocco di origine.
sync_send Inviare in modo sincrono un messaggio per l'elaborazione.
unlink_source Scollega un blocco di origine specificato da questo target_block oggetto.
unlink_sources Scollega tutti i blocchi di origine da questo target_block oggetto. (sostituzioni )ITarget::unlink_sources.)
wait_for_async_sends Attende il completamento di tutte le propagazioni asincrone.

Gerarchia di ereditarietà

ITarget

target_block

Requisiti

Intestazione: agents.h

Spazio dei nomi: Concurrency

async_send

Invia in modo asincrono un messaggio per l'elaborazione.

void async_send(_Inout_opt_ message<_Source_type>* _PMessage);

Parametri

_PMessage
Puntatore al messaggio inviato.

decline_incoming_messages

Indica al blocco che i nuovi messaggi devono essere rifiutati.

void decline_incoming_messages();

Osservazioni:

Questo metodo viene chiamato dal distruttore per assicurarsi che i nuovi messaggi vengano rifiutati mentre la distruzione è in corso.

enable_batched_processing

Abilita l'elaborazione batch per questo blocco.

void enable_batched_processing();

initialize_target

Inizializza l'oggetto di base. In particolare, l'oggetto message_processor deve essere inizializzato.

void initialize_target(
    _Inout_opt_ Scheduler* _PScheduler = NULL,
    _Inout_opt_ ScheduleGroup* _PScheduleGroup = NULL);

Parametri

_PScheduler
Utilità di pianificazione da usare per la pianificazione delle attività.

_PScheduleGroup
Gruppo di pianificazione da usare per la pianificazione delle attività.

Collega un blocco di origine specificato a questo target_block oggetto.

virtual void link_source(_Inout_ ISource<_Source_type>* _PSource);

Parametri

_PSource
Puntatore al ISource blocco da collegare.

Osservazioni:

Questa funzione non deve essere chiamata direttamente su un target_block oggetto . I blocchi devono essere connessi insieme usando il link_target metodo sui ISource blocchi, che richiameranno il link_source metodo sulla destinazione corrispondente.

process_input_messages

Elabora i messaggi ricevuti come input.

virtual void process_input_messages(_Inout_ message<_Source_type>* _PMessage);

Parametri

_PMessage
Puntatore al messaggio da elaborare.

process_message

Quando sottoposto a override in una classe derivata, elabora un messaggio che è stato accettato dall'oggetto target_block.

virtual void process_message(message<_Source_type> *);

propagarsi

Passa in modo asincrono un messaggio da un blocco di origine a questo blocco di destinazione.

virtual message_status propagate(
    _Inout_opt_ message<_Source_type>* _PMessage,
    _Inout_opt_ ISource<_Source_type>* _PSource);

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.

propagate_message

Quando sottoposto a override in una classe derivata, questo metodo passa in modo asincrono un messaggio da un ISource blocco a questo target_block oggetto. Viene richiamato dal propagate metodo , quando viene chiamato da un blocco di origine.

virtual message_status propagate_message(
    _Inout_ message<_Source_type>* _PMessage,
    _Inout_ ISource<_Source_type>* _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.

register_filter

Registra un metodo di filtro che verrà richiamato in ogni messaggio ricevuto.

void register_filter(filter_method const& _Filter);

Parametri

_Filtro
Metodo di filtro.

remove_sources

Scollega tutte le origini dopo l'attesa del completamento delle operazioni di invio asincrone in sospeso.

void remove_sources();

Osservazioni:

Tutti i blocchi di destinazione devono chiamare questa routine per rimuovere le origini nel distruttore.

send

Passa in modo sincrono un messaggio da un blocco di origine a questo blocco di destinazione.

virtual message_status send(
    _Inout_ message<_Source_type>* _PMessage,
    _Inout_ ISource<_Source_type>* _PSource);

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.

send_message

Quando sottoposto a override in una classe derivata, questo metodo passa in modo sincrono un messaggio da un ISource blocco a questo target_block oggetto. Viene richiamato dal send metodo , quando viene chiamato da un blocco di origine.

virtual message_status send_message(
    _Inout_ message<_Source_type> *,
    _Inout_ ISource<_Source_type> *);

Valore restituito

Un message_status'indicazione di ciò che la destinazione ha deciso di fare con il messaggio.

Osservazioni:

Per impostazione predefinita, questo blocco restituisce a declined meno che non venga sottoposto a override da una classe derivata.

sync_send

Inviare in modo sincrono un messaggio per l'elaborazione.

void sync_send(_Inout_opt_ message<_Source_type>* _PMessage);

Parametri

_PMessage
Puntatore al messaggio inviato.

target_block

Costruisce un oggetto target_block.

target_block();

~target_block

Elimina definitivamente l'oggetto target_block .

virtual ~target_block();

Scollega un blocco di origine specificato da questo target_block oggetto.

virtual void unlink_source(_Inout_ ISource<_Source_type>* _PSource);

Parametri

_PSource
Puntatore al ISource blocco da scollegare.

Scollega tutti i blocchi di origine da questo target_block oggetto.

virtual void unlink_sources();

wait_for_async_sends

Attende il completamento di tutte le propagazioni asincrone.

void wait_for_async_sends();

Osservazioni:

Questo metodo viene usato dai distruttori di blocchi di messaggi per garantire che tutte le operazioni asincrone abbiano avuto tempo per terminare prima di distruggere il blocco.

Vedi anche

Spazio dei nomi concurrency
Classe ITarget