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 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 |
|---|---|
| ~ISource Destructor | 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 sobrescribe en una clase derivada, libera una reserva de mensaje previa exitosa. |
| 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
Un puntero al bloque objetivo que está llamando al método accept.
Valor devuelto
Un puntero al mensaje del que ahora el llamante es propietario.
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.
adquirir_referencia
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
Un puntero hacia el bloque de destino que está llamando 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
Un puntero al bloque objetivo 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();
link_target
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 enlaza con este bloque ISource.
lanzamiento
Cuando se sobrescribe en una clase derivada, libera una reserva de mensaje previa exitosa.
virtual void release(
runtime_object_identity _MsgId,
_Inout_ ITarget<T>* _PTarget) = 0;
Parámetros
_MsgId
runtime_object_identity del objeto message reservado.
_PTarget
Un puntero al bloque objetivo 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
Un puntero hacia el bloque de destino que está llamando a este método.
Comentarios
Este método es llamado por un objeto ITarget que está siendo desenlazado de este origen. El bloque de origen está permitido 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
Un puntero al bloque objetivo que está llamando al método reserve.
Valor devuelto
true si se ha reservado correctamente el mensaje; de lo contrario, false. Las reservas pueden fallar por muchas razones, como que otro destino ya haya reservado o aceptado el mensaje, que el origen pueda denegar las reservas, etc.
Comentarios
Después de llamar a reserve, si tiene éxito, debe llamar a consume o release para tomar posesión del mensaje o renunciar a ella, respectivamente.
desvincular_objetivo
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 está siendo desvinculado de este bloque ISource.
desvincular_objetivos
Cuando se invalida en una clase derivada, desvincula todos los bloques de destino de este bloque ISource.
virtual void unlink_targets() = 0;