Partilhar via


Classe ITarget

A classe ITarget é a interface para todos os blocos de destino. Os blocos de destino consomem mensagens oferecidas a eles por blocos ISource.

Sintaxe

template<class T>
class ITarget;

Parâmetros

T
O tipo de dados do conteúdo dentro das mensagens aceitas pelo bloco de destino.

Membros

Typedefs públicos

Nome Descrição
filter_method A assinatura de qualquer método usado pelo bloco que retorna um valor bool para determinar se uma mensagem oferecida deve ser aceita.
type Um alias de tipo para T.

Construtores públicos

Nome Descrição
~ITarget Destructor Destrói o objeto ITarget.

Métodos públicos

Nome Descrição
propagate Quando substituído em uma classe derivada, passa de forma assíncrona uma mensagem de um bloco de origem para esse bloco de destino.
send Quando substituído em uma classe derivada, passa uma mensagem de forma síncrona para o bloco de destino.
supports_anonymous_source Quando substituído em uma classe derivada, retorna true ou false dependendo se o bloco de mensagens aceita mensagens oferecidas por uma origem que não está vinculada a ela. Se o método substituído retornar true, o destino não poderá adiar uma mensagem oferecida, pois o consumo de uma mensagem adiada posteriormente exige que a origem seja identificada em seu registro de link de origem.

Métodos protegidos

Nome Descrição
link_source Quando substituído em uma classe derivada, vincula um bloco de origem especificado a esse bloco ITarget.
unlink_source Quando substituído em uma classe derivada, desvincula um bloco de origem especificado desse bloco ITarget.
unlink_sources Quando substituído em uma classe derivada, desvincula todos os blocos de origem desse bloco ITarget.

Comentários

Para mais informações, confira Blocos de mensagens assíncronas.

Hierarquia de herança

ITarget

Requisitos

Cabeçalho: agents.h

Namespace: concurrency

~ ELE

Destrói o objeto ITarget.

virtual ~ITarget();

Quando substituído em uma classe derivada, vincula um bloco de origem especificado a esse bloco ITarget.

virtual void link_source(_Inout_ ISource<T>* _PSource) = 0;

Parâmetros

_PSource
O bloco ISource que está sendo vinculado a esse bloco ITarget.

Comentários

Essa função não deve ser chamada diretamente em um bloco ITarget. Os blocos devem ser conectados juntos usando o método link_target em blocos ISource, o que invocará o método link_source no destino correspondente.

propagate

Quando substituído em uma classe derivada, passa de forma assíncrona uma mensagem de um bloco de origem para esse bloco de destino.

virtual message_status propagate(
    _Inout_opt_ message<T>* _PMessage,
    _Inout_opt_ ISource<T>* _PSource) = 0;

Parâmetros

_PMessage
Um ponteiro para o message objeto.

_PSource
Um ponteiro para o bloco de origem que oferece a mensagem.

Valor de retorno

Uma indicação de message_status do que o destino decidiu fazer com a mensagem.

Comentários

O método gera uma exceção invalid_argument se o parâmetro _PMessage ou _PSource for NULL.

Enviar

Quando substituído em uma classe derivada, passa uma mensagem de forma síncrona para o bloco de destino.

virtual message_status send(
    _Inout_ message<T>* _PMessage,
    _Inout_ ISource<T>* _PSource) = 0;

Parâmetros

_PMessage
Um ponteiro para o message objeto.

_PSource
Um ponteiro para o bloco de origem que oferece a mensagem.

Valor de retorno

Uma indicação de message_status do que o destino decidiu fazer com a mensagem.

Comentários

O método gera uma exceção invalid_argument se o parâmetro _PMessage ou _PSource for NULL.

Usar o método send fora do início da mensagem e propagar mensagens em uma rede é perigoso e pode levar a deadlock.

Quando retorna send, a mensagem já foi aceita e transferida para o bloco de destino, ou foi recusada pelo destino.

supports_anonymous_source

Quando substituído em uma classe derivada, retorna true ou false dependendo se o bloco de mensagens aceita mensagens oferecidas por uma origem que não está vinculada a ela. Se o método substituído retornar true, o destino não poderá adiar uma mensagem oferecida, pois o consumo de uma mensagem adiada posteriormente exige que a origem seja identificada em seu registro de link de origem.

virtual bool supports_anonymous_source();

Valor de retorno

true se o bloco puder aceitar a mensagem de uma origem que não esteja vinculada a ela; caso contrário, false.

Quando substituído em uma classe derivada, desvincula um bloco de origem especificado desse bloco ITarget.

virtual void unlink_source(_Inout_ ISource<T>* _PSource) = 0;

Parâmetros

_PSource
O bloco ISource que está sendo desvinculado desse bloco ITarget.

Comentários

Essa função não deve ser chamada diretamente em um bloco ITarget. Os blocos devem ser conectados juntos usando os métodos unlink_target ou unlink_targets em blocos ISource, o que invocará o método unlink_source no destino correspondente.

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

virtual void unlink_sources() = 0;

Confira também

Namespace de simultaneidade
Classe ISource