O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

nl::Weave::Perfis::Echo_Next::WeaveEchoClient

#include <src/lib/profiles/echo/Next/WeaveEchoClient.h>

Provides the ability to send Weave EchoRequest messages to a peer node and receive
the corresponding EchoResponse messages.

Resumo

A classe WeaveEchoClient implementa o lado do iniciador do protocolo Weave Echo. Semelhante ao protocolo de ping ICMP, o protocolo de eco do Weave pode ser usado para testar a atividade e a acessibilidade de um nó do Weave.

Os aplicativos podem usar a classe WeaveEchoClient para enviar mensagens EchoRequest únicas ou recorrentes para um nó de peering identificado por um objeto Binding. Existe uma classe correspondente para responder às solicitações de eco (consulte WeaveEchoServer).

Vinculação de clientes

O WeaveEchoClient usa um objeto Binding do Weave que é usado para identificar e estabelecer comunicação com o destinatário das solicitações de echo. A Binding pode ser configurada e preparada pelo aplicativo antes da inicialização do objeto WeaveEchoClient ou pode não ser preparada. Nesse caso, o WeaveEchoClient solicitará a preparação sob demanda da vinculação. Consulte Binding::RequestPrepare() para mais detalhes.

A preparação sob demanda da Binding também será solicitada em caso de falha após o estado "Pronto".

Modo SendRepeating

O método SendRepeating() pode ser usado para colocar o WeaveEchoClient no modo SendRepeating. Nesse modo, o objeto cliente envia uma sequência repetida de mensagens EchoRequest para o par em um intervalo configurado. O modo SendRepeating pode ser cancelado chamando o método Stop().

Multicast e transmissão

Um objeto WeaveEchoClient pode ser usado para enviar EchoRequests a vários destinatários simultaneamente configurando o objeto Binding com um endereço IPv6 multicast adequado ou um endereço de transmissão de rede local IPv4 (255.255.255.255). Quando o objeto WeaveEchoClient detecta um endereço de peering de transmissão ou multicast, ele entra automaticamente no modo MultiResponse após o envio do EchoRequest.

Nesse modo, o objeto continua a ouvir e entregar todas as mensagens EchoResponse recebidas que chegam na mesma troca. O objeto permanece no modo MultiResponse até: 1) o aplicativo chamar Stop() ou Send(), 2) no modo SendRepeating, chegar a hora de enviar outra solicitação ou 3) nenhuma resposta ser recebida e o tempo limite de recebimento expirar.

Eventos da API

Durante a operação, o objeto WeaveEchoClient chamará o aplicativo para solicitar ações específicas ou enviar notificações de eventos importantes. Essas chamadas de evento de API são feitas para a função de callback configurada no objeto do cliente. Exceto quando indicado, os aplicativos podem mudar o estado do cliente durante um callback de evento. Uma exceção geral é o método Shutdown() do objeto, que nunca pode ser chamado durante um callback.

Os seguintes eventos de API são definidos:

PreparePayload

O WeaveEchoClient está prestes a formar uma mensagem EchoRequest e está solicitando que o aplicativo forneça um payload. Se um aplicativo quiser, ele pode retornar um novo PackageBuffer que contém os dados de payload. Se o aplicativo não processar este evento, um EchoRequest com um payload de tamanho zero será enviado automaticamente. O aplicativo NÃO PODE alterar o estado do WeaveEchoClient durante esse callback.

Solicitação enviada

Uma mensagem EchoRequest foi enviada para o terminal.

Resposta recebida

Uma mensagem EchoResponse foi recebida do terminal. Os argumentos do evento contêm o payload da resposta e as metainformações sobre a mensagem de resposta.

Erro de comunicação

Ocorreu um erro ao formar ou enviar uma EchoRequest ou aguardar uma resposta. Exemplos de erros que podem ocorrer durante a espera de uma resposta são os principais erros ou o encerramento inesperado de uma conexão. Os argumentos do evento contêm o motivo do erro.

Tempo limite de resposta

Um EchoResponse não foi recebido no tempo alocado. O tempo limite de resposta é controlado pela propriedade DefaultResponseTimeout no objeto Binding.

