O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.
Esta página foi traduzida pela API Cloud Translation.
Switch to English

nl :: Tecer:: Perfis :: ServiceDirectory :: WeaveServiceManager

#include <src/lib/profiles/service-directory/ServiceDirectory.h>

O objeto gerenciador do diretório do serviço Weave.

Resumo

O gerenciador de serviço Weave é a principal interface de aplicativos para o serviço de diretório. Como tal, ele oculta as complicações inerentes à procura da entrada de diretório associada a um ponto de extremidade de serviço, fazendo pesquisa DNS em um ou mais dos nomes de host encontrados lá, tentando conectar, protegendo a conexão e assim por diante. Ele também pode gerenciar um cache de informações de diretório de serviço.

Construtores e Destruidores

WeaveServiceManager (void)
Este método inicializa a instância WeaveServiceManager .
~WeaveServiceManager (void)
Este método destrói a instância WeaveServiceManager .

Tipos públicos

@303 {
kWeave_DefaultSendTimeout = 15000
}
enum
OnConnectBegin )(struct ServiceConnectBeginArgs &args) nl :: Weave :: Profiles :: ServiceDirectory :: WeaveServiceManager :: OnConnectBegin
void(*
Um retorno de chamada do aplicativo feito imediatamente antes do estabelecimento da conexão.
OnServiceEndpointQueryBegin )(void) nl :: Weave :: Profiles :: ServiceDirectory :: WeaveServiceManager :: OnServiceEndpointQueryBegin
void(*
Um retorno de chamada do aplicativo para marcar a hora de uma consulta de diretório de serviço de saída.
OnServiceEndpointQueryEndWithTimeInfo )(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec) nl :: Weave :: Profiles :: ServiceDirectory :: WeaveServiceManager :: OnServiceEndpointQueryEndWithTimeInfo
void(*
Um retorno de chamada do aplicativo para entregar valores de tempo de uma resposta do diretório de serviço.
RootDirectoryAccessor )(uint8_t *aDirectory, uint16_t aLength) nl :: Weave :: Profiles :: ServiceDirectory :: WeaveServiceManager :: RootDirectoryAccessor
Uma função de acessador para as informações do diretório raiz.
StatusHandler )(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport) nl :: Weave :: Profiles :: ServiceDirectory :: WeaveServiceManager :: StatusHandler
void(*
Um manipulador para 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
Este método cancela uma solicitação de conexão.
clearCache (void)
void
Este método limpa o estado e o cache do gerenciador se o estado estiver no estado kServiceMgrState_Resolved terminal, o que significa que a resposta do terminal do Service Directory foi recebida.
connect (uint64_t aServiceEp, WeaveAuthMode aAuthMode, void *aAppState, StatusHandler aStatusHandler, WeaveConnection::ConnectionCompleteFunct aConnectionCompleteHandler, const uint32_t aConnectTimeoutMsecs, const InterfaceId aConnectIntf)
Este método solicita conexão a um serviço Weave.
init ( WeaveExchangeManager *aExchangeMgr, uint8_t *aCache, uint16_t aCacheLen, RootDirectoryAccessor aAccessor, WeaveAuthMode aDirAuthMode, OnServiceEndpointQueryBegin aServiceEndpointQueryBegin, OnServiceEndpointQueryEndWithTimeInfo aServiceEndpointQueryEndWithTimeInfo, OnConnectBegin aConnectBegin)
Este método inicializa o objeto do gerenciador de serviço.
lookup (uint64_t aServiceEp, HostPortList *outHostPortList)
Este método procura informações de diretório para um terminal em serviço.
lookup (uint64_t aServiceEp, uint8_t *aControlByte, uint8_t **aDirectoryEntry)
Este método procura informações de diretório para um terminal em serviço.
onConnectionClosed ( WEAVE_ERROR aError)
void
Este método trata o evento de conexão fechada relatado pelo contexto de troca Weave associado.
onConnectionComplete ( WEAVE_ERROR aError)
void
Este método trata o evento de conexão concluída para a transação de consulta do terminal em serviço.
onResponseReceived (uint32_t aProfileId, uint8_t aMsgType, PacketBuffer *aMsg)
void
Este método lida com qualquer mensagem de resposta na conversa com o serviço de diretório.
onResponseTimeout (void)
void
Este método controla o evento de tempo limite, no qual nenhuma resposta foi recebida do serviço de diretório.
relocate ( WEAVE_ERROR aError)
void
Este método realoca o cache do diretório de serviço.
relocate (void)
void
Este método realoca o cache do diretório de serviço.
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ório.
reset ( WEAVE_ERROR aError)
void
Este método redefine o gerenciador de serviço ao seu estado inicial.
reset (void)
void
Este método redefine o gerenciador de serviço ao seu estado inicial.
unresolve ( WEAVE_ERROR aError)
void
Este método invalida o cache do diretório de serviço.
unresolve (void)
void
Este método invalida o cache do diretório de serviço.

Aulas

nl :: Weave :: Profiles :: ServiceDirectory :: WeaveServiceManager :: ConnectRequest

Esta classe representa uma única transação gerenciada pelo gerenciador de serviço.

Tipos públicos

@ 303

 @303
Propriedades
kWeave_DefaultSendTimeout

Número de milissegundos que uma resposta deve ser recebida para a consulta de diretório antes que o contexto de troca expire.

OnConnectBegin

void(* OnConnectBegin)(struct ServiceConnectBeginArgs &args)

Um retorno de chamada do aplicativo feito imediatamente antes do estabelecimento da conexão.

Este 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 retorno de chamada será chamado para a conexão com o ponto de extremidade do serviço de destino, bem como para a conexão com o ponto de extremidade do Service Directory, caso uma consulta ao diretório deva ser executada.

OnServiceEndpointQueryBegin

void(* OnServiceEndpointQueryBegin)(void)

Um retorno de chamada do aplicativo para marcar a hora de uma consulta de diretório de serviço de saída.

Isso é chamado quando estamos prestes a enviar uma solicitação de consulta de terminal de serviço. Isso é usado para corresponder a OnServiceEndpointQueryEnd para compensar o tempo de voo da mensagem.

OnServiceEndpointQueryEndWithTimeInfo

void(* OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec)

Um retorno de chamada do aplicativo para entregar valores de tempo de uma resposta do diretório de serviço.

É chamado quando obtemos informações de tempo da resposta de consulta do diretório de serviço Observe que esse retorno de chamada só aconteceria se uma resposta for analisada com êxito e as informações de tempo forem incluídas

Detalhes
Parâmetros
[in] timeQueryReceiptMsec
O número de ms desde a época POSIX, quando a consulta foi recebida no lado do servidor.
[in] timeProcessMsec
O número de ms gasto no processamento desta consulta.

RootDirectoryAccessor

WEAVE_ERROR(* RootDirectoryAccessor)(uint8_t *aDirectory, uint16_t aLength)

Uma função de acessador para as informações do diretório raiz.

Você tem que começar em algum lugar e com o diretório de serviço, você tem que começar com um diretório stub que contém o endereço de um servidor que você pode acessar para acessar todo o resto. Uma vez que a disposição e a proveniência dessas informações provavelmente variam de dispositivo para dispositivo, fornecemos um retorno de chamada do acessador aqui.

Detalhes
Parâmetros
[out] aDirectory
Um ponteiro para um buffer para gravar as informações do diretório.
[in] aLength
O comprimento do buffer fornecido em bytes.
Devoluções
WEAVE_NO_ERROR em caso de sucesso, caso contrário, o processo de carregamento seria abortado.

StatusHandler

void(* StatusHandler)(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport)

Um manipulador para condições de erro e status.

Um usuário do gerenciador de serviço 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 retorno de chamada.

Detalhes
Parâmetros
[in] anAppState
Um ponteiro para um objeto de aplicativo que foi passado para a chamada conect () correspondente.
[in] anError
Um código de erro Weave indicando que ocorreu um erro no processo de tentativa de execução da solicitação de conexão. Deve ser WEAVE_NO_ERROR no caso em que nenhum erro ocorreu e um relatório de status está disponível.
[in] aStatusReport
Um ponteiro para um relatório de status gerado pelo serviço de diretório remoto. Este argumento deve ser NULL no caso em que não houve relatório de status e um erro interno é passado 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 retorno de chamada. Um valor NULL desativa o retorno de chamada.

WeaveServiceManager

 WeaveServiceManager(
  void
)

Este método inicializa a instância WeaveServiceManager .

Observe que init () deve ser chamado para inicializar ainda mais esta instância.

cancelar

void cancel(
  uint64_t aServiceEp,
  void *aAppState
)

Este método cancela uma solicitação de conexão.

Este método cancela uma solicitação de conexão dada a ID do terminal em serviço e o objeto de estado do aplicativo passado no momento da solicitação como identificadores. Se for a última solicitação de conexão, este método também limpa qualquer estado de conexão de diretório de serviço pendente.

Detalhes
Parâmetros
[in] aServiceEp
O ID do terminal em serviço da solicitação sendo cancelada.
[in] anAppState
Um ponteiro para o objeto de estado do aplicativo fornecido para a chamada connect () .

Limpar cache

void clearCache(
  void
)

Este método limpa o estado e o cache do gerenciador se o estado estiver no estado kServiceMgrState_Resolved terminal, o que significa que a resposta do ponto de extremidade do Service Directory 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
)

