Compartir a través de


ITarget (Clase)

La clase ITarget es la interfaz para todos los bloques de destino. Los bloques de destinos consumen mensajes ofrecidos por los bloques ISource.

Sintaxis

template<class T>
class ITarget;

Parámetros

T
Tipo de datos de la carga dentro de los mensajes que el bloque de destino acepta.

Miembros

Definiciones de tipos públicas

Nombre Descripción
filter_method Signatura de cualquier método utilizado por el bloque que devuelve un valor bool para determinar si se debe aceptar un mensaje ofrecido.
type Alias de tipo para T.

Constructores públicos

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

Métodos públicos

Nombre Descripción
propagate Cuando se invalida en una clase derivada, pasa de manera asincrónica un mensaje de un bloque de origen a este bloque de destino.
send Cuando se invalida en una clase derivada, pasa de manera sincrónica un mensaje al bloque de destino.
supports_anonymous_source Cuando se invalida en una clase derivada, devuelve true o false en función de si el bloque de mensajes acepta los mensajes ofrecidos por un origen al que no está vinculado. Si el método invalidado devuelve true, el destino no puede posponer un mensaje ofrecido, ya que el consumo posterior de un mensaje pospuesto requiere que el origen se identifique en su registro de vínculos de origen.

Métodos protegidos

Nombre Descripción
link_source Cuando se invalida en una clase derivada, vincula un bloque de origen especificado a este bloque ITarget.
unlink_source Cuando se invalida en una clase derivada, desvincula un bloque de origen especificado de este bloque ITarget.
unlink_sources Cuando se invalida en una clase derivada, desvincula todos los bloques de origen de este bloque ITarget.

Comentarios

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

Jerarquía de herencia

ITarget

Requisitos

Encabezado: agents.h

Espacio de nombres: simultaneidad

~ITarget

Destruye el objeto ITarget.

virtual ~ITarget();

Cuando se invalida en una clase derivada, vincula un bloque de origen especificado a este bloque ITarget.

virtual void link_source(_Inout_ ISource<T>* _PSource) = 0;

Parámetros

_PSource
Bloque ISource que se va a vincular a este bloque ITarget.

Comentarios

No se debe llamar directamente a esta función en un bloque ITarget. Los bloques se deben conectar juntos con el método link_target en los bloques ISource, lo que invocará al método link_source en el destino correspondiente.

propagate

Cuando se invalida en una clase derivada, pasa de manera asincrónica un mensaje de un bloque de origen a este bloque de destino.

virtual message_status propagate(
    _Inout_opt_ message<T>* _PMessage,
    _Inout_opt_ ISource<T>* _PSource) = 0;

Parámetros

_PMessage
Un puntero al objeto message.

_PSource
Puntero al bloque de origen que ofrece el mensaje.

Valor devuelto

Una indicación message_status de lo que el destino decidió hacer con el mensaje.

Comentarios

El método genera una excepción invalid_argument si el parámetro _PMessage o el parámetro _PSource es NULL.

Enviar

Cuando se invalida en una clase derivada, pasa de manera sincrónica un mensaje al bloque de destino.

virtual message_status send(
    _Inout_ message<T>* _PMessage,
    _Inout_ ISource<T>* _PSource) = 0;

Parámetros

_PMessage
Un puntero al objeto message.

_PSource
Puntero al bloque de origen que ofrece el mensaje.

Valor devuelto

Una indicación message_status de lo que el destino decidió hacer con el mensaje.

Comentarios

El método genera una excepción invalid_argument si el parámetro _PMessage o el parámetro _PSource es NULL.

Usar el método send fuera de la iniciación del mensaje y para propagar mensajes dentro de una red es peligroso y puede generar un interbloqueo.

Cuando se devuelve send, ya se aceptó el mensaje y se transfirió al bloque de destino, o bien el destino ya lo rechazó.

supports_anonymous_source

Cuando se invalida en una clase derivada, devuelve true o false en función de si el bloque de mensajes acepta los mensajes ofrecidos por un origen al que no está vinculado. Si el método invalidado devuelve true, el destino no puede posponer un mensaje ofrecido, ya que el consumo posterior de un mensaje pospuesto requiere que el origen se identifique en su registro de vínculos de origen.

virtual bool supports_anonymous_source();

Valor devuelto

true si el bloque puede aceptar el mensaje de un origen al que no está vinculado; de lo contrario, false.

Cuando se invalida en una clase derivada, desvincula un bloque de origen especificado de este bloque ITarget.

virtual void unlink_source(_Inout_ ISource<T>* _PSource) = 0;

Parámetros

_PSource
Bloque ISource que se va a desvincular de este bloque ITarget.

Comentarios

No se debe llamar directamente a esta función en un bloque ITarget. Los bloques se deben desconectar con el método unlink_target o el método unlink_targets en los bloques ISource, lo que invocará al método unlink_source en el destino correspondiente.

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

virtual void unlink_sources() = 0;

Consulte también

concurrency (espacio de nombres)
ISource (clase)