ISource – třída
Třída ISource
je rozhraní pro všechny zdrojové bloky. Zdrojové bloky šíří zprávy do ITarget
bloků.
template<class T>
class ISource;
T
Datový typ datové části v rámci zpráv vytvořených zdrojovým blokem.
Název | Popis |
---|---|
source_type |
Alias typu pro T . |
Název | Popis |
---|---|
~ISource – destruktor | ISource Zničí objekt. |
Název | 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í. |
spotřebovat | 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. |
uvolnit | 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. |
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 | Při přepsání v odvozené třídě zruší propojení všech cílových bloků z tohoto ISource bloku. |
Další informace naleznete v tématu Asynchronní bloky zpráv.
ISource
Hlavička: agents.h
Obor názvů: souběžnost
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;
_MsgId
message
Nabízený runtime_object_identity
objekt.
_PTarget
Ukazatel na cílový blok, který volá metodu accept
.
Ukazatel na zprávu, že volající teď má vlastnictví.
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.
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;
_PTarget
Ukazatel na cílový blok, který tuto metodu volá.
Tato metoda je volána objektem ITarget
, který je propojen s tímto zdrojem během link_target
metody.
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;
_MsgId
Rezervovaný runtime_object_identity
message
objekt.
_PTarget
Ukazatel na cílový blok, který volá metodu consume
.
Ukazatel na message
objekt, ke kterému má volající nyní vlastnictví.
Metoda consume
je podobná accept
, ale musí být vždy před voláním reserve
vráceného true
.
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;
_PTarget
Ukazatel na cílový blok, který je propojený s tímto ISource
blokem.
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;
_MsgId
Rezervovaný runtime_object_identity
message
objekt.
_PTarget
Ukazatel na cílový blok, který volá metodu release
.
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;
_PTarget
Ukazatel na cílový blok, který tuto metodu volá.
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.
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;
_MsgId
message
Nabízený runtime_object_identity
objekt.
_PTarget
Ukazatel na cílový blok, který volá metodu reserve
.
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.
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;
_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;