target_block – třída
Třída target_block
je abstraktní základní třída, která poskytuje základní funkce správy propojení a kontrolu chyb pouze pro cílové bloky.
Syntaxe
template<class _SourceLinkRegistry, class _MessageProcessorType = ordered_message_processor<typename _SourceLinkRegistry::type::source_type>>
class target_block : public ITarget<typename _SourceLinkRegistry::type::source_type>;
Parametry
_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 target_block objekt. |
Veřejné konstruktory
Název | Popis |
---|---|
target_block | target_block Vytvoří objekt. |
~target_block Destruktor | target_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ě předává zprávu ze zdrojového bloku do tohoto cílového bloku. |
Chráněné metody
Název | Popis |
---|---|
async_send | Asynchronně odešle zprávu ke zpracování. |
decline_incoming_messages | Označuje blok, že nové zprávy by měly být odmítnuty. |
enable_batched_processing | Povolí dávkové zpracování pro tento blok. |
initialize_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 target_block objektem. |
process_input_messages | Zpracovává zprávy přijaté jako vstupy. |
process_message | Při přepsání v odvozené třídě zpracuje zprávu, která byla přijata tímto target_block objektem. |
propagate_message | Při přepsání v odvozené třídě tato metoda asynchronně předává zprávu z ISource bloku do tohoto target_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_sources | Po čekání na dokončení nevyřízených asynchronních operací odesílání zruší propojení všech zdrojů. |
send_message | Při přepsání v odvozené třídě tato metoda synchronně předává zprávu z ISource bloku do tohoto target_block objektu. Vyvolá se metodou send při zavolání zdrojovým blokem. |
sync_send | Synchronně odešle zprávu ke zpracování. |
unlink_source | Zruší propojení zadaného zdrojového bloku s tímto target_block objektem. |
unlink_sources | Zruší propojení všech zdrojových bloků z tohoto target_block objektu. (Přepsání ITarget::unlink_sources.) |
wait_for_async_sends | Čeká na dokončení všech asynchronních šíření. |
Hierarchie dědičnosti
target_block
Požadavky
Hlavička: agents.h
Namespace: souběžnost
async_send
Asynchronně odešle zprávu ke zpracování.
void async_send(_Inout_opt_ message<_Source_type>* _PMessage);
Parametry
_PMessage
Ukazatel na odesílanou zprávu.
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í.
enable_batched_processing
Povolí dávkové zpracování pro tento blok.
void enable_batched_processing();
initialize_target
Inicializuje základní objekt. message_processor
Konkrétně je potřeba inicializovat objekt.
void initialize_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 target_block
objektem.
virtual void link_source(_Inout_ ISource<_Source_type>* _PSource);
Parametry
_PSource
Ukazatel na ISource
blok, který se má propojit.
Poznámky
Tato funkce by neměla být volána přímo u objektu target_block
. Bloky by měly být propojeny pomocí link_target
metody na ISource
blocích, které vyvolá metodu link_source
pro odpovídající cíl.
process_input_messages
Zpracovává zprávy přijaté jako vstupy.
virtual void process_input_messages(_Inout_ message<_Source_type>* _PMessage);
Parametry
_PMessage
Ukazatel na zprávu, která se má zpracovat.
process_message
Při přepsání v odvozené třídě zpracuje zprávu, která byla přijata tímto target_block
objektem.
virtual void process_message(message<_Source_type> *);
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 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 target_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.
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_sources
Po čekání na dokončení nevyřízených asynchronních operací odesílání zruší propojení všech zdrojů.
void remove_sources();
Poznámky
Všechny cílové bloky by měly volat tuto rutinu pro odebrání zdrojů v jejich destruktoru.
poslat
Synchronně předává zprávu ze zdrojového bloku do tohoto cílového 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
Metoda vyvolá invalid_argument výjimku, pokud _PMessage
je NULL
parametr nebo _PSource
.
send
Použití metody mimo inicializace zpráv a šíření zpráv v síti je nebezpečné a může vést k zablokování.
Když send
se vrátí, zpráva již byla přijata a přenesena do cílového bloku nebo byla odmítnuta cílem.
send_message
Při přepsání v odvozené třídě tato metoda synchronně předává zprávu z ISource
bloku do tohoto target_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.
sync_send
Synchronně odešle zprávu ke zpracování.
void sync_send(_Inout_opt_ message<_Source_type>* _PMessage);
Parametry
_PMessage
Ukazatel na odesílanou zprávu.
target_block
target_block
Vytvoří objekt.
target_block();
~target_block
target_block
Zničí objekt.
virtual ~target_block();
unlink_source
Zruší propojení zadaného zdrojového bloku s tímto target_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 target_block
objektu.
virtual void unlink_sources();
wait_for_async_sends
Čeká na dokončení všech asynchronních šíření.
void wait_for_async_sends();
Poznámky
Tuto metodu používají destruktory bloku zpráv k zajištění, aby všechny asynchronní operace měly čas dokončit před zničením bloku.