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

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{
  kWeave_DefaultSendTimeout = 15000
}
tipo enumerado
OnConnectBegin)(struct ServiceConnectBeginArgs &args) nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnConnectBegin
void(*
Um callback de aplicativo feito imediatamente antes do estabelecimento da conexão.
OnServiceEndpointQueryBegin)(void) nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryBegin
void(*
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::OnServiceEndpointQueryEndWithTimeInfo
void(*
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::StatusHandler
void(*
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::Weave::Perfis::ServiceDirectory::WeaveServiceManager::ConnectRequest

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
[in] timeQueryReceiptMsec
Número de ms desde a época do POSIX, em que a consulta foi recebida no lado do servidor.
[in] timeProcessMsec
O número de ms até o processamento da consulta.

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
[out] aDirectory
Um ponteiro para um buffer para gravar as informações do diretório.
[in] aLength
O tamanho do buffer especificado em bytes.
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
[in] anAppState
Um ponteiro para um objeto de aplicativo que foi passado na chamada conect() correspondente.
[in] anError
Um código de erro do Weave indicando que o erro ocorreu no processo de tentativa de execução da solicitação de conexão. Esse valor será WEAVE_NO_ERROR caso não tenha ocorrido nenhum erro e um relatório de status esteja disponível.
[in] aStatusReport
Um ponteiro para um relatório de status gerado pelo serviço de diretório remoto. Esse argumento será NULL no caso de não haver relatório de status e um erro interno for transmitido no argumento anterior.

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
[in] aConnectBegin
Um ponteiro para a função de callback. Um valor de NULL desativa o callback.

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
[in] aServiceEp
O ID do endpoint do serviço da solicitação que está sendo cancelada.
[in] anAppState
Um ponteiro para o objeto de estado do app dado à chamada connect().

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
[in] aServiceEp
Identificador de endpoint do serviço, conforme definido em ServiceDirectory.h, para o serviço desejado.
[in] aAuthMode
O modo de autenticação a ser usado ao se conectar ao serviço de interesse.
[in] aAppState
Um ponteiro para um objeto de estado do aplicativo, passado para os callbacks como um argumento.
[in] aStatusHandler
Um callback a ser invocado no caso de um erro que ocorrer antes da conclusão da conexão.
[in] aConnectionCompleteHandler
Um callback a ser invocado no caso em que a conexão solicitada seja concluída. A conexão pode falhar com um código de erro do Weave.
[in] aConnectTimeoutMsecs
O tempo limite opcional de conexão TCP em milissegundos.
[in] aConnectIntf
A interface opcional pela qual a conexão será estabelecida.
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
[in] aExchangeMgr
Um ponteiro para o gerenciador de trocas usar em todas as trocas de perfil do diretório de serviços.
[in] aCache
Um ponteiro para um buffer que pode ser usado para armazenar em cache as informações do diretório.
[in] aCacheLen
O tamanho em bytes do cache.
[in] aAccessor
O callback, conforme definido em ServiceDirectory.h para invocar, a fim de carregar o diretório raiz como ponto de partida para a pesquisa de diretórios.
[in] aDirAuthMode
O modo de autenticação a ser usado ao falar com o serviço de diretório.
[in] aServiceEndpointQueryBegin
Um ponteiro de função do tipo OnServiceEndpointQueryBegin, que é chamado no início de uma solicitação do diretório de serviços e permite que o código do aplicativo marque o horário se quiser usar a sincronização de horários oferecida pelo protocolo do diretório de serviços.
[in] aServiceEndpointQueryEndWithTimeInfo
Um ponteiro de função do tipo OnServiceEndpointQueryEndWithTimeInfo, que é chamado no recebimento de um diretório de serviços que permite aos aplicativos sincronizar com o serviço Weave usando os campos de tempo fornecidos na resposta. Esse callback seria feito depois que o gerenciador de serviços recebe uma resposta com as informações de tempo. O cache já deve ter sido preenchido antes que o retorno de chamada seja feito.
[in] aConnectBegin
Um ponteiro de função do tipo OnConnectBegin, que é chamado imediatamente antes do estabelecimento da conexão e permite que os aplicativos observem e, opcionalmente, alterem os argumentos passados para #WeaveConnection::Connect(). Um valor de NULL (padrão) desativa o callback.
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
[in] aServiceEp
O identificador do endpoint de serviço a ser pesquisado.
[out] outHostPortList
O ponteiro para HostPortList que será preenchido na pesquisa bem-sucedida da entrada do diretório. Não pode ser NULL.
Valores de retorno
WEAVE_NO_ERROR
em caso de sucesso, caso contrário, um respectivo código de erro.
WEAVE_ERROR_INVALID_SERVICE_EP
se o endpoint de serviço não for encontrado.
WEAVE_ERROR_INVALID_DIRECTORY_ENTRY_TYPE
Se o diretório contém um tipo de entrada de diretório desconhecido.

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
[in] aServiceEp
O identificador do endpoint de serviço a ser pesquisado.
[out] aControlByte
Um ponteiro para o local para gravar o byte de controle de entrada do diretório.
[out] aDirectoryEntry
Um ponteiro para ser direcionado para a entrada de diretório.
Valores de retorno
WEAVE_NO_ERROR
em caso de sucesso, caso contrário, um respectivo código de erro.
WEAVE_ERROR_INVALID_SERVICE_EP
se o endpoint de serviço não for encontrado.
WEAVE_ERROR_INVALID_DIRECTORY_ENTRY_TYPE
Se o diretório contém um tipo de entrada de diretório desconhecido.

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
[in] aError
Um erro do Weave que indica o motivo do encerramento da conexão.

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
[in] aError
Um erro de Weave se houver algum durante a configuração da conexão.

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
[in] aProfileId
O ID do perfil dessa mensagem recebida.
[in] aMsgType
O tipo específico do perfil dessa mensagem.
[in] aMsg
O conteúdo desta mensagem.

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
[in] aError
um erro a ser registrado.
Veja também:
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
[in] aError
O erro que acionou essa operação.
Ver também:
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
[in] aError
O erro que acionou essa operação.
Consulte também:
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.