Classe propagator_block
La classe propagator_block
è una classe base astratta per blocchi di messaggio che sono sia origine sia destinazione. Combina la funzionalità delle classi source_block
e target_block
.
Sintassi
template<class _TargetLinkRegistry, class _SourceLinkRegistry, class _MessageProcessorType = ordered_message_processor<typename _TargetLinkRegistry::type::type>>
class propagator_block : public source_block<_TargetLinkRegistry,
_MessageProcessorType>,
public ITarget<typename _SourceLinkRegistry::type::source_type>;
Parametri
_TargetLinkRegistry
Registro di sistema dei collegamenti da utilizzare per contenere i collegamenti di destinazione.
_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 .propagator_block |
Costruttori pubblici
Nome | Descrizione |
---|---|
propagator_block | Costruisce un oggetto propagator_block . |
Distruttore ~propagator_block | Elimina un oggetto propagator_block . |
Metodi pubblici
Nome | Descrizione |
---|---|
propagarsi | Passa in modo asincrono un messaggio da un blocco di origine a questo blocco di destinazione. |
send | Avvia in modo sincrono un messaggio a questo blocco. Chiamato da un ISource blocco. Al termine di questa funzione, il messaggio verrà già propagato nel blocco. |
Metodi protetti
Nome | Descrizione |
---|---|
decline_incoming_messages | Indica al blocco che i nuovi messaggi devono essere rifiutati. |
initialize_source_and_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 propagator_block oggetto. |
process_input_messages | Elabora i messaggi di input. Ciò è utile solo per i blocchi propagatori, che derivano da source_block (esegue l'override di source_block::p rocess_input_messages. |
propagate_message | Quando sottoposto a override in una classe derivata, questo metodo passa in modo asincrono un messaggio da un ISource blocco a questo propagator_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_network_links | Rimuove tutti i collegamenti di rete di origine e di destinazione da questo propagator_block oggetto. |
send_message | Quando sottoposto a override in una classe derivata, questo metodo passa in modo sincrono un messaggio da un ISource blocco a questo propagator_block oggetto. Viene richiamato dal send metodo , quando viene chiamato da un blocco di origine. |
unlink_source | Scollega un blocco di origine specificato da questo propagator_block oggetto. |
unlink_sources | Scollega tutti i blocchi di origine da questo propagator_block oggetto. (sostituzioni )ITarget::unlink_sources.) |
Osservazioni:
Per evitare più ereditarietà, la propagator_block
classe eredita dalla classe e ITarget
dalla source_block
classe astratta. La maggior parte delle funzionalità della target_block
classe viene replicata qui.
Gerarchia di ereditarietà
propagator_block
Requisiti
Intestazione: agents.h
Spazio dei nomi: Concurrency
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.
initialize_source_and_target
Inizializza l'oggetto di base. In particolare, l'oggetto message_processor
deve essere inizializzato.
void initialize_source_and_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 propagator_block
oggetto.
virtual void link_source(_Inout_ ISource<_Source_type>* _PSource);
Parametri
_PSource
Puntatore al ISource
blocco da collegare.
process_input_messages
Elabora i messaggi di input. Questa operazione è utile solo per i blocchi di propagazione che derivano da source_block
virtual void process_input_messages(_Inout_ message<_Target_type>* _PMessage);
Parametri
_PMessage
Puntatore al messaggio da elaborare.
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 propagate
metodo viene richiamato su un blocco di destinazione da un blocco di origine collegato. Accoda un'attività asincrona per gestire il messaggio, se non è già in coda o in esecuzione.
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 propagator_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.
propagator_block
Costruisce un oggetto propagator_block
.
propagator_block();
~propagator_block
Elimina un oggetto propagator_block
.
virtual ~propagator_block();
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_network_links
Rimuove tutti i collegamenti di rete di origine e di destinazione da questo propagator_block
oggetto.
void remove_network_links();
send
Avvia in modo sincrono un messaggio a questo blocco. Chiamato da un ISource
blocco. Al termine di questa funzione, il messaggio verrà già propagato nel blocco.
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:
Questo metodo genera un'eccezione invalid_argument se il _PMessage
parametro o _PSource
è NULL
.
send_message
Quando sottoposto a override in una classe derivata, questo metodo passa in modo sincrono un messaggio da un ISource
blocco a questo propagator_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.
unlink_source
Scollega un blocco di origine specificato da questo propagator_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 propagator_block
oggetto.
virtual void unlink_sources();
Vedi anche
Spazio dei nomi concurrency
Classe source_block
Classe ITarget