Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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 uložených a šířených vyrovnávací pamětí.
Členové
Veřejné konstruktory
| Název | Popis |
|---|---|
transformer |
Přetíženo.
transformer Vytvoří blok 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 |
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
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
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.
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.
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.
transformer
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.
_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 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.
~transformer
transformer Zničí blok zasílání zpráv.
~transformer();