Share via


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 Devolução

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 Devolução

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();

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 Devolução

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.

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.

Quando substituído em uma classe derivada, desvincula todos os blocos de destino desse bloco ISource.

virtual void unlink_targets() = 0;

Confira também

Namespace de simultaneidade
Classe ITarget