transformer-Klasse
Ein transformer
-Meldungsblock ist ein geordneter propagator_block
mit einem einzelnen Ziel und mehreren Quellen, der Meldungen eines Typs akzeptieren und eine unbegrenzte Anzahl von Meldungen eines anderen Typs speichern kann.
Syntax
template<class _Input, class _Output>
class transformer : public propagator_block<single_link_registry<ITarget<_Output>>,
multi_link_registry<ISource<_Input>>>;
Parameter
_Eingabe
Der Nutzlasttyp der vom Puffer akzeptierten Nachrichten.
_Ausgabe
Der Nutzlasttyp der vom Puffer gespeicherten und verteilten Nachrichten.
Member
Öffentliche Konstruktoren
Name | Beschreibung |
---|---|
Transformator | Überladen. Erstellt einen transformer -Meldungsblock. |
~Transformator-Destruktor | Zerstört den transformer Nachrichtenblock. |
Geschützte Methoden
Name | Beschreibung |
---|---|
accept_message | Akzeptiert eine Nachricht, die von diesem transformer Nachrichtenblock angeboten wurde, und überträgt den Besitz an den Anrufer. |
consume_message | Nutzt eine Nachricht, die transformer zuvor vom Ziel angeboten und reserviert wurde, und überträgt den Besitz an den Anrufer. |
link_target_notification | Ein Rückruf, der benachrichtigt, dass ein neues Ziel mit diesem transformer Messagingblock verknüpft wurde. |
propagate_message | Eine Nachricht wird asynchron von einem ISource Block an diesen transformer Nachrichtenblock übergeben. Sie wird von der propagate Methode aufgerufen, wenn sie von einem Quellblock aufgerufen wird. |
propagate_to_any_targets | Führt die Transformatorfunktion für die Eingabemeldungen aus. |
release_message | Veröffentlicht eine vorherige Nachrichtenreservierung. (Überschreibt source_block::release_message.) |
reserve_message | Reserviert eine Nachricht, die zuvor von diesem transformer Nachrichtenblock angeboten wurde. (Überschreibt source_block::reserve_message.) |
resume_propagation | Setzt die Verteilung fort, nachdem eine Reservierung freigegeben wurde. (Überschreibt source_block::resume_propagation.) |
send_message | Übergibt eine Nachricht synchron von einem ISource Block an diesen transformer Nachrichtenblock. Sie wird von der send Methode aufgerufen, wenn sie von einem Quellblock aufgerufen wird. |
supports_anonymous_source | Überschreibt die supports_anonymous_source Methode, um anzugeben, dass dieser Block Nachrichten akzeptieren kann, die von einer Quelle angeboten werden, die nicht verknüpft ist. (Außerkraftsetzungen ITarget::supports_anonymous_source.) |
Hinweise
Weitere Informationen finden Sie unter "Asynchrone Nachrichtenblöcke".
Vererbungshierarchie
transformer
Anforderungen
Header: agents.h
Namespace: Parallelität
accept_message
Akzeptiert eine Nachricht, die von diesem transformer
Nachrichtenblock angeboten wurde, und überträgt den Besitz an den Anrufer.
virtual message<_Output>* accept_message(runtime_object_identity _MsgId);
Parameter
_MsgId
Das runtime_object_identity
angebotene message
Objekt.
Rückgabewert
Ein Zeiger auf das message
Objekt, dessen Besitzer der Aufrufer jetzt ist.
consume_message
Nutzt eine Nachricht, die transformer
zuvor vom Ziel angeboten und reserviert wurde, und überträgt den Besitz an den Anrufer.
virtual message<_Output>* consume_message(runtime_object_identity _MsgId);
Parameter
_MsgId
Das runtime_object_identity
Objekt, das message
verbraucht wird.
Rückgabewert
Ein Zeiger auf das message
Objekt, dessen Besitzer der Aufrufer jetzt ist.
Hinweise
Ähnlich wie accept
, aber wird immer ein Aufruf von reserve
.
link_target_notification
Ein Rückruf, der benachrichtigt, dass ein neues Ziel mit diesem transformer
Messagingblock verknüpft wurde.
virtual void link_target_notification(_Inout_ ITarget<_Output> *);
propagate_message
Eine Nachricht wird asynchron von einem ISource
Block an diesen transformer
Nachrichtenblock übergeben. Sie wird von der propagate
Methode aufgerufen, wenn sie von einem Quellblock aufgerufen wird.
virtual message_status propagate_message(
_Inout_ message<_Input>* _PMessage,
_Inout_ ISource<_Input>* _PSource);
Parameter
_PMessage
Ein Zeiger auf das message
-Objekt.
_PSource
Ein Zeiger auf den Quellblock, der die Nachricht anbietet.
Rückgabewert
Ein message_status Hinweis darauf, was das Ziel mit der Nachricht zu tun hat.
propagate_to_any_targets
Führt die Transformatorfunktion für die Eingabemeldungen aus.
virtual void propagate_to_any_targets(_Inout_opt_ message<_Output> *);
release_message
Veröffentlicht eine vorherige Nachrichtenreservierung.
virtual void release_message(runtime_object_identity _MsgId);
Parameter
_MsgId
Das runtime_object_identity
Objekt, das message
freigegeben wird.
reserve_message
Reserviert eine Nachricht, die zuvor von diesem transformer
Nachrichtenblock angeboten wurde.
virtual bool reserve_message(runtime_object_identity _MsgId);
Parameter
_MsgId
Das runtime_object_identity
Objekt, das message
reserviert wird.
Rückgabewert
true
wenn die Nachricht erfolgreich reserviert wurde, false
andernfalls.
Hinweise
Nach reserve
dem Aufruf, wenn er zurückgegeben true
wird, oder release
muss aufgerufen werden, consume
um entweder den Besitz der Nachricht zu übernehmen oder freizugeben.
resume_propagation
Setzt die Verteilung fort, nachdem eine Reservierung freigegeben wurde.
virtual void resume_propagation();
send_message
Übergibt eine Nachricht synchron von einem ISource
Block an diesen transformer
Nachrichtenblock. Sie wird von der send
Methode aufgerufen, wenn sie von einem Quellblock aufgerufen wird.
virtual message_status send_message(
_Inout_ message<_Input>* _PMessage,
_Inout_ ISource<_Input>* _PSource);
Parameter
_PMessage
Ein Zeiger auf das message
-Objekt.
_PSource
Ein Zeiger auf den Quellblock, der die Nachricht anbietet.
Rückgabewert
Ein message_status Hinweis darauf, was das Ziel mit der Nachricht zu tun hat.
supports_anonymous_source
Überschreibt die supports_anonymous_source
Methode, um anzugeben, dass dieser Block Nachrichten akzeptieren kann, die von einer Quelle angeboten werden, die nicht verknüpft ist.
virtual bool supports_anonymous_source();
Rückgabewert
true
da der Block die angebotenen Nachrichten nicht verschiebt.
Transformator
Erstellt einen transformer
-Meldungsblock.
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);
Parameter
_Func
Eine Funktion, die für jede akzeptierte Nachricht aufgerufen wird.
_PTarget
Ein Zeiger auf einen Zielblock, der mit dem Transformator verknüpft werden soll.
_Filter
Eine Filterfunktion, die bestimmt, ob angebotene Nachrichten akzeptiert werden sollen.
_PScheduler
Das Scheduler
-Objekt, in dem die Weiterleitungsaufgabe für den transformer
-Meldungsblock geplant ist.
_PScheduleGroup
Das ScheduleGroup
-Objekt, in dem die Weiterleitungsaufgabe für den transformer
-Meldungsblock geplant ist. Das verwendete Scheduler
-Objekt wird von der Planungsgruppe impliziert.
Hinweise
Die Runtime verwendet das Standardplanungsprogramm, wenn Sie den _PScheduler
-Parameter oder den _PScheduleGroup
-Parameter nicht angeben.
Der Typ _Transform_method
ist ein Functor mit Signatur _Output (_Input const &)
, der von diesem transformer
Nachrichtenblock aufgerufen wird, um eine Nachricht zu verarbeiten.
Der Typ filter_method
ist ein Functor mit Signatur bool (_Input const &)
, der von diesem transformer
Messagingblock aufgerufen wird, um zu bestimmen, ob eine angebotene Nachricht akzeptiert werden soll.
~Transformator
Zerstört den transformer
Nachrichtenblock.
~transformer();