Udostępnij za pośrednictwem


Klasa overwrite_buffer

Blok overwrite_buffer obsługi komunikatów to wielowersyjny, wieloźródłowy, uporządkowany propagator_block w celu przechowywania pojedynczego komunikatu naraz. Nowe wiadomości zastępują wcześniej przechowywane.

Składnia

template<class T>
class overwrite_buffer : public propagator_block<multi_link_registry<ITarget<T>>, multi_link_registry<ISource<T>>>;

Parametry

T
Typ ładunku komunikatów przechowywanych i propagowanych przez bufor.

Członkowie

Konstruktory publiczne

Nazwa/nazwisko opis
Overwrite_buffer Przeciążone. overwrite_buffer Tworzy blok obsługi komunikatów.
~overwrite_buffer Destruktor Niszczy blok obsługi komunikatów overwrite_buffer .

Metody publiczne

Nazwa/nazwisko opis
has_value Sprawdza, czy ten overwrite_buffer blok obsługi komunikatów ma jeszcze wartość.
wartość Pobiera odwołanie do bieżącego ładunku komunikatu przechowywanego overwrite_buffer w bloku obsługi komunikatów.

Metody chronione

Nazwa/nazwisko opis
accept_message Akceptuje komunikat oferowany przez ten overwrite_buffer blok obsługi komunikatów, zwracając kopię wiadomości do obiektu wywołującego.
consume_message Używa komunikatu oferowanego wcześniej przez overwrite_buffer blok obsługi komunikatów i zarezerwowany przez obiekt docelowy, zwracając kopię komunikatu 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 overwrite_buffer blokiem obsługi komunikatów.
propagate_message Asynchronicznie przekazuje komunikat z ISource bloku do tego overwrite_buffer bloku obsługi komunikatów. Jest wywoływana przez metodę propagate , gdy jest wywoływana przez blok źródłowy.
propagate_to_any_targets Umieszcza element message _PMessage w tym overwrite_buffer bloku obsługi komunikatów i udostępnia go wszystkim połączonym obiektom docelowym.
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 overwrite_buffer 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 overwrite_buffer 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

Blok overwrite_buffer obsługi komunikatów propaguje kopie przechowywanego komunikatu do każdego z jego obiektów docelowych.

Aby uzyskać więcej informacji, zobacz Asynchroniczne bloki komunikatów.

Hierarchia dziedziczenia

Isource

Itarget

source_block

propagator_block

overwrite_buffer

Wymagania

Nagłówek: agents.h

Przestrzeń nazw: współbieżność

accept_message

Akceptuje komunikat oferowany przez ten overwrite_buffer blok obsługi komunikatów, zwracając kopię wiadomości do obiektu wywołującego.

virtual message<T>* 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ść.

Uwagi

Blok overwrite_buffer obsługi komunikatów zwraca kopie wiadomości do jej elementów docelowych, zamiast przenosić własność aktualnie przechowywanej wiadomości.

consume_message

Używa komunikatu oferowanego wcześniej przez overwrite_buffer blok obsługi komunikatów i zarezerwowany przez obiekt docelowy, zwracając kopię komunikatu do obiektu wywołującego.

virtual message<T>* 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.

has_value

Sprawdza, czy ten overwrite_buffer blok obsługi komunikatów ma jeszcze wartość.

bool has_value() const;

Wartość zwracana

true jeśli blok otrzymał wartość, false w przeciwnym razie.

Wywołanie zwrotne, które powiadamia o tym, że nowy element docelowy został połączony z tym overwrite_buffer blokiem obsługi komunikatów.

virtual void link_target_notification(_Inout_ ITarget<T>* _PTarget);

Parametry

_PTarget
Wskaźnik do nowo połączonego elementu docelowego.

~Overwrite_buffer

Niszczy blok obsługi komunikatów overwrite_buffer .

~overwrite_buffer();

Overwrite_buffer

overwrite_buffer Tworzy blok obsługi komunikatów.

overwrite_buffer();

overwrite_buffer(
    filter_method const& _Filter);

overwrite_buffer(
    Scheduler& _PScheduler);

overwrite_buffer(
    Scheduler& _PScheduler,
    filter_method const& _Filter);

overwrite_buffer(
    ScheduleGroup& _PScheduleGroup);

overwrite_buffer(
    ScheduleGroup& _PScheduleGroup,
    filter_method const& _Filter);

Parametry

_Filtr
Funkcja filter, która określa, czy oferowane komunikaty powinny być akceptowane.

_PScheduler
Obiekt Scheduler , w którym zaplanowano zadanie overwrite_buffer propagacji bloku obsługi komunikatów.

_PScheduleGroup
Obiekt ScheduleGroup , w którym zaplanowano zadanie overwrite_buffer 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 filter_method to functor z podpisem bool (T const &) , który jest wywoływany przez ten overwrite_buffer blok obsługi komunikatów w celu określenia, czy powinien zaakceptować oferowany komunikat.

propagate_message

Asynchronicznie przekazuje komunikat z ISource bloku do tego overwrite_buffer 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<T>* _PMessage,
    _Inout_ ISource<T>* _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

Umieszcza element message _PMessage w tym overwrite_buffer bloku obsługi komunikatów i udostępnia go wszystkim połączonym obiektom docelowym.

virtual void propagate_to_any_targets(_Inout_ message<T>* _PMessage);

Parametry

_PMessage
Wskaźnik do message obiektu, którego to overwrite_buffer zostało przejęte na własność.

Uwagi

Ta metoda zastępuje bieżący komunikat w pliku z overwrite_buffer nowo zaakceptowanym komunikatem _PMessage.

send_message

Synchronicznie przekazuje komunikat z ISource bloku do tego overwrite_buffer 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<T>* _PMessage,
    _Inout_ ISource<T>* _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.

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

wartość

Pobiera odwołanie do bieżącego ładunku komunikatu przechowywanego overwrite_buffer w bloku obsługi komunikatów.

T value();

Wartość zwracana

Ładunek aktualnie przechowywanego komunikatu.

Uwagi

Wartość przechowywana w obiekcie może ulec zmianie natychmiast po powrocie overwrite_buffer tej metody. Ta metoda będzie czekać na nadejście komunikatu, jeśli żaden komunikat nie jest obecnie przechowywany w pliku overwrite_buffer.

Zobacz też

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