Třída overwrite_buffer

Blok overwrite_buffer zasílání zpráv je více-cílový, více-zdrojový, uspořádaný propagator_block schopný uložit v jednom okamžiku pouze jednu zprávu. Nové zprávy přepíší dříve uložené zprávy.

Syntaxe

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

Parametry

T
Typ datové části zpráv, které jsou ukládány a přenášeny vyrovnávací pamětí.

Členové

Veřejné konstruktory

Název Popis
overwrite_buffer Přetíženo. overwrite_buffer Vytvoří blok zasílání zpráv.
~overwrite_buffer Destruktor overwrite_buffer Zničí blok zasílání zpráv.

Veřejné metody

Název Popis
má_hodnotu Zkontroluje, jestli tento overwrite_buffer blok zasílání zpráv ještě má hodnotu.
value Získá odkaz na aktuální datovou část zprávy, která je uložena v bloku zasílání zpráv overwrite_buffer.

Chráněné metody

Název Popis
přijmout_zprávu Přijímá zprávu, která byla nabízena tímto overwrite_buffer blokem zasílání zpráv a vrací kopii zprávy volajícímu.
consume_message Využívá zprávu, kterou blok overwrite_buffer zasílání zpráv předtím nabídl a kterou si rezervoval cíl, a vrací kopii této zprávy zpět volajícímu.
oznámení_o_cíli_odkazu Funkce zpětného volání, která upozorní na propojení nového cíle s tímto overwrite_buffer blokem zasílání zpráv.
propagate_message Asynchronně předává zprávu z ISource bloku do tohoto overwrite_buffer bloku zasílání zpráv. Vyvolá se metodou propagate při zavolání zdrojovým blokem.
šířit_na_jakékoliv_cíle Umístí message _PMessage do tohoto overwrite_buffer bloku zasílání zpráv a nabízí ho všem propojeným cílům.
release_message Uvolní předchozí rezervaci zpráv. (Přepisuje source_block::release_message.)
rezervační_zpráva Zarezervuje dříve nabízenou zprávu v tomto overwrite_buffer bloku zasílání zpráv. (Přepisuje source_block::reserve_message.)
resume_propagation Po uvolnění rezervace se obnoví šíření. (Přepsání source_block::resume_propagation.)
send_message Synchronně předává zprávu z ISource bloku do tohoto overwrite_buffer bloku zasílání zpráv. Vyvolá se metodou send při zavolání zdrojovým blokem.
podporuje_anonymní_zdroj Přepíše metodu supports_anonymous_source tak, aby označovala, že tento blok může přijímat zprávy nabízené zdrojem, který není propojený. (Přepsání ITarget::supports_anonymous_source.)

Poznámky

Blok overwrite_buffer zasílání zpráv odesílá kopie uložené zprávy ke každému ze svých cílů.

Další informace naleznete v tématu Asynchronní bloky zpráv.

Hierarchie dědičnosti

ISource

ITarget

source_block

propagátorový_blok

overwrite_buffer

Požadavky

Hlavička: agents.h

Obor názvů: souběžnost

přijmout_zprávu

Přijímá zprávu, která byla nabízena tímto overwrite_buffer blokem zasílání zpráv a vrací kopii zprávy volajícímu.

virtual message<T>* accept_message(runtime_object_identity _MsgId);

Parametry

_MsgId
runtime_object_identity Nabízený message objekt.

Návratová hodnota

Ukazatel na message objekt, ke kterému má volající nyní vlastnictví.

Poznámky

Blok overwrite_buffer zpráv vrátí kopie zprávy svým cílům, aniž by přenesl vlastnictví současně držené zprávy.

zpracovat_zprávu

Využívá zprávu, kterou blok overwrite_buffer zasílání zpráv předtím nabídl a kterou si rezervoval cíl, a vrací kopii této zprávy zpět volajícímu.

virtual message<T>* consume_message(runtime_object_identity _MsgId);

Parametry

_MsgId
runtime_object_identity objektu message, který je spotřebováván.

Návratová hodnota

Ukazatel na message objekt, ke kterému má volající nyní vlastnictví.

Poznámky

Podobá se accept, ale vždy mu předchází volání reserve.

má_hodnotu

Zkontroluje, jestli tento overwrite_buffer blok zasílání zpráv ještě má hodnotu.

bool has_value() const;

Návratová hodnota

true pokud blok obdržel hodnotu, false jinak.

