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é typové definice

Název Popis
source_type Alias typu pro T.

Veřejné konstruktory

Název Popis
~ISource – destruktor ISource Zničí objekt.

Veřejné metody

Název Popis
přijmout Při přepsání v odvozené třídě přijímá zprávu, kterou tento ISource blok nabídl, a předává vlastnictví volajícímu.
acquire_ref Když je přepsána v odvozené třídě, získá referenční počet na tomto ISource bloku, aby se zabránilo smazání.
spotřebovat Při přepsání v odvozené třídě spotřebovává zprávu, která byla dříve nabízena tímto ISource blokem a úspěšně rezervována cílem, čímž převádí vlastnictví na volajícího.
link_target Když je přepsána v odvozené třídě, připojí cílový blok k tomuto ISource bloku.
uvolnit ** Při přetížení 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.
rezerva 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 Když je přepsána v odvozené třídě, zruší propojení všech cílových bloků s tímto blokem ISource.

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

přijmout

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

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

Parametry

_MsgId
runtime_object_identity Nabízený message objekt.

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

Návratová hodnota

Ukazatel na zprávu, jejíž vlastnictví nyní přebírá volající.

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

Když je přepsána v odvozené třídě, získá referenční počet na tomto ISource bloku, aby se zabránilo smazá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.

využít

Při přepsání v odvozené třídě spotřebovává zprávu, která byla dříve nabízena tímto ISource blokem a úspěšně rezervována cílem, čímž převádí vlastnictví na volajícího.

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

Parametry

_MsgId
Rezervovaný objekt runtime_object_identitymessage.

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

Návratová hodnota

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

Poznámky

Metoda consume je podobná accept, ale musí vždy následovat po volání reserve, které vrátí true.

~ISource

ISource Zničí objekt.

virtual ~ISource();

Když je přepsána v odvozené třídě, připojí cílový blok k tomuto ISource bloku.

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

Parametry

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

verze

** Při přetížení 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ý objekt runtime_object_identitymessage.

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

rezerva

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
runtime_object_identity Nabízený message objekt.

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

Návratová hodnota

true pokud byla zpráva úspěšně rezervována, jinak false. 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 se podaří, musíte zavolat buď consume nebo release pro převzetí nebo vzdání se vlastnictví zprávy.

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

Když je přepsána v odvozené třídě, zruší propojení všech cílových bloků s tímto blokem ISource.

virtual void unlink_targets() = 0;

Viz také

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