Třída transformer

transformer Blok zasílání zpráv je jednocílový, vícesměrový, seřazenýpropagator_block, který může přijímat zprávy jednoho typu a může ukládat nevázaný počet zpráv jiného typu.

Syntaxe

template <class _Input, class _Output>
class transformer : public propagator_block<single_link_registry<ITarget<_Output>>,
    multi_link_registry<ISource<_Input>>>;

Parametry

_Input
Typ datové části zpráv přijatých vyrovnávací pamětí.

_Output
Typ datové části zpráv, které jsou ukládány a přenášeny z vyrovnávací paměti.

Členové

Veřejné konstruktory

Název Popis
transformer Přetíženo. Vytvoří transformer blok pro zasílání zpráv.
~transformer transformer Zničí blok zasílání zpráv.

Chráněné metody

Název Popis
accept_message Přijme zprávu, kterou tento transformer blok zasílání zpráv nabízí, a přenese vlastnictví volajícímu.
consume_message Spotřebovává zprávu, která byla dříve nabídnuta transformer a rezervována cílem, a převádí vlastnictví na volajícího.
link_target_notification Funkce zpětného volání, která upozorní na propojení nového cíle s tímto transformer blokem zasílání zpráv.
propagate_message Asynchronně předává zprávu z ISource bloku do tohoto transformer bloku zasílání zpráv. Vyvolá se metodou propagate při zavolání zdrojovým blokem.
propagate_to_any_targets Spustí transformační funkci na vstupních zprávách.
release_message Uvolní předchozí rezervaci zpráv. Přepisuje source_block::release_message.
reserve_message Zarezervuje dříve nabízenou zprávu v tomto transformer bloku zasílání zpráv. (Přepisuje source_block::reserve_message.)
resume_propagation Po uvolnění rezervace se obnoví šíření. Přepíše source_block::resume_propagation.
send_message Synchronně předává zprávu z ISource bloku do tohoto transformer bloku zasílání zpráv. Vyvolá se metodou send při zavolání zdrojovým blokem.
supports_anonymous_source Přepíše metodu supports_anonymous_source tak, aby označovala, že tento blok může přijímat zprávy nabízené zdrojem, který není propojený. Přepíše ITarget::supports_anonymous_source.

Poznámky

Další informace naleznete v tématu Asynchronní bloky zpráv.

Hierarchie dědičnosti

ISource

ITarget

source_block

propagátorový_blok

transformer

Požadavky

Hlavička: agents.h

Obor názvů: souběžnost

accept_message

Přijme zprávu, kterou tento transformer blok zasílání zpráv nabízí, a přenese vlastnictví volajícímu.

virtual message<_Output>* accept_message(runtime_object_identity _MsgId);

Parametry

_MsgId
runtime_object_identity Nabízený message objekt.

Návratová hodnota

Ukazatel na message objekt, ke kterému má volající nyní vlastnictví.

consume_message

Spotřebovává zprávu, která byla dříve nabídnuta transformer a rezervována cílem, a převádí vlastnictví na volajícího.

virtual message<_Output>* consume_message(runtime_object_identity _MsgId);

Parametry

_MsgId
runtime_object_identity objektu message, který je spotřebováván.

Návratová hodnota

Ukazatel na message objekt, ke kterému má volající nyní vlastnictví.

Poznámky

Podobá se accept, ale vždy mu předchází volání reserve.

Funkce zpětného volání, která upozorní na propojení nového cíle s tímto transformer blokem zasílání zpráv.

virtual void link_target_notification(_Inout_ ITarget<_Output> *);

propagate_message

Asynchronně předává zprávu z ISource bloku do tohoto transformer bloku zasílání zpráv. Vyvolá se metodou propagate při zavolání zdrojovým blokem.

virtual message_status propagate_message(
    _Inout_ message<_Input>* _PMessage,
    _Inout_ ISource<_Input>* _PSource);

Parametry

_PMessage
Ukazatel na message objekt.

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

Návratová hodnota

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

