Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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
_Input
Typ ładunku komunikatów akceptowanych przez bufor.
_Output
Typ ładunku komunikatów przechowywanych i propagowanych przez bufor.
Elementy członkowskie
Konstruktory publiczne
| Nazwa/nazwisko | opis |
|---|---|
transformer |
Przeciążone.
transformer Tworzy blok obsługi komunikatów. |
~transformer |
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łania source_block::release_message). |
reserve_message |
Rezerwuje komunikat, który był wcześniej oferowany przez ten transformer blok obsługi komunikatów. (Przesłania source_block::reserve_message). |
resume_propagation |
Wznawia propagację po wydaniu rezerwacji. (Przesłania 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łania 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 acceptelement , 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
runtime_object_identity Obiektmessage, 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_identitymessage , 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 truewartość , 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.
transformer
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.
_Filter
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_PScheduler, środowisko uruchomieniowe używa domyślnego _PScheduleGroup 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.
~transformer
Niszczy blok obsługi komunikatów transformer .
~transformer();