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à
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à.
link_source
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();
unlink_source
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.
unlink_sources
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.