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
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, 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. |
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
.
Návratová 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_identity
message
objekt.
_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í být vždy před voláním reserve
vráceného true
.
~ISource
ISource
Zničí objekt.
virtual ~ISource();
link_target
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.
uvolnit
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_identity
message
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.
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
message
Nabízený runtime_object_identity
objekt.
_PTarget
Ukazatel na cílový blok, který volá metodu reserve
.
Návratová 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í.
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.
virtual void unlink_target(_Inout_ ITarget<T>* _PTarget) = 0;
Parametry
_PTarget
Ukazatel na cílový blok, který se od tohoto ISource
bloku odpojí.
unlink_targets
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;