Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Ett transformer
meddelandeblock är ett enmålsblock med flera källor som propagator_block
kan acceptera meddelanden av en typ och som kan lagra ett obundet antal meddelanden av en annan typ.
Syntax
template <class _Input, class _Output>
class transformer : public propagator_block<single_link_registry<ITarget<_Output>>,
multi_link_registry<ISource<_Input>>>;
Parameterar
_Input
Nyttolasttypen för de meddelanden som accepteras av bufferten.
_Output
Nyttolasttypen för de meddelanden som lagras och sprids ut av bufferten.
Medlemmar
Offentliga konstruktorer
Namn | Beskrivning |
---|---|
transformer |
Överbelastad. Skapar ett transformer meddelandeblock. |
~transformer |
Förstör meddelandeblocket transformer . |
Skyddade metoder
Namn | Beskrivning |
---|---|
accept_message |
Accepterar ett meddelande som erbjöds av det här transformer meddelandeblocket och överför ägarskapet till anroparen. |
consume_message |
Förbrukar ett meddelande som tidigare erbjöds av transformer och reserverades av målet och överför ägarskapet till anroparen. |
link_target_notification |
Ett återanrop som meddelar att ett nytt mål har länkats till det här transformer meddelandeblocket. |
propagate_message |
Asynkront skickar ett meddelande från ett ISource block till det här transformer meddelandeblocket. Den anropas av metoden när den propagate anropas av ett källblock. |
propagate_to_any_targets |
Kör transformeringsfunktionen på indatameddelandena. |
release_message |
Släpper en tidigare meddelandereservation. (Åsidosätter source_block::release_message .) |
reserve_message |
Reserverar ett meddelande som tidigare erbjöds av det här transformer meddelandeblocket. (Åsidosätter source_block::reserve_message .) |
resume_propagation |
Återupptar spridning efter att en reservation har släppts. (Åsidosätter source_block::resume_propagation .) |
send_message |
Skickar synkront ett meddelande från ett ISource block till det här transformer meddelandeblocket. Den anropas av metoden när den send anropas av ett källblock. |
supports_anonymous_source |
Åsidosätter supports_anonymous_source metoden för att ange att det här blocket kan acceptera meddelanden som erbjuds av en källa som inte är länkad. (Åsidosätter ITarget::supports_anonymous_source .) |
Anmärkningar
Mer information finns i Asynkrona meddelandeblock.
Arvshierarki
transformer
Krav
Rubrik: agents.h
namnområde: samtidighet
accept_message
Accepterar ett meddelande som erbjöds av det här transformer
meddelandeblocket och överför ägarskapet till anroparen.
virtual message<_Output>* accept_message(runtime_object_identity _MsgId);
Parameterar
_MsgId
Det runtime_object_identity
erbjudna objektets message
.
Returvärde
En pekare till objektet message
som anroparen nu har ägarskap för.
consume_message
Förbrukar ett meddelande som tidigare erbjöds av transformer
och reserverades av målet och överför ägarskapet till anroparen.
virtual message<_Output>* consume_message(runtime_object_identity _MsgId);
Parameterar
_MsgId
Det runtime_object_identity
objekt message
som används.
Returvärde
En pekare till objektet message
som anroparen nu har ägarskap för.
Anmärkningar
accept
Liknar , men föregås alltid av ett anrop till reserve
.
link_target_notification
Ett återanrop som meddelar att ett nytt mål har länkats till det här transformer
meddelandeblocket.
virtual void link_target_notification(_Inout_ ITarget<_Output> *);
propagate_message
Asynkront skickar ett meddelande från ett ISource
block till det här transformer
meddelandeblocket. Den anropas av metoden när den propagate
anropas av ett källblock.
virtual message_status propagate_message(
_Inout_ message<_Input>* _PMessage,
_Inout_ ISource<_Input>* _PSource);
Parameterar
_PMessage
En pekare till message
-objektet.
_PSource
En pekare till källblocket som erbjuder meddelandet.
Returvärde
En message_status indikation på vad målet bestämde sig för att göra med meddelandet.
propagate_to_any_targets
Kör transformeringsfunktionen på indatameddelandena.
virtual void propagate_to_any_targets(_Inout_opt_ message<_Output> *);
release_message
Släpper en tidigare meddelandereservation.
virtual void release_message(runtime_object_identity _MsgId);
Parameterar
_MsgId
Objektet runtime_object_identity
som message
släpps.
reserve_message
Reserverar ett meddelande som tidigare erbjöds av det här transformer
meddelandeblocket.
virtual bool reserve_message(runtime_object_identity _MsgId);
Parameterar
_MsgId
Det runtime_object_identity
objekt som message
reserveras.
Returvärde
true
om meddelandet har reserverats, false
annars.
Anmärkningar
Efter reserve
anropas, om det returnerar true
, antingen consume
eller release
måste anropas för att antingen ta eller frigöra ägarskap för meddelandet.
resume_propagation
Återupptar spridning efter att en reservation har släppts.
virtual void resume_propagation();
send_message
Skickar synkront ett meddelande från ett ISource
block till det här transformer
meddelandeblocket. Den anropas av metoden när den send
anropas av ett källblock.
virtual message_status send_message(
_Inout_ message<_Input>* _PMessage,
_Inout_ ISource<_Input>* _PSource);
Parameterar
_PMessage
En pekare till message
-objektet.
_PSource
En pekare till källblocket som erbjuder meddelandet.
Returvärde
En message_status indikation på vad målet bestämde sig för att göra med meddelandet.
supports_anonymous_source
Åsidosätter supports_anonymous_source
metoden för att ange att det här blocket kan acceptera meddelanden som erbjuds av en källa som inte är länkad.
virtual bool supports_anonymous_source();
Returvärde
true
eftersom blocket inte skjuter upp erbjudna meddelanden.
transformer
Skapar ett transformer
meddelandeblock.
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);
Parameterar
_Func
En funktion som anropas för varje godkänt meddelande.
_PTarget
En pekare till ett målblock som ska länkas till transformatorn.
_Filter
En filterfunktion som avgör om erbjudna meddelanden ska godkännas.
_PScheduler
Det Scheduler
objekt inom vilket spridningsaktiviteten för transformer
meddelandeblock har schemalagts.
_PScheduleGroup
Det ScheduleGroup
objekt inom vilket spridningsaktiviteten för transformer
meddelandeblock har schemalagts. Det Scheduler
objekt som används underförstås av schemagruppen.
Anmärkningar
Körningen använder standardschemaläggaren om du inte anger parametrarna _PScheduler
eller _PScheduleGroup
.
Typen _Transform_method
är en functor med signatur _Output (_Input const &)
som anropas av det här transformer
meddelandeblocket för att bearbeta ett meddelande.
Typen filter_method
är en functor med signatur bool (_Input const &)
som anropas av det här transformer
meddelandeblocket för att avgöra om den ska acceptera ett meddelande som erbjuds eller inte.
~transformer
Förstör meddelandeblocket transformer
.
~transformer();