Udostępnij za pośrednictwem


ISource — Klasa

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

Składnia

template<class T>
class ISource;

Parametry

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

Elementy członkowskie

Definicje typów publicznych

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.
zwolnić Po zastąpieniu w klasie pochodnej zwalnia poprzednią pomyślną rezerwację komunikatów.
release_ref Po zastąpieniu w klasie pochodnej zwalnia liczbę odwołań dla tego ISource bloku.
rezerwować Po zastąpieniu w klasie pochodnej rezerwuje komunikat wcześniej oferowany przez ten ISource blok.
unlink_target Po zastąpieniu w klasie pochodnej odłącza blok docelowy od tego ISource bloku, jeśli zostanie znaleziony wcześniej połączony.
unlink_targets Po zastąpieniu w klasie pochodnej odłącz wszystkie bloki docelowe z tego ISource bloku.

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

Gdy przesłonięta w klasie pochodnej, akceptuje komunikat oferowany przez ten ISource blok, przenosząc własność do obiektu wywołującego.

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

Parametry

_MsgId
Obiekt runtime_object_identity oferowany message .

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

Wartość zwracana

Wskaźnik do komunikatu, że obiekt wywołujący ma teraz własność.

Uwagi

Metoda jest wywoływana accept przez element docelowy, gdy komunikat jest oferowany przez ten ISource blok. 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 ITarget obiekt połączony z tym źródłem podczas link_target metody .

consume

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

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

Wartość zwracana

Wskaźnik do message obiektu, którego obiekt wywołujący ma teraz własność.

Uwagi

Metoda jest podobna consume do acceptmetody , ale zawsze musi być poprzedzona wywołaniem metody , która reserve zwróciła truewartość .

~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 połączonego z tym ISource blokiem.

zwolnić

Po zastąpieniu w klasie pochodnej zwalnia poprzednią pomyślną rezerwację komunikatów.

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

Parametry

_MsgId
Obiekt runtime_object_identity zarezerwowany message .

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

release_ref

Po zastąpieniu w klasie pochodnej zwalnia liczbę odwołań dla tego ISource bloku.

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 rezerwuje komunikat wcześniej oferowany przez ten ISource blok.

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

Parametry

_MsgId
Obiekt runtime_object_identity oferowany 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 razie. Rezerwacje mogą zakończyć się niepowodzeniem z wielu powodów, w tym: komunikat został już zarezerwowany lub zaakceptowany przez inny obiekt docelowy, źródło może odmówić rezerwacji itd.

Uwagi

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

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

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

Parametry

_PTarget
Wskaźnik do bloku docelowego jest odłączony od tego ISource bloku.

Po zastąpieniu w klasie pochodnej odłącz wszystkie bloki docelowe z tego ISource bloku.

virtual void unlink_targets() = 0;

Zobacz też

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