Klasa transformatora
transformer
Blok obsługi komunikatów to jednokierunkowe, wieloźródło, uporządkowanepropagator_block
, które może akceptować komunikaty jednego typu i może przechowywać niezwiązaną liczbę komunikatów innego typu.
Składnia
template<class _Input, class _Output>
class transformer : public propagator_block<single_link_registry<ITarget<_Output>>,
multi_link_registry<ISource<_Input>>>;
Parametry
_Wkład
Typ ładunku komunikatów akceptowanych przez bufor.
_Wyjście
Typ ładunku komunikatów przechowywanych i propagowanych przez bufor.
Elementy członkowskie
Konstruktory publiczne
Nazwa/nazwisko | opis |
---|---|
transformator | Przeciążone. transformer Tworzy blok obsługi komunikatów. |
~transformer, destruktor | Niszczy blok obsługi komunikatów transformer . |
Metody chronione
Nazwa/nazwisko | opis |
---|---|
accept_message | Akceptuje komunikat oferowany przez ten transformer blok obsługi komunikatów, przenosząc własność na obiekt wywołujący. |
consume_message | Używa komunikatu oferowanego wcześniej przez transformer obiekt docelowy i zarezerwowanego przez obiekt docelowy, przenosząc własność do obiektu wywołującego. |
link_target_notification | Wywołanie zwrotne, które powiadamia o tym, że nowy element docelowy został połączony z tym transformer blokiem obsługi komunikatów. |
propagate_message | Asynchronicznie przekazuje komunikat z ISource bloku do tego transformer bloku obsługi komunikatów. Jest wywoływana przez metodę propagate , gdy jest wywoływana przez blok źródłowy. |
propagate_to_any_targets | Wykonuje funkcję transformer w komunikatach wejściowych. |
release_message | Zwalnia poprzednią rezerwację komunikatów. (Przesłonięcia source_block::release_message). |
reserve_message | Rezerwuje komunikat, który był wcześniej oferowany przez ten transformer blok obsługi komunikatów. (Przesłonięcia source_block::reserve_message.) |
resume_propagation | Wznawia propagację po wydaniu rezerwacji. (Przesłonięcia source_block::resume_propagation).) |
send_message | Synchronicznie przekazuje komunikat z ISource bloku do tego transformer bloku obsługi komunikatów. Jest wywoływana przez metodę send , gdy jest wywoływana przez blok źródłowy. |
supports_anonymous_source | Zastępuje metodę supports_anonymous_source , aby wskazać, że ten blok może akceptować komunikaty oferowane przez źródło, które nie jest połączone. (Przesłonięcia) ITarget::supports_anonymous_source.) |
Uwagi
Aby uzyskać więcej informacji, zobacz Asynchroniczne bloki komunikatów.
Hierarchia dziedziczenia
transformer
Wymagania
Nagłówek: agents.h
Przestrzeń nazw: współbieżność
accept_message
Akceptuje komunikat oferowany przez ten transformer
blok obsługi komunikatów, przenosząc własność na obiekt wywołujący.
virtual message<_Output>* accept_message(runtime_object_identity _MsgId);
Parametry
_MsgId
Obiekt runtime_object_identity
oferowany message
.
Wartość zwracana
Wskaźnik do message
obiektu, którego obiekt wywołujący ma teraz własność.
consume_message
Używa komunikatu oferowanego wcześniej przez transformer
obiekt docelowy i zarezerwowanego przez obiekt docelowy, przenosząc własność do obiektu wywołującego.
virtual message<_Output>* consume_message(runtime_object_identity _MsgId);
Parametry
_MsgId
Obiekt runtime_object_identity
, który message
jest używany.
Wartość zwracana
Wskaźnik do message
obiektu, którego obiekt wywołujący ma teraz własność.
Uwagi
Podobnie jak accept
element , ale zawsze jest poprzedzony wywołaniem metody reserve
.
link_target_notification
Wywołanie zwrotne, które powiadamia o tym, że nowy element docelowy został połączony z tym transformer
blokiem obsługi komunikatów.
virtual void link_target_notification(_Inout_ ITarget<_Output> *);
propagate_message
Asynchronicznie przekazuje komunikat z ISource
bloku do tego transformer
bloku obsługi komunikatów. Jest wywoływana przez metodę propagate
, gdy jest wywoływana przez blok źródłowy.
virtual message_status propagate_message(
_Inout_ message<_Input>* _PMessage,
_Inout_ ISource<_Input>* _PSource);
Parametry
_PMessage
Wskaźnik do message
obiektu.
_PSource
Wskaźnik do bloku źródłowego oferującego komunikat.
Wartość zwracana
Message_status wskazanie, co cel postanowił zrobić z komunikatem.
propagate_to_any_targets
Wykonuje funkcję transformer w komunikatach wejściowych.
virtual void propagate_to_any_targets(_Inout_opt_ message<_Output> *);
release_message
Zwalnia poprzednią rezerwację komunikatów.
virtual void release_message(runtime_object_identity _MsgId);
Parametry
_MsgId
message
Obiektruntime_object_identity
, który jest zwalniany.
reserve_message
Rezerwuje komunikat, który był wcześniej oferowany przez ten transformer
blok obsługi komunikatów.
virtual bool reserve_message(runtime_object_identity _MsgId);
Parametry
_MsgId
Obiekt runtime_object_identity
message
, który jest zarezerwowany.
Wartość zwracana
true
jeśli wiadomość została pomyślnie zarezerwowana, false
w przeciwnym razie.
Uwagi
Po reserve
wywołaniu metody , jeśli zwraca true
wartość , consume
albo release
musi zostać wywołana, aby przejąć lub zwolnić własność komunikatu.
resume_propagation
Wznawia propagację po wydaniu rezerwacji.
virtual void resume_propagation();
send_message
Synchronicznie przekazuje komunikat z ISource
bloku do tego transformer
bloku obsługi komunikatów. Jest wywoływana przez metodę send
, gdy jest wywoływana przez blok źródłowy.
virtual message_status send_message(
_Inout_ message<_Input>* _PMessage,
_Inout_ ISource<_Input>* _PSource);
Parametry
_PMessage
Wskaźnik do message
obiektu.
_PSource
Wskaźnik do bloku źródłowego oferującego komunikat.
Wartość zwracana
Message_status wskazanie, co cel postanowił zrobić z komunikatem.
supports_anonymous_source
Zastępuje metodę supports_anonymous_source
, aby wskazać, że ten blok może akceptować komunikaty oferowane przez źródło, które nie jest połączone.
virtual bool supports_anonymous_source();
Wartość zwracana
true
ponieważ blok nie odłoży oferowanych wiadomości.
transformator
transformer
Tworzy blok obsługi komunikatów.
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
Funkcja, która zostanie wywołana dla każdego zaakceptowanego komunikatu.
_PTarget
Wskaźnik do bloku docelowego w celu połączenia z transformatorem.
_Filtr
Funkcja filter, która określa, czy oferowane komunikaty powinny być akceptowane.
_PScheduler
Obiekt Scheduler
, w którym zaplanowano zadanie transformer
propagacji bloku obsługi komunikatów.
_PScheduleGroup
Obiekt ScheduleGroup
, w którym zaplanowano zadanie transformer
propagacji bloku obsługi komunikatów. Używany Scheduler
obiekt jest dorozumiany przez grupę harmonogramu.
Uwagi
Jeśli nie określisz parametrów lub_PScheduleGroup
, środowisko uruchomieniowe używa domyślnego _PScheduler
harmonogramu.
Typ _Transform_method
to functor z podpisem _Output (_Input const &)
, który jest wywoływany przez ten transformer
blok obsługi komunikatów w celu przetworzenia komunikatu.
Typ filter_method
to functor z podpisem bool (_Input const &)
, który jest wywoływany przez ten transformer
blok obsługi komunikatów w celu określenia, czy powinien zaakceptować oferowany komunikat.
~transformator
Niszczy blok obsługi komunikatów transformer
.
~transformer();