Compartir vía


ISource (Clase)

La clase ISource es la interfaz para todos los bloques de origen. Los bloques de origen propagan mensajes a los bloques ITarget.

Sintaxis

template<class T>
class ISource;

Parámetros

T
Tipo de datos de la carga dentro de los mensajes generados por el bloque de origen.

Miembros

Definiciones de tipos públicas

Nombre Descripción
source_type Alias de tipo para T.

Constructores públicos

Nombre Descripción
Destructor ~ISource Destruye el objeto ISource.

Métodos públicos

Nombre Descripción
accept Cuando se invalida en una clase derivada, acepta un mensaje ofrecido por este bloque ISource, transfiriendo la propiedad al autor de la llamada.
acquire_ref Cuando se invalida en una clase derivada, adquiere un recuento de referencias en este bloque ISource para impedir la eliminación.
consumo Cuando se invalida en una clase derivada, consume un mensaje ofrecido previamente por el bloque ISource y reservado correctamente por el destino, y transfiere la propiedad al autor de la llamada.
link_target Cuando se invalida en una clase derivada, vincula un bloque de destino a este bloque ISource.
release Cuando se invalida en una clase derivada, libera una reserva de mensajes correcta anterior.
release_ref Cuando se invalida en una clase derivada, libera un recuento de referencias en este bloque ISource.
reserve Cuando se invalida en una clase derivada, reserva un mensaje ofrecido previamente por este bloque ISource.
unlink_target Cuando se invalida en una clase derivada, desvincula un bloque de destino de este bloque ISource, si estaba vinculado previamente.
unlink_targets Cuando se invalida en una clase derivada, desvincula todos los bloques de destino de este bloque ISource.

Comentarios

Para obtener más información, consulte Bloques de mensajes asincrónicos.

Jerarquía de herencia

ISource

Requisitos

Encabezado: agents.h

Espacio de nombres: simultaneidad

aceptar

Cuando se invalida en una clase derivada, acepta un mensaje ofrecido por este bloque ISource, transfiriendo la propiedad al autor de la llamada.

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

Parámetros

_MsgId
El valor runtime_object_identity del objeto message ofrecido.

_PTarget
Puntero al bloque de destino que está llamando al método accept.

Valor devuelto

Puntero al mensaje que ahora posee el autor de la llamada.

Comentarios

Un destino llama al método accept mientras este bloque ISource está ofreciendo un mensaje. El puntero de mensaje devuelto puede ser diferente del que se pasa al método propagate del bloque ITarget, si este origen decide realizar una copia del mensaje.

acquire_ref

Cuando se invalida en una clase derivada, adquiere un recuento de referencias en este bloque ISource para impedir la eliminación.

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

Parámetros

_PTarget
Puntero al bloque de destino que llama a este método.

Comentarios

Un objeto ITarget que está vinculado a este origen llama a este método durante el método link_target.

consumir

Cuando se invalida en una clase derivada, consume un mensaje ofrecido previamente por el bloque ISource y reservado correctamente por el destino, y transfiere la propiedad al autor de la llamada.

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

Parámetros

_MsgId
runtime_object_identity del objeto message reservado.

_PTarget
Puntero al bloque de destino que está llamando al método consume.

Valor devuelto

Puntero al objeto message del que el autor de la llamada tiene ahora la propiedad.

Comentarios

El método consume es similar a accept, pero siempre debe ir precedido de una llamada a reserve que haya devuelto true.

~ISource

Destruye el objeto ISource.

virtual ~ISource();

Cuando se invalida en una clase derivada, vincula un bloque de destino a este bloque ISource.

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

Parámetros

_PTarget
Puntero al bloque de destino que se vincula a este bloque ISource.

release

Cuando se invalida en una clase derivada, libera una reserva de mensajes correcta anterior.

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

Parámetros

_MsgId
runtime_object_identity del objeto message reservado.

_PTarget
Puntero al bloque de destino que está llamando al método release.

release_ref

Cuando se invalida en una clase derivada, libera un recuento de referencias en este bloque ISource.

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

Parámetros

_PTarget
Puntero al bloque de destino que llama a este método.

Comentarios

Un objeto ITarget que se desenlazará de este origen llama a este método. El bloque de origen se permite para liberar los recursos reservados para el bloque de destino.

reserva

Cuando se invalida en una clase derivada, reserva un mensaje ofrecido previamente por este bloque ISource.

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

Parámetros

_MsgId
El valor runtime_object_identity del objeto message ofrecido.

_PTarget
Puntero al bloque de destino que está llamando al método reserve.

Valor devuelto

true si se ha reservado correctamente el mensaje; de lo contrario, false. Las reservas pueden producir errores por muchas razones, como que el mensaje ya estaba reservado o aceptado por otro destino, que el origen deniegue reservas, etc.

Comentarios

Después de llamar a reserve, si no hay errores, debe llamar a consume o release para tomar la posesión del mensaje o renunciar a ella respectivamente.

Cuando se invalida en una clase derivada, desvincula un bloque de destino de este bloque ISource, si estaba vinculado previamente.

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

Parámetros

_PTarget
Puntero al bloque de destino que se desvincula de este bloque ISource.

Cuando se invalida en una clase derivada, desvincula todos los bloques de destino de este bloque ISource.

virtual void unlink_targets() = 0;

Consulte también

concurrency (espacio de nombres)
ITarget (clase)