Sdílet prostřednictvím


ISource – třída

Třída ISource je rozhraní pro všechny zdrojové bloky. Zdrojové bloky šíří zprávy do ITarget bloků.

Syntaxe

template<class T>
class ISource;

Parametry

T
Datový typ datové části v rámci zpráv vytvořených zdrojovým blokem.

Členové

Veřejné definice typedef

Jméno popis
source_type Alias typu pro T.

Veřejné konstruktory

Jméno popis
~ISource – destruktor ISource Zničí objekt.

Veřejné metody

Jméno popis
Přijmout Při přepsání v odvozené třídě přijímá zprávu, která byla nabízena tímto ISource blokem, přenos vlastnictví volajícímu.
acquire_ref Při přepsání v odvozené třídě získá referenční počet na tomto ISource bloku, aby se zabránilo odstranění.
Konzumovat Při přepsání v odvozené třídě spotřebuje zprávu dříve nabízenou tímto ISource blokem a úspěšně rezervována cílem a převádí vlastnictví volajícímu.
link_target Při přepsání v odvozené třídě odkazuje cílový blok na tento ISource blok.
Vydání Při přepsání v odvozené třídě uvolní předchozí úspěšnou rezervaci zprávy.
release_ref Při přepsání v odvozené třídě uvolní referenční počet na tomto ISource bloku.
Rezervy Při přepsání v odvozené třídě si vyhrazuje zprávu dříve nabízenou tímto ISource blokem.
unlink_target Při přepsání v odvozené třídě zruší propojení cílového bloku s tímto ISource blokem, pokud bylo zjištěno, že se dříve propojil.
unlink_targets Při přepsání v odvozené třídě zruší propojení všech cílových bloků z tohoto ISource bloku.

Poznámky

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

Hierarchie dědičnosti

ISource

Požadavky

Hlavička: agents.h

Obor názvů: souběžnost

accept

Při přepsání v odvozené třídě přijímá zprávu, která byla nabízena tímto ISource blokem, přenos vlastnictví volajícímu.

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

Parametry

_MsgId
message Nabízený runtime_object_identity objekt.

_PTarget
Ukazatel na cílový blok, který volá metodu accept .

Vrácená hodnota

Ukazatel na zprávu, že volající teď má vlastnictví.

Poznámky

Metoda accept je volána cílem, zatímco zpráva je nabízena tímto ISource blokem. Vrácený ukazatel zprávy se může lišit od ukazatele zprávy předaného do propagate metody ITarget bloku, pokud se tento zdroj rozhodne vytvořit kopii zprávy.

acquire_ref

Při přepsání v odvozené třídě získá referenční počet na tomto ISource bloku, aby se zabránilo odstranění.

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

Parametry

_PTarget
Ukazatel na cílový blok, který tuto metodu volá.

Poznámky

Tato metoda je volána objektem ITarget , který je propojen s tímto zdrojem během link_target metody.

consume

Při přepsání v odvozené třídě spotřebuje zprávu dříve nabízenou tímto ISource blokem a úspěšně rezervována cílem a převádí vlastnictví volajícímu.

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

Parametry

_MsgId
Rezervovaný runtime_object_identitymessage objekt.

_PTarget
Ukazatel na cílový blok, který volá metodu consume .

Vrácená hodnota

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

Poznámky

Metoda consume je podobná accept, ale musí být vždy před voláním reserve vráceného true.

~ISource

ISource Zničí objekt.

virtual ~ISource();

Při přepsání v odvozené třídě odkazuje cílový blok na tento ISource blok.

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

Parametry

_PTarget
Ukazatel na cílový blok, který je propojený s tímto ISource blokem.

Vydání

Při přepsání v odvozené třídě uvolní předchozí úspěšnou rezervaci zprávy.

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

Parametry

_MsgId
Rezervovaný runtime_object_identitymessage objekt.

_PTarget
Ukazatel na cílový blok, který volá metodu release .

release_ref

Při přepsání v odvozené třídě uvolní referenční počet na tomto ISource bloku.

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

Parametry

_PTarget
Ukazatel na cílový blok, který tuto metodu volá.

Poznámky

Tato metoda je volána ITarget objektem, který je odpojen od tohoto zdroje. Zdrojový blok může uvolnit všechny prostředky rezervované pro cílový blok.

Rezervy

Při přepsání v odvozené třídě si vyhrazuje zprávu dříve nabízenou tímto ISource blokem.

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

Parametry

_MsgId
message Nabízený runtime_object_identity objekt.

_PTarget
Ukazatel na cílový blok, který volá metodu reserve .

Vrácená hodnota

true pokud byla zpráva úspěšně rezervována, false jinak. Rezervace můžou selhat z mnoha důvodů, mezi které patří: zpráva už byla rezervována nebo přijata jiným cílem, zdroj mohl rezervace odepřít atd.

Poznámky

Jakmile zavoláte reserve, pokud bude úspěšné, musíte zavolat buď consume nebo release v zájmu převzetí nebo vzdání vlastnictví zprávy, v uvedeném pořadí.

Při přepsání v odvozené třídě zruší propojení cílového bloku s tímto ISource blokem, pokud bylo zjištěno, že se dříve propojil.

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

Parametry

_PTarget
Ukazatel na cílový blok, který se od tohoto ISource bloku odpojí.

Při přepsání v odvozené třídě zruší propojení všech cílových bloků z tohoto ISource bloku.

virtual void unlink_targets() = 0;

Viz také

concurrency – obor názvů
ITarget – třída