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
O WeaveEchoClient classe implementa lado o iniciador de tecer o protocolo de eco. 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 o WeaveEchoClient classe para enviar one-off ou repetindo mensagens EchoRequest a um peer nó identificado por um Binding objeto. Existe uma classe correspondente para responder a pedidos de eco (ver WeaveEchoServer ).
cliente Encadernação
O WeaveEchoClient leva um Weave Binding objeto que é usado para identificar e estabelecer comunicação com o destinatário dos pedidos de eco. A encadernação pode ser configurado e preparado pela aplicação antes da inicialização da WeaveEchoClient objeto, ou pode ser deixado sem preparação, no caso em que o WeaveEchoClient vai solicitar preparação on-demand da ligação (ver Binding :: RequestPrepare () para detalhes )
On-demand preparação da ligação também será solicitado deve falhar após ter entrado no estado Pronto.
Modo SendRepeating
O SendRepeating () método pode ser usado para colocar o WeaveEchoClient em modo SendRepeating. Neste modo, o objeto cliente envia uma sequência repetitiva de mensagens EchoRequest para o par em um intervalo configurado. Modo SendRepeating pode ser cancelada chamando o Stop () método.
Multicast e Broadcast
A WeaveEchoClient objeto pode ser usado para enviar EchoRequests para vários destinatários simultaneamente, configurando o Binding objeto com um endereço de multicast IPv6 apropriado ou IPv4 endereço de broadcast local (255.255.255.255). Quando o WeaveEchoClient objeto detecta um endereço de multicast ou difusão de pares, ele entra automaticamente no modo multirrespostas mediante envio do 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 multirrespostas até: 1) o aplicativo chama Stop () ou Enviar () , 2) no modo SendRepeating, chega a hora de enviar outro pedido, ou 3) nenhuma resposta for recebida ea receber tempo limite expirar.
Eventos API
Durante o curso de sua operação, o WeaveEchoClient objeto irá chamar-se à aplicação de medidas específicas de solicitação 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 excepção é o total do objecto de desligamento () método, que nunca pode ser chamada durante uma chamada de retorno.
Os seguintes eventos de API são definidos:
PreparePayload
O WeaveEchoClient está prestes a formar uma mensagem de EchoRequest e está solicitando o aplicativo para fornecer 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 pode não alterar o estado do WeaveEchoClient durante este retorno.
RequestSent
Uma mensagem EchoRequest foi enviada ao par.
ResponseReceived
Uma mensagem EchoResponse foi recebida do par. Os argumentos para o 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 é controlada pela propriedade DefaultResponseTimeout sobre o Binding objeto.
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 chama Enviar () depois de uma EchoRequest foi enviado, mas antes de qualquer resposta é 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 Binding objeto associado com o WeaveEchoClient . |
GetEventCallback (void) const | EventCallback Retorna um ponteiro para a função de evento de retorno de chamada API atualmente configurado no WeaveEchoClient objeto. |
GetState (void) const | Recuperar o estado atual da WeaveEchoClient objeto. |
Init ( Binding *binding, EventCallback eventCallback, void *appState) | Inicializar um WeaveEchoClient objeto. |
IsSendRrepeating () const | bool Retorna verdadeiro se o WeaveEchoClient objeto está atualmente em modo de repetição de envio. |
RequestInProgress () const | bool Retorna true se um EchoRequest foi enviada eo WeaveEchoClient objeto está aguardando uma resposta. |
Send (void) | Envie uma mensagem EchoRequest para o 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 eventos API na WeaveEchoClient objeto. |
Shutdown (void) | void Desligamento anteriormente inicializado um WeaveEchoClient objecto. |
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 WeaveEchoClient eventos API. |
Structs | |
---|---|
nl :: Weave :: Profiles :: Echo_Next :: WeaveEchoClient :: InEventParam | Parâmetros de entrada para WeaveEchoClient evento API. |
nl :: Weave :: Profiles :: Echo_Next :: WeaveEchoClient :: OutEventParam | Parâmetros de saída para WeaveEchoClient evento API. |
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á esperando para a próxima vez para enviar uma 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 Binding objeto associado com o WeaveEchoClient .
GetEventCallback
EventCallback GetEventCallback( void ) const
Retorna um ponteiro para a função de evento de retorno de chamada API atualmente configurado no WeaveEchoClient objeto.
Iniciar
WEAVE_ERROR Init( Binding *binding, EventCallback eventCallback, void *appState )
Inicializar um WeaveEchoClient objeto.
Inicializar um WeaveEchoClient objeto em preparação para o envio de mensagens de eco a um dos pares.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
|
IsSendRrepeating
bool IsSendRrepeating() const
Retorna verdadeiro se o WeaveEchoClient objeto está atualmente em modo de repetição de envio.
RequestInProgress
bool RequestInProgress() const
Retorna true se um EchoRequest foi enviada eo WeaveEchoClient objeto está aguardando uma resposta.
Mandar
WEAVE_ERROR Send( void )
Envie uma mensagem EchoRequest ao 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 para a aplicação, via o evento API PreparePayload, para preparar a carga útil da mensagem.
Se o Binding objeto não está no estado Pronto quando este método é chamado, um pedido será feita a ligação :: RequestPrepare () método para iniciar a preparação on-demand. A operação de envio será enfileirada até que o processo seja concluído. A profundidade máxima dessa fila é um. Assim, qualquer chamada para Enviar () enquanto houver um envio anterior na fila irá resultar em apenas uma sendo enviado única EchoRequest.
Chamando Enviar () enquanto o WeaveEchoClient está no modo de repetição de envio (ou seja, por causa de uma chamada anterior a SendRepeating () ) tem o efeito de acelerar e redefinir o ciclo de envio, mas não leva a WeaveEchoClient fora do modo de repetição de envio.
Mandar
WEAVE_ERROR Send( PacketBuffer *payloadBuf )
Envie uma mensagem EchoRequest ao par com uma carga 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.
No ligando este método, a propriedade do tampão de carga fornecido passa para o WeaveEchoClient objecto, que tem a responsabilidade do libertar. Isso é verdadeiro independentemente de o método ser concluído com êxito ou com erro.
Se o Binding objeto não está no estado Pronto quando este método é chamado, um pedido será feita a ligação :: RequestPrepare () método para iniciar a preparação on-demand. A operação de envio será então enfileirada até que o processo seja concluído. A profundidade máxima dessa fila é um. Assim, qualquer chamada para Enviar () enquanto houver um envio anterior na fila irá resultar em apenas uma sendo enviado única EchoRequest.
Chamando Enviar () enquanto o WeaveEchoClient está no modo de repetição de envio (ou seja, por causa de uma chamada anterior a SendRepeating () ) tem o efeito de acelerar e redefinir o ciclo de envio, mas não leva a WeaveEchoClient fora do modo de repetição de envio.
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 modo de repetição de envio em que ele permanece até Stop () é chamado ou um Binding erro ocorre. Chamando SendRepeating () várias vezes tem o efeito de redefinir o ciclo de envio e atualização do intervalo.
O envio inicial de uma sequência ocorre no tempo SendRepeating () é chamado, ou sempre que a encadernação se torne pronto depois SendRepeating () é chamada (ver abaixo). Os envios subsequentes ocorrem depois disso no intervalo especificado.
Cada vez que um envio ocorre, o WeaveEchoClient faz uma solicitação para a aplicação, via o evento API PreparePayload, para preparar a carga útil da mensagem.
Se o Binding objeto não está no estado Pronto quando chega a hora de enviar uma mensagem, uma solicitação será feita ao Binding :: RequestPrepare () método para iniciar a preparação on-demand. Outros envios repetidos de mensagens serão pausados até que o processo seja concluído. Uma falha durante on demand Binding preparação fará com que o WeaveEchoClient para sair do modo de repetição de envio.
SetEventCallback
void SetEventCallback( EventCallback eventCallback )
Define a função de retorno de eventos API na WeaveEchoClient objeto.
Desligar
void Shutdown( void )
Desligamento anteriormente inicializado um WeaveEchoClient objecto.
Note que este método só pode ser chamado se o Init () método tem 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 WeaveEchoClient eventos API.
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 |
|