Funkce zpětného volání, která upozorní na propojení nového cíle s tímto overwrite_buffer blokem zasílání zpráv.

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

Parametry

_PTarget
Ukazatel na nově propojený cíl.

~overwrite_buffer

overwrite_buffer Zničí blok zasílání zpráv.

~overwrite_buffer();

overwrite_buffer

overwrite_buffer Vytvoří blok zasílání zpráv.

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
Funkce filtru, která určuje, jestli mají být přijaté zprávy.

_PScheduler
Objekt Scheduler , ve kterém je naplánována úloha šíření bloku overwrite_buffer zasílání zpráv.

_PScheduleGroup
Objekt ScheduleGroup , ve kterém je naplánována úloha šíření bloku overwrite_buffer zasílání zpráv. Použití Scheduler objektu je dané skupinou plánů.

Poznámky

Modul runtime používá výchozí plánovač, pokud nezadáte buď parametr _PScheduler nebo parametr _PScheduleGroup.

Typ filter_method je functor s podpisem bool (T const &) , který je vyvolán tímto overwrite_buffer blokem zasílání zpráv, aby určil, zda má přijmout nabízenou zprávu.

šířit_zprávu

Asynchronně předává zprávu z ISource bloku do tohoto overwrite_buffer bloku zasílání zpráv. Vyvolá se metodou propagate při zavolání zdrojovým blokem.

virtual message_status propagate_message(
    _Inout_ message<T>* _PMessage,
    _Inout_ ISource<T>* _PSource);

Parametry

_PMessage
Ukazatel na message objekt.

_PSource
Ukazatel na zdrojový blok nabízející zprávu.

Návratová hodnota

Message_status indikace toho, co se cíl rozhodl udělat se zprávou.

šířit na všechny cíle

Umístí message _PMessage do tohoto overwrite_buffer bloku zasílání zpráv a nabízí ho všem propojeným cílům.

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

Parametry

_PMessage
Ukazatel na objekt message, jehož vlastnictví převzal overwrite_buffer.

Poznámky

Tato metoda přepíše aktuální zprávu v overwrite_buffer nově přijaté zprávě _PMessage.

odeslat_zprávu

Synchronně předává zprávu z ISource bloku do tohoto overwrite_buffer bloku zasílání zpráv. Vyvolá se metodou send při zavolání zdrojovým blokem.

virtual message_status send_message(
    _Inout_ message<T>* _PMessage,
    _Inout_ ISource<T>* _PSource);

Parametry

_PMessage
Ukazatel na message objekt.

_PSource
Ukazatel na zdrojový blok nabízející zprávu.

Návratová hodnota

Message_status indikace toho, co se cíl rozhodl udělat se zprávou.

podporuje_anonymní_zdroj

Přepíše metodu supports_anonymous_source tak, aby označovala, že tento blok může přijímat zprávy nabízené zdrojem, který není propojený.

virtual bool supports_anonymous_source();

Návratová hodnota

true vzhledem k tomu, že blok neodkládá nabízené zprávy.

zpráva o vydání

Uvolní předchozí rezervaci zpráv.

virtual void release_message(runtime_object_identity _MsgId);

Parametry

_MsgId
Uvolnění runtime_object_identity objektu message .

rezervovat_zprávu

Zarezervuje dříve nabízenou zprávu v tomto overwrite_buffer bloku zasílání zpráv.

virtual bool reserve_message(runtime_object_identity _MsgId);

Parametry

_MsgId
Objekt message, který je rezervován pro runtime_object_identity.

Návratová hodnota

true pokud byla zpráva úspěšně rezervována, jinak false.

Poznámky

Po zavolání reserve, pokud se vrátí true, musí být buď consume nebo release zavolána, aby došlo k převzetí nebo uvolnění vlastnictví zprávy.

resume_propagation

Po uvolnění rezervace se obnoví šíření.

virtual void resume_propagation();

hodnota

Získá odkaz na aktuální datovou část zprávy, která je uložena v bloku zasílání zpráv overwrite_buffer.

T value();

Návratová hodnota

Obsah aktuálně uložené zprávy.

Poznámky

Hodnota uložená v této overwrite_buffer metodě se může změnit okamžitě po vrácení této metody. Tato metoda počká, dokud zpráva nedorazí, pokud není v současné době uložena žádná zpráva .overwrite_buffer

Viz také

concurrency – obor názvů
Třída unbounded_buffer
single_assignment Class