Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La clase ITarget es la interfaz para todos los bloques de destino. Los bloques de destino 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 |
|---|---|
| ~ITarget Destructor | 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 verdadero o falso dependiendo 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 vinculado 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.
propagar
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 send regresa, el mensaje ya ha sido aceptado y transferido al bloque de destino, o ha sido rechazado por el destino.
soporta_fuente_anónima
Cuando se invalida en una clase derivada, devuelve verdadero o falso dependiendo 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 mensajes 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
El bloque ISource está siendo desvinculado 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.
desvincular_fuentes
Cuando se invalida en una clase derivada, desvincula todos los bloques de origen de este bloque ITarget.
virtual void unlink_sources() = 0;