Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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;