Solicitação cancelada

Uma troca de eco em andamento foi cancelada porque foi feita uma solicitação para enviar outra EchoRequest antes que uma resposta fosse recebida para a mensagem anterior. Isso pode surgir no modo SendRepeating quando chegar a hora para enviar o próximo EchoRequest. Isso também pode acontecer se o aplicativo chamar Send() depois do envio de uma EchoRequest, mas antes de qualquer resposta ser recebida.

Quando o objeto é no modo MultiResponse, o evento é suprimido se pelo menos uma mensagem EchoResponse foi recebida.

Construtores e destruidores

WeaveEchoClient(void)

Tipos públicos

EventCallback)(void *appState, EventType eventType, const InEventParam &inParam, OutEventParam &outParam) typedef
void(*
EventType{
  kEvent_PreparePayload = 1,
  kEvent_RequestSent = 2,
  kEvent_ResponseReceived = 3,
  kEvent_CommunicationError = 4,
  kEvent_ResponseTimeout = 5,
  kEvent_RequestAborted = 6,
  kEvent_DefaultCheck = 100
}
tipo enumerado
State{
  kState_NotInitialized = 0,
  kState_Idle = 1,
  kState_PreparingBinding = 2,
  kState_RequestInProgress = 3,
  kState_WaitingToSend = 4
}
tipo enumerado

Atributos públicos

AppState
void *
Um ponteiro para dados específicos do aplicativo.

Funções públicas

GetBinding(void) const
Retorna um ponteiro para o objeto Binding associado ao WeaveEchoClient.
GetEventCallback(void) const
EventCallback
Retorna um ponteiro para a função de retorno de chamada de evento da API configurada no objeto WeaveEchoClient.
GetState(void) const
Recupere o estado atual do objeto WeaveEchoClient.
Init(Binding *binding, EventCallback eventCallback, void *appState)
Inicialize um objeto WeaveEchoClient.
IsSendRrepeating() const
bool
Retorna verdadeiro se o objeto WeaveEchoClient estiver atualmente no modo de envio repetido.
RequestInProgress() const
bool
Retorna verdadeiro se uma EchoRequest foi enviada e o objeto WeaveEchoClient está aguardando uma resposta.
Send(void)
Envie uma mensagem EchoRequest ao par.
Send(PacketBuffer *payloadBuf)
Envie uma mensagem EchoRequest ao par com um payload específico.
SendRepeating(uint32_t sendIntervalMS)
Comece a enviar uma sequência repetida de mensagens EchoRequest ao par.
SetEventCallback(EventCallback eventCallback)
void
Define a função de callback de evento de API no objeto WeaveEchoClient.
Shutdown(void)
void
Encerra um objeto WeaveEchoClient inicializado anteriormente.
Stop(void)
void
Interrompe qualquer troca Echo em andamento e cancela o modo de envio repetido.

Funções estáticas públicas

DefaultEventHandler(void *appState, EventType eventType, const InEventParam & inParam, OutEventParam & outParam)
void
Gerenciador padrão de eventos da API WeaveEchoClient.

Estruturas

nl::Weave::Perfis::Echo_Next::WeaveEchoClient::InEventParam

Parâmetros de entrada para o evento da API WeaveEchoClient.

nl::Weave::Perfis::Echo_Next::WeaveEchoClient::OutEventParam

Parâmetros de saída para o evento da API WeaveEchoClient.

Tipos públicos

Callback de evento

void(* EventCallback)(void *appState, EventType eventType, const InEventParam &inParam, OutEventParam &outParam)

EventType

 EventType
Propriedades
kEvent_CommunicationError

Ocorreu um erro de comunicação ao enviar uma EchoRequest ou aguardar uma resposta.

kEvent_DefaultCheck

Usado para verificar o gerenciamento correto de eventos padrão no aplicativo.

kEvent_PreparePayload

O aplicativo é solicitado a preparar o payload para a solicitação Echo.

kEvent_RequestAborted

Uma troca de eco em andamento foi cancelada porque foi feita uma solicitação para iniciar outra troca.

kEvent_RequestSent

Uma mensagem EchoRequest foi enviada para o terminal.

kEvent_ResponseReceived

Uma mensagem EchoResponse foi recebida do terminal.

kEvent_ResponseTimeout

Um EchoResponse não foi recebido no tempo alocado.

Estado

 State
Propriedades
kState_Idle

O objeto do cliente está inativo.

kState_NotInitialized

O objeto do cliente não foi inicializado.

kState_PreparingBinding

O objeto cliente está aguardando a vinculação ficar pronta.

kState_RequestInProgress

Uma mensagem EchoRequest foi enviada e o objeto do cliente está aguardando uma resposta.

kState_WaitingToSend

SendRepeating() foi chamado e o objeto cliente está aguardando a próxima vez para enviar um EchoRequest.

Atributos públicos

Estado do aplicativo

void * AppState

Um ponteiro para dados específicos do aplicativo.

Funções públicas

GetBinding

Binding * GetBinding(
  void
) const 

Retorna um ponteiro para o objeto Binding associado ao WeaveEchoClient.

GetEventCallback

EventCallback GetEventCallback(
  void
) const 

Retorna um ponteiro para a função de retorno de chamada de evento da API configurada no objeto WeaveEchoClient.

GetState (link em inglês)

State GetState(
  void
) const 

Recupere o estado atual do objeto WeaveEchoClient.

Init

WEAVE_ERROR Init(
  Binding *binding,
  EventCallback eventCallback,
  void *appState
)

Inicialize um objeto WeaveEchoClient.

Inicialize um objeto WeaveEchoClient como forma de enviar mensagens echo para um peer.

Detalhes
Parâmetros
[in] binding
Um objeto Binding que será usado para estabelecer a comunicação com o nó de peering.
[in] eventCallback
Um ponteiro para uma função que será chamada pelo objeto WeaveEchoClient para entregar eventos de API ao aplicativo.
[in] appState
Um ponteiro para um objeto definido pelo aplicativo que será retornado ao aplicativo sempre que ocorrer um evento da API.

IsSendRrepeating

bool IsSendRrepeating() const 

Retorna verdadeiro se o objeto WeaveEchoClient estiver atualmente no modo de envio repetido.

RequestInProgress

bool RequestInProgress() const 

Retorna verdadeiro se uma EchoRequest foi enviada e o objeto WeaveEchoClient está aguardando uma resposta.

Enviar

WEAVE_ERROR Send(
  void
)

Envie uma mensagem EchoRequest ao par.

Esse método inicia o processo de envio de uma mensagem EchoRequest ao nó de peering. Se e quando uma mensagem EchoResponse correspondente for recebida, ela será entregue ao aplicativo pelo evento da API ResponseReceived.

Ao formar a mensagem EchoRequest, o WeaveEchoClient faz uma solicitação ao aplicativo, por meio do evento da API preparePayload, para preparar o payload da mensagem.

Se o objeto Binding não estiver no estado "Pronto" quando esse método for chamado, uma solicitação será feita para o método Binding::RequestPrepare() para iniciar a preparação sob demanda. A operação de envio ficará na fila até que esse processo seja concluído. A profundidade máxima dessa fila é de um. Assim, qualquer chamada para Send() enquanto houver um envio anterior na fila fará com que apenas um EchoRequest seja enviado.

Chamar Send() enquanto o WeaveEchoClient está no modo de repetição de envio (ou seja, devido a uma chamada anterior para SendRepeating()) tem o efeito de acelerar e redefinir o ciclo de envio, mas não remove o WeaveEchoClient do modo de repetição de envio.

Enviar

WEAVE_ERROR Send(
  PacketBuffer *payloadBuf
)

Envie uma mensagem EchoRequest ao par com um payload específico.

Esse método inicia o processo de envio de uma mensagem EchoRequest ao nó de peering. O conteúdo do buffer de payload fornecido será enviado ao peering como o payload da mensagem EchoRequest. Se e quando uma mensagem EchoResponse correspondente for recebida, ela será entregue ao aplicativo pelo evento da API ResponseReceived.

Ao chamar esse método, a propriedade do buffer de payload fornecido é transmitida para o objeto WeaveEchoClient, que é responsável por liberá-lo. Isso ocorre independentemente de o método ser concluído com êxito ou com um erro.

Se o objeto Binding não estiver no estado "Pronto" quando esse método for chamado, uma solicitação será feita para o método Binding::RequestPrepare() para iniciar a preparação sob demanda. A operação de envio ficará na fila até que esse processo seja concluído. A profundidade máxima dessa fila é de um. Assim, qualquer chamada para Send() enquanto houver um envio anterior na fila fará com que apenas um EchoRequest seja enviado.

Chamar Send() enquanto o WeaveEchoClient está no modo de repetição de envio (ou seja, devido a uma chamada anterior para SendRepeating()) tem o efeito de acelerar e redefinir o ciclo de envio, mas não remove o WeaveEchoClient do modo de repetição de envio.

Detalhes
Parâmetros
[in] payloadBuf
Um objeto PackageBuffer contendo dados de payload a serem enviados ao peer. A propriedade desse buffer passa para o objeto WeaveEchoClient em todos os casos.

SendRepeating (Envio repetido)

WEAVE_ERROR SendRepeating(
  uint32_t sendIntervalMS
)

Comece a enviar uma sequência repetida de mensagens EchoRequest ao par.

Esse método inicia um processo repetido de envio de mensagens EchoRequest ao par. À medida que as mensagens EchoResponse são recebidas do peering, elas são entregues ao aplicativo pelo evento da API ResponseReceived.

Quando SendRepeating() é chamado, o WeaveEchoClient entra no modo enviar-repetição até que Stop() seja chamado ou ocorra um erro Binding. Chamar SendRepeating() várias vezes tem o efeito de redefinir o ciclo de envio e atualizar o intervalo.

O envio inicial de uma sequência ocorre no momento em que SendRepeating() é chamado ou sempre que a Binding fica pronta depois que SendRepeating() é chamado (veja abaixo). Os próximos envios ocorrem posteriormente no intervalo especificado.

Toda vez que ocorre um envio, o WeaveEchoClient faz uma solicitação ao aplicativo, por meio do evento da API preparePayload, para preparar o payload da mensagem.

Se o objeto Binding não estiver no estado "Pronto" para enviar uma mensagem, uma solicitação será feita no método Binding::RequestPrepare() para iniciar a preparação sob demanda. Outras mensagens repetidas serão pausadas até que o processo seja concluído. Uma falha durante a preparação Binding sob demanda fará com que o WeaveEchoClient saia do modo de repetição repetida.

SetEventCallback

void SetEventCallback(
  EventCallback eventCallback
)

Define a função de callback de evento de API no objeto WeaveEchoClient.

Encerramento

void Shutdown(
  void
)

Encerra um objeto WeaveEchoClient inicializado anteriormente.

Esse método só poderá ser chamado se o método Init() tiver sido chamado anteriormente.

Parar

void Stop(
  void
)

Interrompe qualquer troca Echo em andamento e cancela o modo de envio repetido.

WeaveEchoClient

 WeaveEchoClient(
  void
)

Funções estáticas públicas

Gerenciador de eventos padrão

void DefaultEventHandler(
  void *appState,
  EventType eventType,
  const InEventParam & inParam,
  OutEventParam & outParam
)

Gerenciador padrão de eventos da API WeaveEchoClient.

Os aplicativos precisam chamar esse método para quaisquer eventos de API que não reconheçam ou manipulem. Os parâmetros fornecidos precisam ser os mesmos transmitidos pelo objeto cliente para a função de manipulador de eventos do aplicativo.

Detalhes
Parâmetros
[in] appState
Um ponteiro para informações de estado definidas pelo aplicativo associadas ao objeto cliente.
[in] eventType
Código do evento transmitido pelo callback do evento
[in] inParam
Referência de parâmetros de eventos de entrada transmitidos pelo callback do evento
[in] outParam
Referência de parâmetros de eventos de saída transmitidos pelo callback do evento