Share via


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
Propagare 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à

ISource

ITarget

source_block

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à.

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.

Propagare

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.

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.

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.

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