Megosztás a következőn keresztül:


transformer class

Az transformer üzenetküldő blokk egy egy célként szolgáló, több forrásból álló, rendezett propagator_block , amely képes fogadni egy típusú üzeneteket, és képes más típusú üzenetek kötetlen számának tárolására.

Szemantika

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

Paraméterek

_Input
A puffer által elfogadott üzenetek hasznos adattípusa.

_Output
A puffer által tárolt és propagált üzenetek hasznos adattípusa.

Tagok

Nyilvános konstruktorok

Név Leírás
transformer Túlterhelt. Üzenetkezelési blokkot transformer hoz létre.
~transformer Megsemmisíti az üzenetküldési transformer blokkot.

Védett metódusok

Név Leírás
accept_message Elfogad egy üzenetet, amelyet ez az transformer üzenetküldési blokk ajánlott fel, és tulajdonjogot ad át a hívónak.
consume_message A cél által transformer korábban felajánlott és fenntartott üzenetet használja fel, amely tulajdonjogot ad át a hívónak.
link_target_notification Visszahívás, amely értesíti, hogy egy új cél kapcsolódik ehhez az transformer üzenetkezelési blokkhoz.
propagate_message Aszinkron módon továbbít egy üzenetet egy ISource blokkból ebbe az transformer üzenetküldő blokkba. A metódus meghívja propagate , amikor egy forrásblokk meghívja.
propagate_to_any_targets Végrehajtja a transzformátorfüggvényt a bemeneti üzeneteken.
release_message Egy korábbi üzenetfoglalás kiadása. (Felülbírálások source_block::release_message.)
reserve_message Lefoglalja az üzenetkezelési blokk által korábban felkínált transformer üzenetet. (Felülbírálások source_block::reserve_message.)
resume_propagation Egy foglalás felszabadítása után folytatja a propagálást. (Felülbírálások source_block::resume_propagation.)
send_message Szinkron módon továbbítja az üzenetet egy ISource blokkból ebbe az transformer üzenetblokkba. A metódus meghívja send , amikor egy forrásblokk meghívja.
supports_anonymous_source Felülbírálja a metódust, amely azt jelzi, hogy ez a supports_anonymous_source blokk elfogadhatja a nem csatolt forrás által felajánlott üzeneteket. (Felülbírálások ITarget::supports_anonymous_source.)

Megjegyzések

További információ: Aszinkron üzenetblokkok.

Öröklési hierarchia

ISource

ITarget

source_block

propagator_block

transformer

Követelmények

Fejléc: agents.h

névtér: egyidejűség

accept_message

Elfogad egy üzenetet, amelyet ez az transformer üzenetküldési blokk ajánlott fel, és tulajdonjogot ad át a hívónak.

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

Paraméterek

_MsgId
A runtime_object_identity felajánlott message objektum.

Visszaadott érték

Mutató arra az message objektumra, amelynek a hívónak most már a tulajdonosa.

consume_message

A cél által transformer korábban felajánlott és fenntartott üzenetet használja fel, amely tulajdonjogot ad át a hívónak.

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

Paraméterek

_MsgId
message A runtime_object_identity felhasznált objektum.

Visszaadott érték

Mutató arra az message objektumra, amelynek a hívónak most már a tulajdonosa.

Megjegyzések

acceptEhhez hasonló, de mindig megelőzi egy hívás.reserve

Visszahívás, amely értesíti, hogy egy új cél kapcsolódik ehhez az transformer üzenetkezelési blokkhoz.

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

propagate_message

Aszinkron módon továbbít egy üzenetet egy ISource blokkból ebbe az transformer üzenetküldő blokkba. A metódus meghívja propagate , amikor egy forrásblokk meghívja.

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

Paraméterek

_PMessage
Az objektumra mutató message mutató.

_PSource
Az üzenetet felajánló forrásblokkra mutató mutató.

Visszaadott érték

Egy message_status annak jelzése, hogy a cél mit akar tenni az üzenettel.

propagate_to_any_targets

Végrehajtja a transzformátorfüggvényt a bemeneti üzeneteken.

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

release_message

Egy korábbi üzenetfoglalás kiadása.

virtual void release_message(runtime_object_identity _MsgId);

Paraméterek

_MsgId
message A runtime_object_identity felszabadított objektum.

reserve_message

Lefoglalja az üzenetkezelési blokk által korábban felkínált transformer üzenetet.

virtual bool reserve_message(runtime_object_identity _MsgId);

Paraméterek

_MsgId
message A runtime_object_identity fenntartott objektum.

Visszaadott érték

true ha az üzenet lefoglalása sikeresen megtörtént, false ellenkező esetben.

Megjegyzések

A meghívás után reserve , ha visszakerül true, consume vagy release meg kell hívni az üzenet tulajdonjogának elvételéhez vagy kiadásához.

resume_propagation

Egy foglalás felszabadítása után folytatja a propagálást.

virtual void resume_propagation();

send_message

Szinkron módon továbbítja az üzenetet egy ISource blokkból ebbe az transformer üzenetblokkba. A metódus meghívja send , amikor egy forrásblokk meghívja.

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

Paraméterek

_PMessage
Az objektumra mutató message mutató.

_PSource
Az üzenetet felajánló forrásblokkra mutató mutató.

Visszaadott érték

Egy message_status annak jelzése, hogy a cél mit akar tenni az üzenettel.

supports_anonymous_source

Felülbírálja a metódust, amely azt jelzi, hogy ez a supports_anonymous_source blokk elfogadhatja a nem csatolt forrás által felajánlott üzeneteket.

virtual bool supports_anonymous_source();

Visszaadott érték

true mert a blokk nem halasztja el a felajánlott üzeneteket.

transformer

Üzenetkezelési blokkot transformer hoz létre.

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

Paraméterek

_Func
Egy függvény, amelyet minden elfogadott üzenethez meghívunk.

_PTarget
Mutató egy célblokkra a transzformátorhoz való csatoláshoz.

_Filter
Szűrőfüggvény, amely meghatározza, hogy a felajánlott üzeneteket el kell-e fogadni.

_PScheduler
Az Scheduler objektum, amelyen belül a transformer üzenetküldési blokk propagálási feladatának ütemezése történik.

_PScheduleGroup
Az ScheduleGroup objektum, amelyen belül a transformer üzenetküldési blokk propagálási feladatának ütemezése történik. A használt Scheduler objektumot az ütemezési csoport feltételezi.

Megjegyzések

A futtatókörnyezet az alapértelmezett ütemezőt használja, ha nem adja meg a _PScheduler paramétereket._PScheduleGroup

A típus _Transform_method egy aláírással _Output (_Input const &) rendelkező funktor, amelyet ez az transformer üzenetkezelési blokk hív meg az üzenetek feldolgozásához.

A típus filter_method egy aláírással bool (_Input const &) rendelkező funktor, amelyet ez az transformer üzenetküldő blokk hív meg, hogy eldöntse, elfogadja-e a felajánlott üzenetet.

~transformer

Megsemmisíti az üzenetküldési transformer blokkot.

~transformer();

Lásd még

egyidejű névtér
osztály hívása