Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Een transformer berichtenblok is een met één doellocatie, met meerdere bronnen, geordend propagator_block dat berichten van één type kan accepteren en een onbeperkt aantal berichten van een ander type kan opslaan.
Syntaxis
template <class _Input, class _Output>
class transformer : public propagator_block<single_link_registry<ITarget<_Output>>,
multi_link_registry<ISource<_Input>>>;
Parameterwaarden
_Input
Het nettoladingtype van de berichten die door de buffer worden geaccepteerd.
_Output
Het payloadtype van de berichten die worden opgeslagen en door de buffer uitgezonden.
Leden
Openbare constructors
| Naam | Beschrijving |
|---|---|
transformer |
Overbelast. Maakt een transformer berichtenblok. |
~transformer |
Vernietigt het transformer berichtenblok. |
Beveiligde methoden
| Naam | Beschrijving |
|---|---|
accept_message |
Accepteert een bericht dat door dit transformer berichtenblok is aangeboden, waardoor het eigendom wordt overgedragen aan de beller. |
consume_message |
Hiermee wordt een bericht verbruikt dat eerder is aangeboden door de transformer en gereserveerd door het doelwit, waardoor de eigenaar overgaat naar de beller. |
link_target_notification |
Een callback waarmee wordt aangegeven dat een nieuw doel is gekoppeld aan dit transformer berichtenblok. |
propagate_message |
Asynchroon geeft een bericht van een ISource blok door aan dit transformer berichtenblok. Deze wordt aangeroepen door de propagate methode, wanneer deze wordt aangeroepen door een bronblok. |
propagate_to_any_targets |
Hiermee wordt de transformatiefunctie uitgevoerd op de inputberichten. |
release_message |
Maakt een eerdere reservering van een bericht vrij. (Overschrijft source_block::release_message.) |
reserve_message |
Reserveert een bericht dat eerder door dit transformer berichtenblok is aangeboden. (Overschrijft source_block::reserve_message.) |
resume_propagation |
De voortzetting wordt hervat nadat een reservering is vrijgegeven. (Overschrijft source_block::resume_propagation.) |
send_message |
Hiermee wordt een bericht synchroon doorgegeven van een ISource blok aan dit transformer berichtenblok. Deze wordt aangeroepen door de send methode, wanneer deze wordt aangeroepen door een bronblok. |
supports_anonymous_source |
Overschrijft de supports_anonymous_source methode om aan te geven dat dit blok berichten kan accepteren die worden aangeboden door een bron die niet is gekoppeld. (Overschrijft ITarget::supports_anonymous_source.) |
Opmerkingen
Zie Asynchrone berichtblokken voor meer informatie.
Overnamehiërarchie
transformer
Vereisten
Header: agents.h
Namespace: gelijktijdigheid
accept_message
Accepteert een bericht dat door dit transformer berichtenblok is aangeboden, waardoor het eigendom wordt overgedragen aan de beller.
virtual message<_Output>* accept_message(runtime_object_identity _MsgId);
Parameterwaarden
_MsgId
Het runtime_object_identity van het aangeboden message object.
Retourwaarde
Een aanwijzer naar het message object waarvan de aanroeper nu eigenaar is.
consume_message
Hiermee wordt een bericht verbruikt dat eerder is aangeboden door de transformer en gereserveerd door de target, waardoor het eigendom wordt overgedragen aan de aanroeper.
virtual message<_Output>* consume_message(runtime_object_identity _MsgId);
Parameterwaarden
_MsgId
Het runtime_object_identity van het message-object dat wordt gebruikt.
Retourwaarde
Een aanwijzer naar het message object waarvan de aanroeper nu eigenaar is.
Opmerkingen
Vergelijkbaar met accept, maar wordt altijd voorafgegaan door een aanroep naar reserve.
link_target_notification
Een callback waarmee wordt aangegeven dat een nieuw doel is gekoppeld aan dit transformer berichtenblok.
virtual void link_target_notification(_Inout_ ITarget<_Output> *);
propagate_message
Asynchroon geeft een bericht van een ISource blok door aan dit transformer berichtenblok. Deze wordt aangeroepen door de propagate methode, wanneer deze wordt aangeroepen door een bronblok.
virtual message_status propagate_message(
_Inout_ message<_Input>* _PMessage,
_Inout_ ISource<_Input>* _PSource);
Parameterwaarden
_PMessage
Een aanwijzer naar het message-object.
_PSource
Een aanwijzer naar het bronblok dat het bericht aanbiedt.
Retourwaarde
Een message_status indicatie van wat het doel heeft besloten te doen met het bericht.
propagate_to_any_targets
Hiermee wordt de transformatiefunctie uitgevoerd op de inputberichten.
virtual void propagate_to_any_targets(_Inout_opt_ message<_Output> *);
release_message
Maakt een eerdere reservering van een bericht vrij.
virtual void release_message(runtime_object_identity _MsgId);
Parameterwaarden
_MsgId
Het runtime_object_identity object message dat wordt vrijgegeven.
reserve_message
Reserveert een bericht dat eerder door dit transformer berichtenblok is aangeboden.
virtual bool reserve_message(runtime_object_identity _MsgId);
Parameterwaarden
_MsgId
runtime_object_identity van het message object dat wordt gereserveerd.
Retourwaarde
true als het bericht succesvol is gereserveerd, false anders.
Opmerkingen
Nadat reserve is aangeroepen en true wordt geretourneerd, moet ofwel consume of release worden aangeroepen om het eigendom van het bericht over te nemen of vrij te geven.
resume_propagation
De voortzetting wordt hervat nadat een reservering is vrijgegeven.
virtual void resume_propagation();
send_message
Hiermee wordt een bericht synchroon doorgegeven van een ISource blok aan dit transformer berichtenblok. Deze wordt aangeroepen door de send methode, wanneer deze wordt aangeroepen door een bronblok.
virtual message_status send_message(
_Inout_ message<_Input>* _PMessage,
_Inout_ ISource<_Input>* _PSource);
Parameterwaarden
_PMessage
Een aanwijzer naar het message-object.
_PSource
Een aanwijzer naar het bronblok dat het bericht aanbiedt.
Retourwaarde
Een message_status indicatie van wat het doel heeft besloten te doen met het bericht.
supports_anonymous_source
Overschrijft de supports_anonymous_source methode om aan te geven dat dit blok berichten kan accepteren die worden aangeboden door een bron die niet is gekoppeld.
virtual bool supports_anonymous_source();
Retourwaarde
true omdat het blok aangeboden berichten niet uitstelt.
transformer
Maakt een transformer berichtenblok.
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);
Parameterwaarden
_Func
Een functie die wordt aangeroepen voor elk geaccepteerd bericht.
_PTarget
Een aanwijzer naar een doelblok om een koppeling te maken met de transformator.
_Filter
Een filterfunctie die bepaalt of aangeboden berichten moeten worden geaccepteerd.
_PScheduler
Het Scheduler-object waarin de doorgiftetaak voor het berichtblok transformer is gepland.
_PScheduleGroup
Het ScheduleGroup-object waarin de doorgiftetaak voor het berichtblok transformer is gepland. Het gebruikte Scheduler-object wordt geïmpliceerd door de planningsgroep.
Opmerkingen
De runtime gebruikt de standaardplanner als u de _PScheduler of _PScheduleGroup parameters niet opgeeft.
Het type _Transform_method is een functor met handtekening _Output (_Input const &) die wordt aangeroepen door dit transformer berichtenblok om een bericht te verwerken.
Het type filter_method is een functor met handtekening bool (_Input const &) die wordt aangeroepen door dit transformer berichtenblok om te bepalen of het een aangeboden bericht moet accepteren.
~transformer
Vernietigt het transformer berichtenblok.
~transformer();