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