nl:: Weave:: Perfis:: 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. Assim, ele oculta as complicações inerentes à pesquisa da entrada de diretório associada a um endpoint de serviço, à pesquisa de DNS em um ou mais dos nomes de host encontrados, a tentativa de conexão, a proteção da 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)
Esse método destrói a instância WeaveServiceManager.
|
Tipos públicos |
|
---|---|
@303{
|
tipo enumerado |
OnConnectBegin)(struct ServiceConnectBeginArgs &args)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnConnectBeginvoid(*
Um callback de 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 enviar 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 de condições de erro e status. |
Funções públicas |
|
---|---|
SetConnectBeginCallback(OnConnectBegin aConnectBegin)
|
void
Defina uma função de retorno de chamada 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 limpa o estado e o cache do gerenciador se o estado estiver no estado 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)
|
Essas solicitações de 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 pesquisa as informações do diretório de um endpoint de serviço.
|
lookup(uint64_t aServiceEp, uint8_t *aControlByte, uint8_t **aDirectoryEntry)
|
Esse método pesquisa as informações do diretório de um endpoint de serviço.
|
onConnectionClosed(WEAVE_ERROR aError)
|
void
Esse método lida com o evento de conexão fechada 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 do serviço.
|
onResponseReceived(uint32_t aProfileId, uint8_t aMsgType, PacketBuffer *aMsg)
|
void
Esse método gerencia 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 substitui o cache do diretório de serviços.
|
relocate(void)
|
void
Esse método substitui 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 modificada de um nome de host e um 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:: |
Essa classe representa uma única transação gerenciada pelo gerenciador de serviços. |
Tipos públicos
@303
@303
Propriedades | |
---|---|
kWeave_DefaultSendTimeout
|
Número de milissegundos em que uma resposta precisa ser recebida para a consulta do diretório antes que o contexto da troca expire. |
OnConnectBegin
void(* OnConnectBegin)(struct ServiceConnectBeginArgs &args)
Um callback de aplicativo feito imediatamente antes do estabelecimento da conexão.
Esse retorno de chamada pode ser usado por aplicativos para observar e 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 também para a conexão com o endpoint do diretório de serviços caso uma pesquisa de diretório precise ser realizada.
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 a solicitação de consulta de endpoint de serviço. É usado para corresponder a OnServiceEndpointQueryEnd para compensar o tempo de veiculação da mensagem.
OnServiceEndpointQueryEndWithTimeInfo
void(* OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec)
Um callback de aplicativo para enviar valores de tempo de uma resposta do diretório de serviços.
Ele é chamado quando obtemos informações de horário da resposta da consulta do diretório de serviços. Observe que esse callback só aconteceria se uma resposta fosse analisada e as informações de tempo fossem 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.
É preciso começar em algum lugar e, com o diretório de serviços, é preciso começar com um diretório de stub que contém o endereço de um servidor que você pode acessar em todos os outros casos. Como a disposição e a procedência dessas informações podem variar de acordo com o dispositivo, fornecemos um callback de acessado aqui.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
||||
Retorna |
WEAVE_NO_ERROR no caso de sucesso, caso contrário, o processo de carregamento será cancelado.
|
StatusHandler
void(* StatusHandler)(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport)
Um gerenciador de condições de erro e status.
Um usuário do gerente de serviços pode ser informado sobre problemas ao tentar executar uma solicitação de conexão de duas maneiras. Ele pode receber um relatório de status do serviço ou um WEAVE_ERROR gerado internamente. Em ambos os casos, as informações são enviadas por esse callback.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
|
Funções públicas
SetConnectBeginCallback
void SetConnectBeginCallback( OnConnectBegin aConnectBegin )
Defina uma função de retorno de chamada 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 chamada para inicializar essa instância ainda mais.
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 limpa qualquer estado pendente da conexão do diretório de serviços.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
Limpar cache
void clearCache( void )
Esse método limpa o estado e o cache do gerenciador se o estado estiver no estado 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 )
Essas solicitações de método se conectam a um serviço do Weave.
Essa é a chamada de conexão de nível superior. Basicamente, ele produz uma conexão segura com o serviço do Weave, considerando um endpoint de serviço e um modo de autenticação, ou após a desativação.
Esse método só pode ser chamado após a chamada bem-sucedida ao 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 de dados provisionados padrão ou uma viagem para o serviço de diretório. O gerente de serviços só colocaria a solicitação na fila antes de determinar o conteúdo do cache.
Detalhes | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||||||||||
Retorna |
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 a chamada para este método, os clientes podem começar a chamar connect(), lookup() e outros métodos.
Detalhes | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||||||||||||
Retorna |
WEAVE_ERROR_INVALID_TOKEN se o argumento da função for inválido. Caso contrário, WEAVE_NO_ERROR.
|
lookup
WEAVE_ERROR lookup( uint64_t aServiceEp, HostPortList *outHostPortList )
Esse método pesquisa as informações do diretório de 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: HostPortList está vinculado ao objeto WeaveServiceManager. Ele permanece válido até que o cache do diretório de serviços seja limpo ou até que outra pesquisa no 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 pesquisa as informações do diretório de um endpoint de serviço.
Se o diretório de serviços tiver sido resolvido, ou seja, se tiver ocorrido uma operação connect(), esse método retornará uma entrada de diretório com base em um identificador de endpoints de serviço.
Esse método expõe os detalhes da implementação interna do diretório de serviços. As implementações precisam ser favoráveis ao usar a 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 fechada 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 do serviço.
Existem algumas possibilidades. Primeiro, a conexão pode ter falhado. Nesse caso, foi concluído. Caso contrário, a conexão estará concluída e o que queremos fazer é 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 gerencia 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.
realocar
void relocate( WEAVE_ERROR aError )
Esse método substitui 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_Relocation, o aplicativo pode chamar unresolve() para limpar o cache e cancelar as solicitações de conexão. Esse método simplifica o tratamento de erros chamando unresolve() pela primeira vez e reset() se o problema ainda não tiver sido resolvido.
Esta versão do método (aqui para compatibilidade com versões anteriores) usa e registra um erro e chama relocate(void).
Detalhes | |||
---|---|---|---|
Parâmetros |
|
relocar(nulo)
realocar
void relocate( void )
Esse método substitui 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_Relocation, o aplicativo pode chamar unresolve() para limpar o cache e cancelar as solicitações de conexão. Esse método simplifica o tratamento de erros chamando unresolve() pela primeira vez e reset() se o problema ainda não tiver sido resolvido.
Veja também:realocar(WEAVE_ERROR)
replaceOrAddCacheEntry
WEAVE_ERROR replaceOrAddCacheEntry( uint16_t port, const char *hostName, uint8_t hostLen, uint64_t serviceEndpointId )
Adicione a entrada de diretório modificada de um nome de host e um 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.
Esse método redefine todos os estados do gerenciador de serviços, inclusive o estado das comunicações pendentes, do cache e de qualquer solicitação de conexão pendente.
Nesta versão do método, que é compatível com versões anteriores, um erro é registrado e chamado de reset(void) .
Detalhes | |||
---|---|---|---|
Parâmetros |
|
reset(void)
redefinir
void reset( void )
Esse método redefine o gerenciador de serviços para o estado inicial.
Esse método redefine todos os estados do gerenciador de serviços, inclusive o estado das comunicações, o estado do cache e o estado das solicitações de conexão pendentes.
Consulte também:reset(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 o gerenciador de serviços emita uma consulta no diretório de serviços na próxima solicitação.
Nesta versão do método, que é compatível com versões anteriores, um erro é registrado e chamado de 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 o gerenciador de serviços emita uma consulta no diretório de serviços na próxima solicitação.
Consulte também:unresolve(WEAVE_ERROR)
~WeaveServiceManager
~WeaveServiceManager( void )
Esse método destrói a instância WeaveServiceManager.