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.

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 del collegamento da utilizzare per il mantenimento dei collegamenti di destinazione.

  • _SourceLinkRegistry
    Registro di sistema del collegamento da utilizzare per il mantenimento dei collegamenti di origine.

  • _MessageProcessorType
    Tipo di processore per elaborazione del messaggio.

Membri

Typedef pubblici

Nome

Oggetto di descrizione

source_iterator

Tipo di iteratore per source_link_manager di propagator_block.

Costruttori pubblici

Nome

Oggetto di descrizione

Costruttore propagator_block::propagator_block

Costruisce un oggetto propagator_block.

Distruttore propagator_block::~propagator_block

Elimina un oggetto propagator_block.

Metodi pubblici

Nome

Oggetto di descrizione

Metodo propagator_block::propagate

Consente di passare in modo asincrono un messaggio da un blocco di origine a quello di destinazione.

Metodo propagator_block::send

Consente di avviare in modo sincrono un messaggio per questo blocco. Chiamato da un blocco ISource. Quando la funzione viene completata, il messaggio sarà già stato propagato nel blocco.

Metodi protetti

Nome

Oggetto di descrizione

Metodo propagator_block::decline_incoming_messages

Consente di indicare il blocco che deve rifiutare i nuovi messaggi.

Metodo propagator_block::initialize_source_and_target

Consente di inizializzare l'oggetto di base. In particolare, l'oggetto message_processor ha bisogno di essere inizializzato.

Metodo propagator_block::link_source

Collega un blocco di origine specificato all'oggetto propagator_block.

Metodo propagator_block::propagate_message

Quando sottoposto a override in una classe derivata, il metodo passa in modo asincrono un messaggio da un blocco ISource all'oggetto propagator_block. Viene richiamato dal metodo propagate se chiamato da un blocco di origine.

Metodo propagator_block::register_filter

Consente di registrare un metodo di filtro che verrà richiamato a ogni messaggio ricevuto.

Metodo propagator_block::remove_network_links

Consente di rimuovere tutti i collegamenti di rete di origine e di destinazione da tale oggetto propagator_block.

Metodo propagator_block::send_message

Quando sottoposto a override in una classe derivata, il metodo passa in modo sincrono un messaggio da un blocco ISource all'oggetto propagator_block. Viene richiamato dal metodo send se chiamato da un blocco di origine.

Metodo propagator_block::unlink_source

Consente di scollegare un blocco di origine specificato dall'oggetto propagator_block.

Metodo propagator_block::unlink_sources

Consente di scollegare tutti i blocchi di origine dall'oggetto propagator_block. (Esegue l'override di ITarget::unlink_sources.)

Note

Per ottenere l'ereditarietà multipla, la classe propagator_block eredita da quella source_block e da quella astratta ITarget. La maggior parte delle funzioni nella classe target_block è replicata qui.

Gerarchia di ereditarietà

ISource

source_block

ITarget

propagator_block

Requisiti

Header: agents.h

Spazio dei nomi: Concurrency

Vedere anche

Riferimenti

Spazio dei nomi Concurrency

Classe source_block

Classe ITarget