nl :: Tecer:: 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 Weave Echo pode ser usado para testar a vivacidade e acessibilidade de um nó Weave.
Os aplicativos podem usar a classe WeaveEchoClient para enviar mensagens EchoRequest únicas ou repetidas a um nó de mesmo nível identificado por um objeto Binding . Existe uma classe correspondente para responder às solicitações de eco (consulte WeaveEchoServer ).
Client Binding
O WeaveEchoClient pega um objeto Weave Binding que é usado para identificar e estabelecer comunicação com o destinatário pretendido das solicitações de eco. O Binding pode ser configurado e preparado pelo aplicativo antes da inicialização do objeto WeaveEchoClient , ou pode ser deixado despreparado, caso em que o WeaveEchoClient irá solicitar a preparação sob demanda do binding (veja Binding :: RequestPrepare () para detalhes )
A preparação sob demanda da Encadernação também será solicitada caso ela falhe após ter entrado no estado Pronto.
Modo SendRepeating
O método SendRepeating () pode ser usado para colocar o WeaveEchoClient no modo SendRepeating. Neste modo, o objeto cliente envia uma sequência repetitiva de mensagens EchoRequest para o par em um intervalo configurado. O modo SendRepeating pode ser cancelado chamando o método Stop () .
Multicast e Broadcast
Um objeto WeaveEchoClient pode ser usado para enviar EchoRequests para vários destinatários simultaneamente, configurando o objeto Binding com um endereço multicast IPv6 apropriado ou endereço de difusão de rede local IPv4 (255.255.255.255). Quando o objeto WeaveEchoClient detecta um endereço de peer multicast ou broadcast, ele entra automaticamente no modo MultiResponse ao enviar o EchoRequest.
Neste modo, o objeto continua a escutar e entregar todas as mensagens EchoResponse de entrada que chegam na mesma central. 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 API
Durante o curso de sua operação, o objeto WeaveEchoClient chamará o aplicativo para solicitar ações específicas ou entregar notificações de eventos importantes. Essas chamadas de eventos de API são feitas para a função de retorno de chamada atualmente configurada no objeto cliente. Exceto onde indicado, os aplicativos são livres para alterar o estado do cliente durante um retorno de chamada de evento. Uma exceção geral é o método Shutdown () do objeto, que nunca pode ser chamado durante um retorno de chamada.
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 uma carga útil. Se um aplicativo desejar, ele pode retornar um novo PacketBuffer contendo os dados de carga útil. Se o aplicativo não manipular esse evento, um EchoRequest com uma carga útil de comprimento zero será enviado automaticamente. O aplicativo NÃO PODE alterar o estado do WeaveEchoClient durante esse retorno de chamada.
RequestSent
Uma mensagem EchoRequest foi enviada ao par.
ResponseReceived
Uma mensagem EchoResponse foi recebida do par. Os argumentos do evento contêm a carga útil da resposta e meta-informações sobre a mensagem de resposta.
Erro de comunicação
Ocorreu um erro ao formar ou enviar um EchoRequest ou ao aguardar uma resposta. Exemplos de erros que podem ocorrer durante a espera por uma resposta são erros de chave ou fechamento inesperado de uma conexão. Os argumentos do evento contêm o motivo do erro.
ResponseTimeout
Um EchoResponse não foi recebido no tempo alocado. O tempo limite de resposta é controlado pela propriedade DefaultResponseTimeout no objeto Binding .
RequestAborted
Uma troca de eco em andamento foi abortada porque uma solicitação foi feita para enviar outro EchoRequest antes que uma resposta fosse recebida para a mensagem anterior. Isso pode surgir no modo SendRepeating quando chega a hora de enviar o próximo EchoRequest. Isso também pode acontecer se o aplicativo chamar Send () depois que um EchoRequest tiver sido enviado, mas antes que qualquer resposta seja recebida.
Quando o objeto está no modo MultiResponse, o evento é suprimido se pelo menos uma mensagem EchoResponse for recebida.
Construtores e Destruidores | |
---|---|
WeaveEchoClient (void) |
Tipos públicos | |
---|---|
EventCallback )(void *appState, EventType eventType, const InEventParam &inParam, OutEventParam &outParam) | typedefvoid(* |
EventType { | enum |
State { | enum |
Atributos públicos | |
---|---|
AppState | void * Um ponteiro para dados específicos do aplicativo. |
Funções públicas | |
---|---|
GetBinding (void) const | Binding * 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 do evento API atualmente 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 no modo de repetição de envio. |
RequestInProgress () const | bool Retorna verdadeiro se um EchoRequest foi enviado 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 uma carga útil específica. |
SendRepeating (uint32_t sendIntervalMS) | Inicie o envio de uma sequência repetitiva de mensagens EchoRequest para o par. |
SetEventCallback (EventCallback eventCallback) | void Define a função de retorno de chamada do evento API no objeto WeaveEchoClient . |
Shutdown (void) | void Desligue um objeto WeaveEchoClient inicializado anteriormente. |
Stop (void) | void Interrompe qualquer troca de eco em andamento e cancela o modo de repetição de envio. |
Funções estáticas públicas | |
---|---|
DefaultEventHandler (void *appState, EventType eventType, const InEventParam & inParam, OutEventParam & outParam) | void Manipulador padrão para eventos da API WeaveEchoClient . |
Structs | |
---|---|
nl :: Weave :: Profiles :: Echo_Next :: WeaveEchoClient :: InEventParam | Parâmetros de entrada para o evento da API WeaveEchoClient . |
nl :: Weave :: Profiles :: Echo_Next :: WeaveEchoClient :: OutEventParam | Parâmetros de saída para o evento da API WeaveEchoClient . |
Tipos públicos
EventCallback
void(* EventCallback)(void *appState, EventType eventType, const InEventParam &inParam, OutEventParam &outParam)
Tipo de evento
EventType
Estado
State
Propriedades | |
---|---|
kState_Idle | O objeto cliente está ocioso. |
kState_NotInitialized | O objeto cliente não foi inicializado. |
kState_PreparingBinding | O objeto cliente está esperando que a ligação fique pronta. |
kState_RequestInProgress | Uma mensagem EchoRequest foi enviada e o objeto 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
AppState
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 do evento API atualmente configurada no objeto WeaveEchoClient .
Iniciar
WEAVE_ERROR Init( Binding *binding, EventCallback eventCallback, void *appState )
Inicialize um objeto WeaveEchoClient .
Inicialize um objeto WeaveEchoClient em preparação para enviar mensagens de eco a um par.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
|
IsSendRrepeating
bool IsSendRrepeating() const
Retorna verdadeiro se o objeto WeaveEchoClient estiver no modo de repetição de envio.
RequestInProgress
bool RequestInProgress() const
Retorna verdadeiro se um EchoRequest foi enviado e o objeto WeaveEchoClient está aguardando uma resposta.
Mandar
WEAVE_ERROR Send( void )
Envie uma mensagem EchoRequest para o par.
Este método inicia o processo de envio de uma mensagem EchoRequest para o nó do par. Se e quando uma mensagem EchoResponse correspondente for recebida, ela será entregue ao aplicativo por meio do evento de API ResponseReceived.
Ao formar a mensagem EchoRequest, o WeaveEchoClient faz uma solicitação ao aplicativo, por meio do evento PreparePayload API, para preparar o payload da mensagem.
Se o objeto Binding não estiver no estado Pronto quando este método for chamado, uma solicitação será feita ao método Binding :: RequestPrepare () para iniciar a preparação sob demanda. A operação de envio será então enfileirada até que o processo seja concluído. A profundidade máxima dessa fila é um. Portanto, qualquer chamada para Send () enquanto houver um envio anterior na fila resultará no envio de apenas um único EchoRequest.
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 tira o WeaveEchoClient do modo de repetição de envio.
Mandar
WEAVE_ERROR Send( PacketBuffer *payloadBuf )
Envie uma mensagem EchoRequest ao par com uma carga útil específica.
Este método inicia o processo de envio de uma mensagem EchoRequest para o nó do par. O conteúdo do buffer de carga útil fornecido será enviado ao par como a carga útil da mensagem EchoRequest. Se e quando uma mensagem EchoResponse correspondente for recebida, ela será entregue ao aplicativo por meio do evento de API ResponseReceived.
Ao chamar esse método, a propriedade do buffer de carga útil fornecida passa para o objeto WeaveEchoClient , que tem a responsabilidade de liberá -lo. Isso é verdadeiro independentemente de o método ser concluído com êxito ou com erro.
Se o objeto Binding não estiver no estado Pronto quando este método for chamado, uma solicitação será feita ao método Binding :: RequestPrepare () para iniciar a preparação sob demanda. A operação de envio será então enfileirada até que o processo seja concluído. A profundidade máxima dessa fila é um. Portanto, qualquer chamada para Send () enquanto houver um envio anterior na fila resultará no envio de apenas um único EchoRequest.
Chamar Send () enquanto o WeaveEchoClient está no modo de envio de repetição (ou seja, por causa de uma chamada anterior para SendRepeating () ) tem o efeito de acelerar e redefinir o ciclo de envio, mas não tira o WeaveEchoClient do modo de envio de repetição.
Detalhes | |||
---|---|---|---|
Parâmetros |
|
SendRepeating
WEAVE_ERROR SendRepeating( uint32_t sendIntervalMS )
Inicie o envio de uma sequência repetitiva de mensagens EchoRequest para o par.
Este método inicia um processo de repetição de envio de mensagens EchoRequest para o par. Conforme as mensagens do EchoResponse são recebidas do par, elas são entregues ao aplicativo por meio do evento da API ResponseReceived.
Quando SendRepeating () é chamado, o WeaveEchoClient entra no modo de repetição de envio, no qual permanece até que Stop () seja chamado ou ocorra um erro de vinculação . 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 o Binding fica pronto depois que SendRepeating () é chamado (veja abaixo). Os envios subsequentes ocorrem depois disso no intervalo especificado.
Cada vez que ocorre um envio, o WeaveEchoClient faz uma solicitação ao aplicativo, por meio do evento PreparePayload API, para preparar o payload da mensagem.
Se o objeto Binding não estiver no estado Pronto quando chegar a hora de enviar uma mensagem, uma solicitação será feita ao método Binding :: RequestPrepare () para iniciar a preparação sob demanda. Outros envios repetidos de mensagens serão pausados até que o processo seja concluído. Uma falha durante a preparação de vinculação sob demanda fará com que o WeaveEchoClient saia do modo de repetição de envio.
SetEventCallback
void SetEventCallback( EventCallback eventCallback )
Define a função de retorno de chamada do evento API no objeto WeaveEchoClient .
Desligar
void Shutdown( void )
Desligue um objeto WeaveEchoClient inicializado anteriormente.
Observe que esse método só pode ser chamado se o método Init () tiver sido chamado anteriormente.
Pare
void Stop( void )
Interrompe qualquer troca de eco em andamento e cancela o modo de repetição de envio.
WeaveEchoClient
WeaveEchoClient( void )
Funções estáticas públicas
DefaultEventHandler
void DefaultEventHandler( void *appState, EventType eventType, const InEventParam & inParam, OutEventParam & outParam )
Manipulador padrão para eventos da API WeaveEchoClient .
Os aplicativos são obrigados a chamar esse método para quaisquer eventos de API que eles não reconhecem ou manipulam. Os parâmetros fornecidos devem ser iguais aos passados pelo objeto cliente para a função de manipulador de eventos do aplicativo.
Detalhes | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parâmetros |
|