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

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

_Výstup
Typ datové části zpráv uložených a šířených vyrovnávací pamětí.

Členové

Veřejné konstruktory

Název Popis
transformátor Přetíženo. transformer Vytvoří blok zasílání zpráv.
~transformátor – destruktor 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 Využívá dříve nabízenou transformer zprávu a vyhrazenou cílem a převádí vlastnictví volajícímu.
link_target_notification Zpětné volání, které upozorní, že byl nový cíl propojen 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í funkci transformátoru na vstupních zprávách.
release_message Uvolní předchozí rezervaci zpráv. (Přepsání source_block::release_message.)
reserve_message Zarezervuje dříve nabízenou zprávu v tomto transformer bloku zasílání zpráv. (Přepsání source_block::reserve_message.)
resume_propagation Po vydání rezervace se obnoví šíření. (Přepsání 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řepsání ITarget::supports_anonymous_source.)

Poznámky

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

Hierarchie dědičnosti

ISource

ITarget

source_block

propagator_block

transformer

Požadavky

Hlavička: agents.h

Namespace: 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
message Nabízený runtime_object_identity objekt.

Návratová hodnota

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

consume_message

Využívá dříve nabízenou transformer zprávu a vyhrazenou cílem a převádí vlastnictví volajícímu.

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

Parametry

_MsgId
Objekt runtime_object_identity , který message se spotřebovává.

Návratová hodnota

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

Poznámky

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

Zpětné volání, které upozorní, že byl nový cíl propojen 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 označení toho, co se cíl rozhodl se zprávou udělat.

propagate_to_any_targets

Spustí funkci transformátoru 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 runtime_object_identity , který message je rezervován.

Návratová hodnota

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

Poznámky

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

resume_propagation

Po vydá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 označení toho, co se cíl rozhodl se zprávou udělat.

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 odloží nabízené zprávy.

transformátor

transformer Vytvoří blok 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.

_Filtr
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 objekt je odvozen ze skupiny plánů.

Poznámky

Modul runtime používá výchozí plánovač, pokud nezadáte _PScheduler parametry._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.

~transformátor

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

~transformer();

Viz také

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