nl:: Weave:: Profiles:: ServiceDirectory:: WeaveServiceManager
#include <src/lib/profiles/service-directory/ServiceDirectory.h>
O objeto gerenciador do diretório de serviços do Weave.
Resumo
O gerenciador de serviços do Weave é a interface principal de aplicativos para o serviço de diretório. Dessa forma, ele oculta as complicações inerentes à busca da entrada de diretório associada a um endpoint de serviço, fazendo a pesquisa DNS em um ou mais dos nomes de host encontrados lá, tentando se conectar, protegendo a conexão e assim por diante. Ele também pode gerenciar um cache de informações do diretório de serviços.
Construtores e destruidores |
|
---|---|
WeaveServiceManager(void)
Esse método inicializa a instância WeaveServiceManager.
|
|
~WeaveServiceManager(void)
Este método destrói a instância WeaveServiceManager.
|
Tipos públicos |
|
---|---|
@303{
|
enum |
OnConnectBegin)(struct ServiceConnectBeginArgs &args)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnConnectBeginvoid(*
Um callback do aplicativo feito imediatamente antes do estabelecimento da conexão. |
OnServiceEndpointQueryBegin)(void)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryBeginvoid(*
Um callback de aplicativo para marcar o horário de uma consulta de saída do diretório de serviços. |
OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryEndWithTimeInfovoid(*
Um callback de aplicativo para entregar valores de tempo de uma resposta do diretório de serviços. |
RootDirectoryAccessor)(uint8_t *aDirectory, uint16_t aLength)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::RootDirectoryAccessor Uma função de acesso para as informações do diretório raiz. |
StatusHandler)(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::StatusHandlervoid(*
Um gerenciador para condições de erro e status. |
Funções públicas |
|
---|---|
SetConnectBeginCallback(OnConnectBegin aConnectBegin)
|
void
Define uma função de callback a ser chamada imediatamente antes do estabelecimento da conexão.
|
cancel(uint64_t aServiceEp, void *aAppState)
|
void
Esse método cancela uma solicitação de conexão.
|
clearCache(void)
|
void
Esse método limpará o estado e o cache do gerenciador se ele estiver no estado terminal kServiceMgrState_Resolved, o que significa que a resposta do endpoint do Diretório de serviços foi recebida.
|
connect(uint64_t aServiceEp, WeaveAuthMode aAuthMode, void *aAppState, StatusHandler aStatusHandler, WeaveConnection::ConnectionCompleteFunct aConnectionCompleteHandler, const uint32_t aConnectTimeoutMsecs, const InterfaceId aConnectIntf)
|
As solicitações desse método se conectam a um serviço do Weave.
|
init(WeaveExchangeManager *aExchangeMgr, uint8_t *aCache, uint16_t aCacheLen, RootDirectoryAccessor aAccessor, WeaveAuthMode aDirAuthMode, OnServiceEndpointQueryBegin aServiceEndpointQueryBegin, OnServiceEndpointQueryEndWithTimeInfo aServiceEndpointQueryEndWithTimeInfo, OnConnectBegin aConnectBegin)
|
Esse método inicializa o objeto do gerenciador de serviços.
|
lookup(uint64_t aServiceEp, HostPortList *outHostPortList)
|
Esse método procura informações de diretório para um endpoint de serviço.
|
lookup(uint64_t aServiceEp, uint8_t *aControlByte, uint8_t **aDirectoryEntry)
|
Esse método procura informações de diretório para um endpoint de serviço.
|
onConnectionClosed(WEAVE_ERROR aError)
|
void
Esse método lida com o evento de conexão fechado informado pelo contexto de troca do Weave associado.
|
onConnectionComplete(WEAVE_ERROR aError)
|
void
Esse método lida com o evento de conexão concluída para a transação de consulta do endpoint de serviço.
|
onResponseReceived(uint32_t aProfileId, uint8_t aMsgType, PacketBuffer *aMsg)
|
void
Esse método lida com qualquer mensagem de resposta na conversa com o serviço de diretório.
|
onResponseTimeout(void)
|
void
Esse método lida com o evento de tempo limite, em que nenhuma resposta foi recebida do serviço de diretório.
|
relocate(WEAVE_ERROR aError)
|
void
Esse método realoca o cache do diretório de serviços.
|
relocate(void)
|
void
Esse método realoca o cache do diretório de serviços.
|
replaceOrAddCacheEntry(uint16_t port, const char *hostName, uint8_t hostLen, uint64_t serviceEndpointId)
|
Adicione a entrada de diretório de substituição de um nome de host e ID de porta no início da lista de diretórios.
|
reset(WEAVE_ERROR aError)
|
void
Esse método redefine o gerenciador de serviços para o estado inicial.
|
reset(void)
|
void
Esse método redefine o gerenciador de serviços para o estado inicial.
|
unresolve(WEAVE_ERROR aError)
|
void
Esse método invalida o cache do diretório de serviços.
|
unresolve(void)
|
void
Esse método invalida o cache do diretório de serviços.
|
Classes |
|
---|---|
nl:: |
Esta classe representa uma única transação gerenciada pelo gerenciador de serviços. |
Tipos públicos
@303
@303
Propriedades | |
---|---|
kWeave_DefaultSendTimeout
|
Número de milissegundos que uma resposta precisa ser recebida para a consulta do diretório antes que o contexto de troca expire. |
OnConnectBegin
void(* OnConnectBegin)(struct ServiceConnectBeginArgs &args)
Um callback do aplicativo feito imediatamente antes do estabelecimento da conexão.
Esse retorno de chamada pode ser usado por aplicativos para observar e, opcionalmente, alterar os argumentos passados para #WeaveConnection::Connect() durante o estabelecimento de uma conexão de serviço. Esse callback será chamado para a conexão com o endpoint do serviço de destino e para a conexão com o endpoint do Diretório de serviços caso seja necessário realizar uma pesquisa de diretório.
OnServiceEndpointQueryBegin
void(* OnServiceEndpointQueryBegin)(void)
Um callback de aplicativo para marcar o horário de uma consulta de saída do diretório de serviços.
Ele é chamado quando estamos prestes a enviar uma solicitação de consulta de endpoint de serviço. É usado para corresponder a OnServiceEndpointQueryEnd para compensar o tempo de voo da mensagem.
OnServiceEndpointQueryEndWithTimeInfo
void(* OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec)
Um callback de aplicativo para entregar valores de tempo de uma resposta do diretório de serviços.
É chamado quando recebemos informações de tempo da resposta de consulta do diretório de serviços. Esse callback só acontecerá se uma resposta for analisada e as informações de tempo forem incluídas
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
RootDirectoryAccessor
WEAVE_ERROR(* RootDirectoryAccessor)(uint8_t *aDirectory, uint16_t aLength)
Uma função de acesso para as informações do diretório raiz.
Você precisa começar em algum lugar e, com o diretório de serviços, precisa começar com um diretório de stub com o endereço de um servidor, que pode ser acessado para acessar todo o restante. Como a disposição e a procedência dessas informações provavelmente variam de acordo com o dispositivo, fornecemos um callback de acessador aqui.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
||||
Retornos |
WEAVE_NO_ERROR em caso de sucesso. Caso contrário, o processo de carregamento seria cancelado.
|
StatusHandler
void(* StatusHandler)(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport)
Um gerenciador para condições de erro e status.
Um usuário do gerenciador de serviços pode ser informado sobre problemas ao tentar executar uma solicitação de conexão de uma das duas maneiras. Ele pode receber um relatório de status do serviço ou pode receber um WEAVE_ERROR gerado internamente. Em ambos os casos, as informações vêm por meio desse callback.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
|
Funções públicas
SetConnectBeginCallback
void SetConnectBeginCallback( OnConnectBegin aConnectBegin )
Define uma função de callback a ser chamada imediatamente antes do estabelecimento da conexão.
Detalhes | |||
---|---|---|---|
Parâmetros |
|
WeaveServiceManager
WeaveServiceManager( void )
Esse método inicializa a instância WeaveServiceManager.
init() precisa ser chamado para inicializar essa instância.
cancelar
void cancel( uint64_t aServiceEp, void *aAppState )
Esse método cancela uma solicitação de conexão.
Esse método cancela uma solicitação de conexão considerando o ID do endpoint do serviço e o objeto de estado do aplicativo transmitido no momento da solicitação como identificadores. Se for a última solicitação de conexão, esse método também vai limpar qualquer estado de conexão do diretório de serviços pendente.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
clearCache
void clearCache( void )
Esse método limpará o estado e o cache do gerenciador se ele estiver no estado terminal kServiceMgrState_Resolved, o que significa que a resposta do endpoint do Diretório de serviços foi recebida.
conectar
WEAVE_ERROR connect( uint64_t aServiceEp, WeaveAuthMode aAuthMode, void *aAppState, StatusHandler aStatusHandler, WeaveConnection::ConnectionCompleteFunct aConnectionCompleteHandler, const uint32_t aConnectTimeoutMsecs, const InterfaceId aConnectIntf )
As solicitações desse método se conectam a um serviço do Weave.
Esta é a chamada de conexão de nível superior. Essencialmente, ele produz uma conexão segura com o serviço Weave de acordo com um endpoint de serviço e um modo de autenticação ou dados de tentativas.
Esse método só pode ser chamado após uma chamada bem-sucedida para init(), e uma solicitação de conexão pode ser potencialmente cancelada por cancel().
Esse método pode ser chamado antes que o cache local seja preenchido com dados provisionados por padrão ou uma viagem ao serviço de diretório. O Service Manager só colocaria a solicitação em fila antes de determinar o conteúdo do cache.
Detalhes | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||||||||||
Retornos |
WEAVE_NO_ERROR em caso de sucesso; caso contrário, um respectivo código de erro.
|
init
WEAVE_ERROR init( WeaveExchangeManager *aExchangeMgr, uint8_t *aCache, uint16_t aCacheLen, RootDirectoryAccessor aAccessor, WeaveAuthMode aDirAuthMode, OnServiceEndpointQueryBegin aServiceEndpointQueryBegin, OnServiceEndpointQueryEndWithTimeInfo aServiceEndpointQueryEndWithTimeInfo, OnConnectBegin aConnectBegin )
Esse método inicializa o objeto do gerenciador de serviços.
Para ser usado, é necessário inicializar um objeto do gerenciador de serviços. Após uma chamada bem-sucedida para esse método, os clientes podem começar a chamar connect(), lookup() e outros métodos.
Detalhes | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||||||||||||
Retornos |
WEAVE_ERROR_INVALID_ARGUMENT se o argumento de uma função for inválido. caso contrário, WEAVE_NO_ERROR.
|
lookup
WEAVE_ERROR lookup( uint64_t aServiceEp, HostPortList *outHostPortList )
Esse método procura informações de diretório para um endpoint de serviço.
Se o diretório de serviços tiver sido resolvido, ou seja, se houver uma operação connect() bem-sucedida, esse método preencherá o objeto HostPortList fornecido.
Observação: a HostPortList está vinculada ao objeto WeaveServiceManager. ele permanece válido até que o cache do diretório de serviços seja apagado ou até que outra pesquisa do diretório de serviços ocorra.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||
Valores de retorno |
|
lookup
WEAVE_ERROR lookup( uint64_t aServiceEp, uint8_t *aControlByte, uint8_t **aDirectoryEntry )
Esse método procura informações de diretório para um endpoint de serviço.
Se o diretório de serviços tiver sido resolvido, ou seja, se houver uma operação connect() bem-sucedida, esse método retornará uma entrada de diretório considerando um identificador de endpoint de serviço.
Esse método expõe os detalhes da implementação interna do diretório de serviços. As implementações devem favorecer o uso da variante desse método que gera a HostPortList.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||
Valores de retorno |
|
onConnectionClosed
void onConnectionClosed( WEAVE_ERROR aError )
Esse método lida com o evento de conexão fechado informado pelo contexto de troca do Weave associado.
Detalhes | |||
---|---|---|---|
Parâmetros |
|
onConnectionComplete
void onConnectionComplete( WEAVE_ERROR aError )
Esse método lida com o evento de conexão concluída para a transação de consulta do endpoint de serviço.
Há algumas possibilidades. Primeiro, a conexão pode ter falhado. Nesse caso, terminamos. Caso contrário, a conexão estará completa e queremos abrir um contexto de troca e enviar uma consulta de diretório.
Detalhes | |||
---|---|---|---|
Parâmetros |
|
onResponseReceived
void onResponseReceived( uint32_t aProfileId, uint8_t aMsgType, PacketBuffer *aMsg )
Esse método lida com qualquer mensagem de resposta na conversa com o serviço de diretório.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
|
onResponseTimeout
void onResponseTimeout( void )
Esse método lida com o evento de tempo limite, em que nenhuma resposta foi recebida do serviço de diretório.
se mudar
void relocate( WEAVE_ERROR aError )
Esse método realoca o cache do diretório de serviços.
Quando um endpoint de serviço retorna um relatório de status com o código de status kStatus_Relocations, o aplicativo pode chamar unresolve() para limpar o cache e cancelar solicitações de conexão. Esse método simplifica o tratamento de erros chamando unresolve() na primeira vez e reset() quando o problema ainda não foi resolvido.
Esta versão do método, usada para compatibilidade com versões anteriores, usa e registra um erro e chama relocate(void) .
Detalhes | |||
---|---|---|---|
Parâmetros |
|
relocate(void)
se mudar
void relocate( void )
Esse método realoca o cache do diretório de serviços.
Quando um endpoint de serviço retorna um relatório de status com o código de status kStatus_Relocations, o aplicativo pode chamar unresolve() para limpar o cache e cancelar solicitações de conexão. Esse método simplifica o tratamento de erros chamando unresolve() na primeira vez e reset() quando o problema ainda não foi resolvido.
Confira também:relocate(WEAVE_ERROR)
replaceOrAddCacheEntry
WEAVE_ERROR replaceOrAddCacheEntry( uint16_t port, const char *hostName, uint8_t hostLen, uint64_t serviceEndpointId )
Adicione a entrada de diretório de substituição de um nome de host e ID de porta no início da lista de diretórios.
redefinir
void reset( WEAVE_ERROR aError )
Esse método redefine o gerenciador de serviços para o estado inicial.
Este método redefine todos os estados do gerenciador de serviços, incluindo o estado das comunicações, o estado do cache e o estado de quaisquer solicitações de conexão pendentes.
Esta versão do método usada para compatibilidade com versões anteriores recebe e registra um erro e, em seguida, chama reset(void) .
Detalhes | |||
---|---|---|---|
Parâmetros |
|
reset(void)
redefinir
void reset( void )
Esse método redefine o gerenciador de serviços para o estado inicial.
Este método redefine todos os estados do gerenciador de serviços, incluindo o estado das comunicações, o estado do cache e o estado de quaisquer solicitações de conexão pendentes.
Confira também:redefinir(WEAVE_ERROR)
não resolvido
void unresolve( WEAVE_ERROR aError )
Esse método invalida o cache do diretório de serviços.
Esse método define o estado do cache do diretório de serviços para que, na próxima solicitação, o gerenciador de serviços emita uma consulta do diretório de serviços.
Esta versão do método, usada para compatibilidade com versões anteriores, usa e registra um erro e chama unresolve(void) .
Detalhes | |||
---|---|---|---|
Parâmetros |
|
unresolve(void)
não resolvido
void unresolve( void )
Esse método invalida o cache do diretório de serviços.
Esse método define o estado do cache do diretório de serviços para que, na próxima solicitação, o gerenciador de serviços emita uma consulta do diretório de serviços.
Confira também:unresolve(WEAVE_ERROR)
~WeaveServiceManager
~WeaveServiceManager( void )
Este método destrói a instância WeaveServiceManager.