Udostępnij za pośrednictwem


Klasa: ISource

Klasa ISource jest interfejsem dla wszystkich bloków źródłowych. Bloki źródłowe propagują komunikaty do bloków ITarget.

Składnia

template<class T>
class ISource;

Parametry

T
Typ danych ładunku w komunikatach generowanych przez blok źródłowy.

Członkowie

Public Typedefs

Nazwa/nazwisko opis
source_type Alias typu dla elementu T.

Konstruktory publiczne

Nazwa/nazwisko opis
~ISource destruktor ISource Niszczy obiekt.

Metody publiczne

Nazwa/nazwisko opis
akceptować Gdy przesłonięta w klasie pochodnej, akceptuje komunikat oferowany przez ten ISource blok, przenosząc własność do obiektu wywołującego.
acquire_ref Po zastąpieniu w klasie pochodnej uzyskuje liczbę odwołań dla tego ISource bloku, aby zapobiec usunięciu.
konsumować Gdy przesłonięta w klasie pochodnej, używa komunikatu oferowanego wcześniej przez ten ISource blok i pomyślnie zarezerwowanego przez obiekt docelowy, przenosząc własność do obiektu wywołującego.
link_target Po zastąpieniu w klasie pochodnej łączy blok docelowy z tym ISource blokiem.
wydanie Po zastąpieniu w klasie pochodnej zwalnia poprzednią udaną rezerwację wiadomości.
release_ref Po zastąpieniu w klasie pochodnej zmniejsza licznik odwołań dla tego bloku ISource.
rezerwować Po zastąpieniu w klasie pochodnej blok ten rezerwuje wiadomość wcześniej zaoferowaną przez ten ISource blok.
unlink_target Kiedy zostanie zastąpiony w klasie pochodnej, odłącza blok docelowy od tego bloku ISource, jeśli zostanie wcześniej znaleziony jako połączony.
unlink_targets Po przedefiniowaniu w klasie pochodnej, odłącz wszystkie bloki docelowe od tego bloku ISource.

Uwagi

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

Hierarchia dziedziczenia

ISource

Wymagania

Nagłówek: agents.h

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

akceptuj

Kiedy przesłonięty w klasie pochodnej, akceptuje komunikat oferowany przez ten blok ISource, przekazując własność wywołującemu.

virtual message<T>* accept(
    runtime_object_identity _MsgId,
    _Inout_ ITarget<T>* _PTarget) = 0;

Parametry

_MsgId
runtime_object_identity oferowanego obiektu message.

_PTarget
Wskaźnik do bloku docelowego wywołującego metodę accept .

Wartość zwracana

Wskaźnik do komunikatu, którego obiekt wywołujący jest teraz właścicielem.

Uwagi

Metoda accept jest wywoływana przez element docelowy, gdy przez ten ISource blok jest oferowany komunikat. Zwrócony wskaźnik komunikatu może różnić się od tego, który został przekazany do propagate metody ITarget bloku, jeśli to źródło zdecyduje się utworzyć kopię komunikatu.

acquire_ref

Po zastąpieniu w klasie pochodnej uzyskuje liczbę odwołań dla tego ISource bloku, aby zapobiec usunięciu.

virtual void acquire_ref(_Inout_ ITarget<T>* _PTarget) = 0;

Parametry

_PTarget
Wskaźnik do bloku docelowego wywołującego tę metodę.

Uwagi

Ta metoda jest wywoływana przez obiekt ITarget, który jest łączony z tym źródłem podczas metody link_target.

zużywać

Gdy przesłonięta w klasie pochodnej, używa komunikatu oferowanego wcześniej przez ten ISource blok i pomyślnie zarezerwowanego przez obiekt docelowy, przenosząc własność do obiektu wywołującego.

virtual message<T>* consume(
    runtime_object_identity _MsgId,
    _Inout_ ITarget<T>* _PTarget) = 0;

Parametry

_MsgId
Obiekt runtime_object_identity zarezerwowany dla message.

_PTarget
Wskaźnik do bloku docelowego wywołującego metodę consume .

Wartość zwracana

Wskaźnik do message obiektu, którego właścicielem jest teraz podmiot wywołujący.

Uwagi

Metoda consume jest podobna do accept, ale zawsze musi być poprzedzona wywołaniem reserve, które zwróciło true wartość.

~ISource

ISource Niszczy obiekt.

virtual ~ISource();

Po zastąpieniu w klasie pochodnej łączy blok docelowy z tym ISource blokiem.

virtual void link_target(_Inout_ ITarget<T>* _PTarget) = 0;

Parametry

_PTarget
Wskaźnik do bloku docelowego powiązanego z tym blokiem ISource.

wersja

Po zastąpieniu w klasie pochodnej zwalnia poprzednią udaną rezerwację wiadomości.

virtual void release(
    runtime_object_identity _MsgId,
    _Inout_ ITarget<T>* _PTarget) = 0;

Parametry

_MsgId
Obiekt runtime_object_identity zarezerwowany dla message.

_PTarget
Wskaźnik do bloku docelowego wywołującego metodę release .

release_ref

Po zastąpieniu w klasie pochodnej zmniejsza licznik odwołań dla tego bloku ISource.

virtual void release_ref(_Inout_ ITarget<T>* _PTarget) = 0;

Parametry

_PTarget
Wskaźnik do bloku docelowego wywołującego tę metodę.

Uwagi

Ta metoda jest wywoływana przez ITarget obiekt, który jest odłączony od tego źródła. Blok źródłowy może zwolnić wszystkie zasoby zarezerwowane dla bloku docelowego.

rezerwować

Po zastąpieniu w klasie pochodnej blok ten rezerwuje wiadomość wcześniej zaoferowaną przez ten ISource blok.

virtual bool reserve(
    runtime_object_identity _MsgId,
    _Inout_ ITarget<T>* _PTarget) = 0;

Parametry

_MsgId
runtime_object_identity oferowanego obiektu message.

_PTarget
Wskaźnik do bloku docelowego wywołującego metodę reserve .

Wartość zwracana

true jeśli wiadomość została pomyślnie zarezerwowana, false w przeciwnym wypadku. Rezerwacje mogą zakończyć się niepowodzeniem z wielu powodów, na przykład: wiadomość została już zarezerwowana lub zaakceptowana przez innego docelowego odbiorcę, źródło może odrzucić rezerwacje, itd.

Uwagi

Po wywołaniu reserve, jeśli się powiedzie, musisz wywołać consume lub release w celu odpowiednio podjęcia lub rezygnacji z posiadania wiadomości.

Kiedy zostanie zastąpiony w klasie pochodnej, odłącza blok docelowy od tego bloku ISource, jeśli zostanie wcześniej znaleziony jako połączony.

virtual void unlink_target(_Inout_ ITarget<T>* _PTarget) = 0;

Parametry

_PTarget
Wskaźnik do bloku docelowego, który jest odłączany od tego ISource bloku.

Po przedefiniowaniu w klasie pochodnej, odłącz wszystkie bloki docelowe od tego bloku ISource.

virtual void unlink_targets() = 0;

Zobacz też

Przestrzeń nazw współbieżności
Klasa ITarget