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();
link_source
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
.
unlink_source
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.
unlink_sources
Quando substituído em uma classe derivada, desvincula todos os blocos de origem desse bloco ITarget
.
virtual void unlink_sources() = 0;