Este método solicita conexão a um serviço Weave.

Esta é a chamada de conexão de nível superior. Essencialmente, ele produz uma conexão segura com o serviço Weave, dado um terminal de serviço e um modo de autenticação ou morre tentando.

Este 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 () .

Este 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ço apenas enfileiraria a solicitação antes que o conteúdo do cache pudesse ser determinado.

Detalhes
Parâmetros
[in] aServiceEp
O identificador do ponto de extremidade do serviço, conforme definido em ServiceDirectory.h , para o serviço de interesse.
[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 retornos de chamada como um argumento.
[in] aStatusHandler
Um retorno de chamada a ser invocado no caso de um erro que ocorre antes que a conexão seja concluída.
[in] aConnectionCompleteHandler
Um retorno de chamada a ser invocado no caso em que a conexão solicitada for concluída. Observe que a conexão pode falhar com um código de erro Weave.
[in] aConnectTimeoutMsecs
O tempo limite de conexão TCP opcional em milissegundos.
[in] aConnectIntf
A interface opcional pela qual a conexão deve ser estabelecida.
Devoluções
WEAVE_NO_ERROR em caso de sucesso; caso contrário, um respectivo código de erro.

iniciar

WEAVE_ERROR init(
  WeaveExchangeManager *aExchangeMgr,
  uint8_t *aCache,
  uint16_t aCacheLen,
  RootDirectoryAccessor aAccessor,
  WeaveAuthMode aDirAuthMode,
  OnServiceEndpointQueryBegin aServiceEndpointQueryBegin,
  OnServiceEndpointQueryEndWithTimeInfo aServiceEndpointQueryEndWithTimeInfo,
  OnConnectBegin aConnectBegin
)

Este método inicializa o objeto do gerenciador de serviço.

Para ser usado, um objeto gerenciador de serviço deve ser inicializado. Após uma chamada bem-sucedida 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 troca a ser usado para todas as trocas de perfis de diretório de serviço.
[in] aCache
Um ponteiro para um buffer que pode ser usado para armazenar informações de diretório em cache.
[in] aCacheLen
O comprimento em bytes do cache.
[in] aAccessor
O retorno de chamada, conforme definido em ServiceDirectory.h, a ser invocado para carregar o diretório raiz como um ponto de partida para a pesquisa de diretório.
[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 de diretório de serviço e permite que o código do aplicativo marque a hora se desejar usar a sincronização de tempo oferecida pelo protocolo de diretório de serviço.
[in] aServiceEndpointQueryEndWithTimeInfo
Um ponteiro de função do tipo OnServiceEndpointQueryEndWithTimeInfo, que é chamado no recebimento de um diretório de serviço que permite aos aplicativos sincronizar com o serviço Weave usando os campos de tempo fornecidos na resposta. Esse retorno de chamada seria feito após o gerente de serviço receber uma resposta com informações de tempo. O cache já deve ser preenchido com sucesso 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 aos aplicativos observar e, opcionalmente, alterar os argumentos passados ​​para #WeaveConnection :: Connect (). Um valor NULL (o padrão) desativa o retorno de chamada.
Devoluções
WEAVE_ERROR_INVALID_ARGUMENT se um argumento de função for inválido; caso contrário, WEAVE_NO_ERROR .

olho para cima

WEAVE_ERROR lookup(
  uint64_t aServiceEp,
  HostPortList *outHostPortList
)

Este método procura informações de diretório para um terminal em serviço.

Se o diretório de serviço tiver sido resolvido, ou seja, se houver uma operação connect () bem-sucedida, este método preencherá o objeto HostPortList fornecido.

Observação: o HostPortList está vinculado ao objeto WeaveServiceManager ; ele permanece válido até que o cache do diretório do serviço seja limpo ou até que ocorra outra pesquisa do diretório do serviço.

Detalhes
Parâmetros
[in] aServiceEp
O identificador do terminal de serviço a ser consultado.
[out] outHostPortList
O ponteiro para HostPortList que será preenchido na pesquisa bem-sucedida da entrada do diretório. Não deve ser nulo.
Valores Retornados
WEAVE_NO_ERROR
no sucesso; caso contrário, um respectivo código de erro.
WEAVE_ERROR_INVALID_SERVICE_EP
se o terminal de serviço fornecido não for encontrado.
WEAVE_ERROR_INVALID_DIRECTORY_ENTRY_TYPE
se o diretório contiver um tipo de entrada de diretório desconhecido.

olho para cima

WEAVE_ERROR lookup(
  uint64_t aServiceEp,
  uint8_t *aControlByte,
  uint8_t **aDirectoryEntry
)

Este método procura informações de diretório para um terminal em serviço.

Se o diretório de serviço foi resolvido, ou seja, se houve uma operação connect () bem-sucedida, este método retornará uma entrada de diretório com um identificador de terminal de serviço.

Este método expõe os detalhes da implementação interna do diretório de serviço, as implementações devem favorecer fortemente o uso da variante deste método que gera o HostPortList .

Detalhes
Parâmetros
[in] aServiceEp
O identificador do terminal de serviço a ser consultado.
[out] aControlByte
Um ponteiro para o local para gravar o byte de controle de entrada de diretório.
[out] aDirectoryEntry
Um ponteiro a ser direcionado para a entrada do diretório.
Valores Retornados
WEAVE_NO_ERROR
no sucesso; caso contrário, um respectivo código de erro.
WEAVE_ERROR_INVALID_SERVICE_EP
se o terminal de serviço fornecido não for encontrado.
WEAVE_ERROR_INVALID_DIRECTORY_ENTRY_TYPE
se o diretório contiver um tipo de entrada de diretório desconhecido.

onConnectionClosed

void onConnectionClosed(
  WEAVE_ERROR aError
)

Este método trata o evento de conexão fechada relatado pelo contexto de troca Weave associado.

Detalhes
Parâmetros
[in] aError
Um erro de Weave indicando o motivo do fechamento desta conexão.

onConnectionComplete

void onConnectionComplete(
  WEAVE_ERROR aError
)

Este método trata o evento de conexão concluída para a transação de consulta do terminal em serviço.

Existem algumas possibilidades. Primeiro, a conexão pode ter falhado, caso em que terminamos. Caso contrário, a conexão está realmente completa e o que queremos fazer é abrir um contexto de troca e enviar uma consulta de diretório.

Detalhes
Parâmetros
[in] aError
Um erro Weave se houver algum erro durante a configuração da conexão.

onResponseReceived

void onResponseReceived(
  uint32_t aProfileId,
  uint8_t aMsgType,
  PacketBuffer *aMsg
)

Este método lida com qualquer mensagem de resposta na conversa com o serviço de diretório.

Detalhes
Parâmetros
[in] aProfileId
O ID do perfil para esta mensagem recebida.
[in] aMsgType
O tipo específico de perfil para esta mensagem.
[in] aMsg
O conteúdo desta mensagem.

onResponseTimeout

void onResponseTimeout(
  void
)

Este método controla o evento de tempo limite, no qual nenhuma resposta foi recebida do serviço de diretório.

realocar

void relocate(
  WEAVE_ERROR aError
)

Este método realoca o cache do diretório de serviço.

Quando um terminal de serviço retorna um relatório de status com o código de status kStatus_Relocated, o aplicativo pode chamar unresolve () para limpar o cache e cancelar as solicitações de conexão. Este método simplifica o tratamento de erros chamando unresolve () na primeira vez e reset () se o problema ainda não foi resolvido.

Esta versão do método - aqui para compatibilidade com versões anteriores - pega e registra um erro e chama relocate (void) .

Detalhes
Parâmetros
[in] aError
um erro para registrar.
Veja também:
realocar (vazio)

realocar

void relocate(
  void
)

Este método realoca o cache do diretório de serviço.

Quando um terminal de serviço retorna um relatório de status com o código de status kStatus_Relocated, o aplicativo pode chamar unresolve () para limpar o cache e cancelar as solicitações de conexão. Este método simplifica o tratamento de erros chamando unresolve () na primeira vez e reset () se o problema ainda não foi 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 de substituição de um nome de host e id de porta no início da lista de diretório.

Redefinir

void reset(
  WEAVE_ERROR aError
)

Este método redefine o gerenciador de serviço ao seu estado inicial.

Este método redefine todos os estados do gerenciador de serviço, incluindo estado de comunicação, estado de cache e o estado de qualquer solicitação de conexão pendente.

Esta versão do método - aqui para compatibilidade com versões anteriores - pega e registra um erro e chama reset (void) .

Detalhes
Parâmetros
[in] aError
O erro que acionou esta operação.
Veja também:
redefinir (vazio)

Redefinir

void reset(
  void
)

Este método redefine o gerenciador de serviço ao seu estado inicial.

Este método redefine todos os estados do gerenciador de serviço, incluindo estado de comunicação, estado de cache e o estado de qualquer solicitação de conexão pendente.

Veja também:
redefinir (WEAVE_ERROR)

não resolver

void unresolve(
  WEAVE_ERROR aError
)

Este método invalida o cache do diretório de serviço.

Este método define o estado do cache do diretório de serviço para que na próxima solicitação o gerenciador de serviço emita uma consulta de diretório de serviço.

Esta versão do método - aqui para compatibilidade com versões anteriores - pega e registra um erro e chama unresolve (void) .

Detalhes
Parâmetros
[in] aError
O erro que acionou esta operação.
Veja também:
não resolvido (vazio)

não resolver

void unresolve(
  void
)

Este método invalida o cache do diretório de serviço.

Este método define o estado do cache do diretório de serviço de forma que na próxima solicitação o gerenciador de serviço emita uma consulta de diretório de serviço.

Veja também:
não resolver (WEAVE_ERROR)

~ WeaveServiceManager

 ~WeaveServiceManager(
  void
)

Este método destrói a instância WeaveServiceManager .