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
Název | Popis |
---|---|
source_iterator |
Typ iterátoru pro source_link_manager tento propagator_block typ . |
Veřejné konstruktory
Název | Popis |
---|---|
propagator_block | propagator_block Vytvoří objekt. |
~propagator_block Destruktor | propagator_block Zničí objekt. |
Veřejné metody
Název | Popis |
---|---|
propagovat | Asynchronně předává zprávu ze zdrojového bloku do tohoto cílového bloku. |
poslat | 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
Název | 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
propagator_block
Požadavky
Hlavička: agents.h
Namespace: 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ů.
link_source
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.
propagovat
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.
Návratová 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 NULL
parametr 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.
Návratová 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.
remove_network_links
Odebere z tohoto propagator_block
objektu všechna zdrojová a cílová síťová propojení.
void remove_network_links();
poslat
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.
Návratová 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> *);
Návratová 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.
unlink_source
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.
unlink_sources
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