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

ITarget

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

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 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 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 NULLparametr 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();

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.

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.

Viz také

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