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();
link_source
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
.
unlink_source
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.
unlink_sources
Cuando se invalida en una clase derivada, desvincula todos los bloques de origen de este bloque ITarget
.
virtual void unlink_sources() = 0;