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.
Elementy członkowskie
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
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 accept
element , 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.
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.
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_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();
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