Sdílet prostřednictvím


propagator_block – třída

Třída propagator_block je abstraktní základní třída pro bloky zpráv, které jsou zdrojem i cílem. Kombinuje funkce obou tříd source_block i target_block tříd.

Syntaxe

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>;

Parametry

_TargetLinkRegistry
Registr propojení, který se má použít k uchovávání cílových propojení.

_SourceLinkRegistry
Registr propojení, který se má použít k uchovávání zdrojových odkazů.

_MessageProcessorType
Typ procesoru pro zpracování zpráv.

Členové

Veřejné definice typedef

Jméno popis
source_iterator Typ iterátoru pro source_link_manager tento propagator_blocktyp .

Veřejné konstruktory

Jméno popis
propagator_block propagator_block Vytvoří objekt.
~propagator_block Destruktor propagator_block Zničí objekt.

Veřejné metody

Jméno popis
Rozšířit Asynchronně předává zprávu ze zdrojového bloku do tohoto cílového bloku.
Odeslat Synchronně inicializuje zprávu k tomuto bloku. Volá se blokem ISource . Po dokončení této funkce se zpráva již rozšíří do bloku.

Chráněné metody

Jméno popis
decline_incoming_messages Označuje blok, že nové zprávy by měly být odmítnuty.
initialize_source_and_target Inicializuje základní objekt. message_processor Konkrétně je potřeba inicializovat objekt.
link_source Pro propojení zadaného zdrojového bloku s tímto propagator_block objektem.
process_input_messages Zpracování vstupních zpráv To je užitečné pouze pro bloky šíření, které jsou odvozeny od source_block (přepsání source_block::p rocess_input_messages.)
propagate_message Při přepsání v odvozené třídě tato metoda asynchronně předává zprávu z ISource bloku do tohoto propagator_block objektu. Vyvolá se metodou propagate při zavolání zdrojovým blokem.
register_filter Zaregistruje metodu filtru, která se vyvolá při každé přijaté zprávě.
remove_network_links Odebere z tohoto propagator_block objektu všechna zdrojová a cílová síťová propojení.
send_message Při přepsání v odvozené třídě tato metoda synchronně předává zprávu z ISource bloku do tohoto propagator_block objektu. Vyvolá se metodou send při zavolání zdrojovým blokem.
unlink_source Zruší propojení zadaného zdrojového bloku s tímto propagator_block objektem.
unlink_sources Zruší propojení všech zdrojových bloků z tohoto propagator_block objektu. (Přepsání ITarget::unlink_sources.)

Poznámky

Aby nedocházelo k vícenásobné dědičnosti, propagator_block třída dědí z source_block třídy a ITarget abstraktní třídy. Většina funkcí ve target_block třídě se tady replikuje.

Hierarchie dědičnosti

ISource

ITarget

source_block

propagator_block

Požadavky

Hlavička: agents.h

Obor názvů: souběžnost

decline_incoming_messages

Označuje blok, že nové zprávy by měly být odmítnuty.

void decline_incoming_messages();

Poznámky

Tato metoda je volána destruktoru, aby se zajistilo, že nové zprávy budou odmítnuty, zatímco probíhá zničení.

initialize_source_and_target

Inicializuje základní objekt. message_processor Konkrétně je potřeba inicializovat objekt.

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

Parametry

_PScheduler
Plánovač, který se má použít pro plánování úkolů.

_PScheduleGroup
Skupina plánů, která se má použít pro plánování úkolů.

Pro propojení zadaného zdrojového bloku s tímto propagator_block objektem.

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

Parametry

_PSource
Ukazatel na ISource blok, který se má propojit.

process_input_messages

Zpracování vstupních zpráv To je užitečné pouze pro bloky šíření, které jsou odvozeny z source_block

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

Parametry

_PMessage
Ukazatel na zprávu, která se má zpracovat.

Rozšířit

Asynchronně předává zprávu ze zdrojového bloku do tohoto cílového bloku.

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

Parametry

_PMessage
Ukazatel na message objekt.

_PSource
Ukazatel na zdrojový blok nabízející zprávu.

Vrácená hodnota

Message_status označení toho, co se cíl rozhodl se zprávou udělat.

Poznámky

Metoda propagate je vyvolána v cílovém bloku propojeným zdrojovým blokem. Zařadí do fronty asynchronní úlohu pro zpracování zprávy, pokud ještě není zařazena do fronty nebo spuštěna.

Metoda vyvolá invalid_argument výjimku, pokud _PMessage je NULLparametr nebo _PSource .

propagate_message

Při přepsání v odvozené třídě tato metoda asynchronně předává zprávu z ISource bloku do tohoto propagator_block objektu. Vyvolá se metodou propagate při zavolání zdrojovým blokem.

virtual message_status propagate_message(
    _Inout_ message<_Source_type>* _PMessage,
    _Inout_ ISource<_Source_type>* _PSource) = 0;

Parametry

_PMessage
Ukazatel na message objekt.

_PSource
Ukazatel na zdrojový blok nabízející zprávu.

Vrácená hodnota

Message_status označení toho, co se cíl rozhodl se zprávou udělat.

propagator_block

propagator_block Vytvoří objekt.

propagator_block();

~propagator_block

propagator_block Zničí objekt.

virtual ~propagator_block();

register_filter

Zaregistruje metodu filtru, která se vyvolá při každé přijaté zprávě.

void register_filter(filter_method const& _Filter);

Parametry

_Filtr
Metoda filtru.

Odebere z tohoto propagator_block objektu všechna zdrojová a cílová síťová propojení.

void remove_network_links();

Odeslat

Synchronně inicializuje zprávu k tomuto bloku. Volá se blokem ISource . Po dokončení této funkce se zpráva již rozšíří do bloku.

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

Parametry

_PMessage
Ukazatel na message objekt.

_PSource
Ukazatel na zdrojový blok nabízející zprávu.

Vrácená hodnota

Message_status označení toho, co se cíl rozhodl se zprávou udělat.

Poznámky

Tato metoda vyvolá invalid_argument výjimku, pokud _PMessage je nebo _PSource parametr .NULL

send_message

Při přepsání v odvozené třídě tato metoda synchronně předává zprávu z ISource bloku do tohoto propagator_block objektu. Vyvolá se metodou send při zavolání zdrojovým blokem.

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

Vrácená hodnota

Message_status označení toho, co se cíl rozhodl se zprávou udělat.

Poznámky

Ve výchozím nastavení tento blok vrátí declined , pokud není přepsán odvozenou třídou.

Zruší propojení zadaného zdrojového bloku s tímto propagator_block objektem.

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

Parametry

_PSource
Ukazatel na ISource blok, který má být odpojen.

Zruší propojení všech zdrojových bloků z tohoto propagator_block objektu.

virtual void unlink_sources();

Viz také

concurrency – obor názvů
source_block – třída
ITarget – třída