Udostępnij za pośrednictwem


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

ISource

ITarget

source_block

propagator_block

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.

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 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.

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();

Zobacz też

Przestrzeń nazw współbieżności
call, klasa