propagate_to_any_targets

Spustí transformační funkci na vstupních zprávách.

virtual void propagate_to_any_targets(_Inout_opt_ message<_Output> *);

release_message

Uvolní předchozí rezervaci zpráv.

virtual void release_message(runtime_object_identity _MsgId);

Parametry

_MsgId
Uvolnění runtime_object_identity objektu message .

reserve_message

Zarezervuje dříve nabízenou zprávu v tomto transformer bloku zasílání zpráv.

virtual bool reserve_message(runtime_object_identity _MsgId);

Parametry

_MsgId
Objekt message, který je rezervován pro runtime_object_identity.

Návratová hodnota

true pokud byla zpráva úspěšně rezervována, jinak false.

Poznámky

Po zavolání reserve, pokud se vrátí true, musí být buď consume nebo release zavolána, aby došlo k převzetí nebo uvolnění vlastnictví zprávy.

resume_propagation

Po uvolnění rezervace se obnoví šíření.

virtual void resume_propagation();

send_message

Synchronně předává zprávu z ISource bloku do tohoto transformer bloku zasílání zpráv. Vyvolá se metodou send při zavolání zdrojovým blokem.

virtual message_status send_message(
    _Inout_ message<_Input>* _PMessage,
    _Inout_ ISource<_Input>* _PSource);

Parametry

_PMessage
Ukazatel na message objekt.

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

Návratová hodnota

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

supports_anonymous_source

Přepíše metodu supports_anonymous_source tak, aby označovala, že tento blok může přijímat zprávy nabízené zdrojem, který není propojený.

virtual bool supports_anonymous_source();

Návratová hodnota

true vzhledem k tomu, že blok neodkládá nabízené zprávy.

transformer

Vytvoří transformer blok pro zasílání zpráv.

transformer(
    _Transform_method const& _Func,
    _Inout_opt_ ITarget<_Output>* _PTarget = NULL);

transformer(
    _Transform_method const& _Func,
    _Inout_opt_ ITarget<_Output>* _PTarget,
    filter_method const& _Filter);

transformer(
    Scheduler& _PScheduler,
    _Transform_method const& _Func,
    _Inout_opt_ ITarget<_Output>* _PTarget = NULL);

transformer(
    Scheduler& _PScheduler,
    _Transform_method const& _Func,
    _Inout_opt_ ITarget<_Output>* _PTarget,
    filter_method const& _Filter);

transformer(
    ScheduleGroup& _PScheduleGroup,
    _Transform_method const& _Func,
    _Inout_opt_ ITarget<_Output>* _PTarget = NULL);

transformer(
    ScheduleGroup& _PScheduleGroup,
    _Transform_method const& _Func,
    _Inout_opt_ ITarget<_Output>* _PTarget,
    filter_method const& _Filter);

Parametry

_Func
Funkce, která se vyvolá pro každou přijatou zprávu.

_PTarget
Ukazatel na cílový blok pro propojení s transformátorem.

_Filter
Funkce filtru, která určuje, jestli mají být přijaté zprávy.

_PScheduler
Objekt Scheduler , ve kterém je naplánována úloha šíření bloku transformer zasílání zpráv.

_PScheduleGroup
Objekt ScheduleGroup , ve kterém je naplánována úloha šíření bloku transformer zasílání zpráv. Použití Scheduler objektu je dané skupinou plánů.

Poznámky

Modul runtime používá výchozí plánovač, pokud nezadáte buď parametr _PScheduler nebo parametr _PScheduleGroup.

Typ _Transform_method je functor s podpisem _Output (_Input const &) , který je vyvolán tímto transformer blokem zasílání zpráv ke zpracování zprávy.

Typ filter_method je functor s podpisem bool (_Input const &) , který je vyvolán tímto transformer blokem zasílání zpráv, aby určil, zda má přijmout nabízenou zprávu.

~transformer

transformer Zničí blok zasílání zpráv.

~transformer();

Viz také

concurrency – obor názvů
call Class