Classe ISource
A classe ISource
é a interface para todos os blocos de origem. Blocos de origem propagam mensagens para blocos ITarget
.
Sintaxe
template<class T>
class ISource;
Parâmetros
T
O tipo de dados do conteúdo dentro das mensagens aceitas pelo bloco de origem.
Membros
Typedefs públicos
Nome | Descrição |
---|---|
source_type |
Um alias de tipo para T . |
Construtores públicos
Nome | Descrição |
---|---|
Destruidor ~ISource | Destrói o objeto ISource . |
Métodos públicos
Nome | Descrição |
---|---|
accept | Quando substituído em uma classe derivada, aceita uma mensagem que foi oferecida por esse bloco ISource , transferindo a propriedade para o chamador. |
acquire_ref | Quando substituído em uma classe derivada, adquire uma contagem de referências nesse bloco ISource , para evitar a exclusão. |
consumir | Quando substituído em uma classe derivada, consome uma mensagem oferecida anteriormente por esse bloco ISource e reservada com êxito pelo destino, transferindo a propriedade para o chamador. |
link_target | Quando substituído em uma classe derivada, vincula um bloco de destino a esse bloco ISource . |
release | Quando substituído em uma classe derivada, libera uma reserva de mensagem bem-sucedida anterior. |
release_ref | Quando substituído em uma classe derivada, libera uma contagem de referência nesse bloco ISource . |
reserve | Quando substituído em uma classe derivada, reserva uma mensagem oferecida anteriormente por esse bloco ISource . |
unlink_target | Quando substituído em uma classe derivada, desvincula um bloco de destino desse bloco ISource , se estiver vinculado anteriormente. |
unlink_targets | Quando substituído em uma classe derivada, desvincula todos os blocos de destino desse bloco ISource . |
Comentários
Para mais informações, confira Blocos de mensagens assíncronas.
Hierarquia de herança
ISource
Requisitos
Cabeçalho: agents.h
Namespace: concurrency
accept
Quando substituído em uma classe derivada, aceita uma mensagem que foi oferecida por esse bloco ISource
, transferindo a propriedade para o chamador.
virtual message<T>* accept(
runtime_object_identity _MsgId,
_Inout_ ITarget<T>* _PTarget) = 0;
Parâmetros
_MsgId
O runtime_object_identity
do objeto message
oferecido.
_PTarget
Um ponteiro para o bloco de destino que está chamando o método accept
.
Valor de retorno
Um ponteiro para a mensagem da qual o chamador agora tem propriedade.
Comentários
O método accept
é chamado por um destino enquanto uma mensagem está sendo oferecida por esse bloco ISource
. O ponteiro de mensagem retornado pode ser diferente do passado para o método propagate
do bloco ITarget
, se essa fonte decidir fazer uma cópia da mensagem.
acquire_ref
Quando substituído em uma classe derivada, adquire uma contagem de referências nesse bloco ISource
, para evitar a exclusão.
virtual void acquire_ref(_Inout_ ITarget<T>* _PTarget) = 0;
Parâmetros
_PTarget
Um ponteiro para o bloco de destino que está chamando esse método.
Comentários
Esse método é chamado por um objeto ITarget
que está sendo vinculado a essa fonte durante o método link_target
.
consumir
Quando substituído em uma classe derivada, consome uma mensagem oferecida anteriormente por esse bloco ISource
e reservada com êxito pelo destino, transferindo a propriedade para o chamador.
virtual message<T>* consume(
runtime_object_identity _MsgId,
_Inout_ ITarget<T>* _PTarget) = 0;
Parâmetros
_MsgId
O runtime_object_identity
do objeto reservado message
.
_PTarget
Um ponteiro para o bloco de destino que está chamando o método consume
.
Valor de retorno
Um ponteiro para o objeto message
do qual o chamador agora tem propriedade.
Comentários
O consume
método é semelhante a accept
, mas deve ser sempre precedido por uma chamada para reserve
o retornado true
.
~ ISource
Destrói o objeto ISource
.
virtual ~ISource();
link_target
Quando substituído em uma classe derivada, vincula um bloco de destino a esse bloco ISource
.
virtual void link_target(_Inout_ ITarget<T>* _PTarget) = 0;
Parâmetros
_PTarget
Um ponteiro para o bloco de destino que está sendo vinculado a esse bloco ISource
.
release
Quando substituído em uma classe derivada, libera uma reserva de mensagem bem-sucedida anterior.
virtual void release(
runtime_object_identity _MsgId,
_Inout_ ITarget<T>* _PTarget) = 0;
Parâmetros
_MsgId
O runtime_object_identity
do objeto reservado message
.
_PTarget
Um ponteiro para o bloco de destino que está chamando o método release
.
release_ref
Quando substituído em uma classe derivada, libera uma contagem de referência nesse bloco ISource
.
virtual void release_ref(_Inout_ ITarget<T>* _PTarget) = 0;
Parâmetros
_PTarget
Um ponteiro para o bloco de destino que está chamando esse método.
Comentários
Esse método é chamado por um objeto ITarget
que está sendo desvinculado dessa fonte. O bloco de origem tem permissão para liberar todos os recursos reservados para o bloco de destino.
reserve
Quando substituído em uma classe derivada, reserva uma mensagem oferecida anteriormente por esse bloco ISource
.
virtual bool reserve(
runtime_object_identity _MsgId,
_Inout_ ITarget<T>* _PTarget) = 0;
Parâmetros
_MsgId
O runtime_object_identity
do objeto message
oferecido.
_PTarget
Um ponteiro para o bloco de destino que está chamando o método reserve
.
Valor de retorno
true
se a mensagem foi reservada com êxito; caso contrário, false
. As reservas podem falhar por muitos motivos, incluindo: a mensagem já foi reservada ou aceita por outro destino, a origem pode negar reservas etc.
Comentários
Depois de chamar reserve
, se tiver êxito, você deverá chamar consume
ou release
para assumir ou conceder a posse da mensagem, respectivamente.
unlink_target
Quando substituído em uma classe derivada, desvincula um bloco de destino desse bloco ISource
, se estiver vinculado anteriormente.
virtual void unlink_target(_Inout_ ITarget<T>* _PTarget) = 0;
Parâmetros
_PTarget
Um ponteiro para o bloco de destino que está sendo desvinculado desse bloco ISource
.
unlink_targets
Quando substituído em uma classe derivada, desvincula todos os blocos de destino desse bloco ISource
.
virtual void unlink_targets() = 0;