Share via


ISource-klasse

De ISource klasse is de interface voor alle bronblokken. Bronblokken geven berichten door aan ITarget blokken.

Syntaxis

template<class T>
class ISource;

Parameterwaarden

T
Het gegevenstype van de payload binnen de berichten die door het bronblok worden geproduceerd.

Leden

Openbare typedefs

Naam Description
source_type Een typealias voor T.

Openbare constructors

Naam Description
~ISource-destructor Vernietigt het ISource object.

Openbare methoden

Naam Description
accepteren Wanneer deze wordt overschreven in een afgeleide klasse, accepteert een bericht dat door dit ISource blok is aangeboden, waarbij eigendom wordt overgedragen aan de aanroeper.
acquire_ref Wanneer deze wordt overschreven in een afgeleide klasse, verkrijgt u een verwijzingsaantal op dit ISource blok om verwijdering te voorkomen.
verbruiken Wanneer deze methode in een afgeleide klasse wordt overschreven, wordt een bericht dat eerder door dit ISource blok is aangeboden en succesvol door het doelwit is gereserveerd, geconsumeerd, waarbij het eigendom aan de oproeper wordt overgedragen.
link_target Wanneer deze methode in een afgeleide klasse wordt overschreven, verbindt het een doelblok met dit ISource blok.
release Wanneer deze wordt overschreven in een afgeleide klasse, wordt een eerdere succesvolle berichtreservering vrijgegeven.
release_ref Wanneer deze wordt overschreven in een afgeleide klasse, wordt een verwijzingsaantal op dit ISource blok vrijgegeven.
Reserve Wanneer overschreven in een afgeleide klasse, reserveert het een eerder aangeboden bericht door dit ISource blok.
doel ontkoppelen Wanneer deze wordt overschreven in een afgeleide klasse, ontkoppelt u een doelblok van dit ISource blok als deze eerder is gekoppeld.
unlink_targets Wanneer deze worden overschreven in een afgeleide klasse, ontkoppelt u alle doelblokken van dit ISource blok.

Opmerkingen

Zie Asynchrone berichtblokken voor meer informatie.

Overnamehiƫrarchie

ISource

Requirements

Header: agents.h

Naamruimte: concurrentie

accepteren

Wanneer deze in een afgeleide klasse wordt overschreven, accepteert het een bericht dat door dit ISource blok is aangeboden, waarbij het beheer wordt overgedragen aan de aanroepende instantie.

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

Parameterwaarden

_MsgId
Het runtime_object_identity van het aangeboden message object.

_PTarget
Een aanwijzer naar het doelblok dat de accept methode aanroept.

Retourwaarde

Een aanwijzer naar het bericht waarvan de beller nu eigenaar is.

Opmerkingen

De accept methode wordt aangeroepen door een doel terwijl een bericht wordt aangeboden door dit ISource blok. De geretourneerde berichtpointer kan afwijken van de aanwijzer die is doorgegeven aan de propagate methode van het ITarget blok, als deze bron besluit een kopie van het bericht te maken.

acquire_ref

Wanneer deze wordt overschreven in een afgeleide klasse, wordt een referentietelling verkregen voor dit ISource blok om verwijdering te voorkomen.

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

Parameterwaarden

_PTarget
Een aanwijzer naar het doelblok dat deze methode aanroept.

Opmerkingen

Deze methode wordt aangeroepen door een ITarget object dat tijdens de link_target methode aan deze bron wordt gekoppeld.

Verbruiken

Wanneer deze in een afgeleide klasse wordt overschreven, verbruikt u een bericht dat eerder door dit ISource blok is aangeboden en succesvol gereserveerd door het doel, waarbij het eigendom wordt overgedragen aan de beller.

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

Parameterwaarden

_MsgId
Het runtime_object_identity van het gereserveerde message-object.

_PTarget
Een aanwijzer naar het doelblok dat de consume methode aanroept.

Retourwaarde

Een aanwijzer naar het message object waarvan de aanroeper nu eigenaar is.

Opmerkingen

De consume methode is vergelijkbaar met accept, maar moet altijd worden voorafgegaan door een aanroep van reserve die true retourneerde.

~ISource

Vernietigt het ISource object.

virtual ~ISource();

Wanneer deze methode in een afgeleide klasse wordt overschreven, verbindt het een doelblok met dit ISource blok.

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

Parameterwaarden

_PTarget
Een aanwijzer naar het doelblok dat aan dit ISource blok wordt gekoppeld.

vrijgave

Wanneer deze wordt overschreven in een afgeleide klasse, wordt een eerdere succesvolle berichtreservering vrijgegeven.

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

Parameterwaarden

_MsgId
Het runtime_object_identity van het gereserveerde message-object.

_PTarget
Een aanwijzer naar het doelblok dat de release methode aanroept.

release_ref

Wanneer deze wordt overschreven in een afgeleide klasse, wordt een verwijzingsaantal op dit ISource blok vrijgegeven.

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

Parameterwaarden

_PTarget
Een aanwijzer naar het doelblok dat deze methode aanroept.

Opmerkingen

Deze methode wordt aangeroepen door een ITarget object dat niet is gekoppeld vanuit deze bron. Het bronblok mag alle resources vrijgeven die zijn gereserveerd voor het doelblok.

reserve

Wanneer overschreven in een afgeleide klasse, reserveert het een eerder aangeboden bericht door dit ISource blok.

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

Parameterwaarden

_MsgId
Het runtime_object_identity van het aangeboden message object.

_PTarget
Een aanwijzer naar het doelblok dat de reserve methode aanroept.

Retourwaarde

true als het bericht succesvol is gereserveerd, false anders. Reserveringen kunnen om verschillende redenen mislukken, waaronder: het bericht is al gereserveerd of geaccepteerd door een ander doel, de bron kan reserveringen weigeren, enzovoort.

Opmerkingen

Nadat u hebt gebeld reserve, moet u, als het lukt, bellen consume of release om respectievelijk het bericht in te nemen of op te geven.

Wanneer deze wordt overschreven in een afgeleide klasse, ontkoppelt u een doelblok van dit ISource blok als deze eerder is gekoppeld.

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

Parameterwaarden

_PTarget
Een aanwijzer naar het doelblok dat vanuit dit ISource blok wordt ontkoppeld.

Wanneer deze worden overschreven in een afgeleide klasse, ontkoppelt u alle doelblokken van dit ISource blok.

virtual void unlink_targets() = 0;

Zie ook

concurrentie Namespace
ITarget-klasse