En Google, luchamos por la equidad racial de la comunidad negra. Más información

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

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

El objeto de administrador del directorio del servicio de Weave.

Resumen

El administrador de servicios de Weave es la interfaz principal para las aplicaciones del servicio de directorio. Por lo tanto, oculta las complicaciones inherentes a la búsqueda de la entrada de directorio asociada con un extremo de servicio, realizando una búsqueda de DNS en uno o más nombres de host que se encontraron allí, intentando conectarse, asegurando la conexión, etcétera. También puede administrar una caché de información del directorio de servicios.

Constructores y destructores

WeaveServiceManager(void)
Este método inicializa la instancia WeaveServiceManager.
~WeaveServiceManager(void)
Este método destruye la instancia de WeaveServiceManager.

Tipos públicos

@303{
  kWeave_DefaultSendTimeout = 15000
}
enum
OnConnectBegin)(struct ServiceConnectBeginArgs &args) nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnConnectComenzar
void(*
Una devolución de llamada de la aplicación realizada inmediatamente antes del establecimiento de la conexión.
OnServiceEndpointQueryBegin)(void) nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryStart
void(*
Una devolución de llamada de la aplicación para marcar el tiempo de una consulta del directorio de servicio saliente.
OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec) nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryEndWithTimeInfo
void(*
Una devolución de llamada de la aplicación para entregar valores de tiempo a partir de una respuesta del directorio de servicios.
RootDirectoryAccessor)(uint8_t *aDirectory, uint16_t aLength) nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::RootDirectoryAccessor
Una función de acceso para la información del directorio raíz.
StatusHandler)(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport) nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::StatusHandler
void(*
Un controlador para condiciones de error y estado.

Funciones públicas

SetConnectBeginCallback(OnConnectBegin aConnectBegin)
void
Configura una función de devolución de llamada para que se llame inmediatamente antes de la conexión.
cancel(uint64_t aServiceEp, void *aAppState)
void
Este método cancela una solicitud de conexión.
clearCache(void)
void
Este método borra el estado y la caché del administrador si el estado se encuentra en el estado kServiceMgrState_Resolved de la terminal, lo que significa que se recibió la respuesta del extremo del Directorio de servicios.
connect(uint64_t aServiceEp, WeaveAuthMode aAuthMode, void *aAppState, StatusHandler aStatusHandler, WeaveConnection::ConnectionCompleteFunct aConnectionCompleteHandler, const uint32_t aConnectTimeoutMsecs, const InterfaceId aConnectIntf)
Este método solicita conectarse a un servicio de Weave.
init(WeaveExchangeManager *aExchangeMgr, uint8_t *aCache, uint16_t aCacheLen, RootDirectoryAccessor aAccessor, WeaveAuthMode aDirAuthMode, OnServiceEndpointQueryBegin aServiceEndpointQueryBegin, OnServiceEndpointQueryEndWithTimeInfo aServiceEndpointQueryEndWithTimeInfo, OnConnectBegin aConnectBegin)
Este método inicializa el objeto del administrador de servicios.
lookup(uint64_t aServiceEp, HostPortList *outHostPortList)
Este método busca información del directorio para un extremo de servicio.
lookup(uint64_t aServiceEp, uint8_t *aControlByte, uint8_t **aDirectoryEntry)
Este método busca información del directorio para un extremo de servicio.
onConnectionClosed(WEAVE_ERROR aError)
void
Este método controla el evento de conexión cerrada que informa el contexto de intercambio de Weave asociado.
onConnectionComplete(WEAVE_ERROR aError)
void
Este método controla el evento de conexión completada para la transacción de consulta del extremo del servicio.
onResponseReceived(uint32_t aProfileId, uint8_t aMsgType, PacketBuffer *aMsg)
void
Este método controla cualquier mensaje de respuesta en la conversación con el servicio de directorio.
onResponseTimeout(void)
void
Este método controla el evento de tiempo de espera, en el que no se recibe ninguna respuesta del servicio de directorio.
relocate(WEAVE_ERROR aError)
void
Con este método, se reubica la caché del directorio de servicios.
relocate(void)
void
Con este método, se reubica la caché del directorio de servicios.
replaceOrAddCacheEntry(uint16_t port, const char *hostName, uint8_t hostLen, uint64_t serviceEndpointId)
Agrega la entrada del directorio predominante de un nombre de host y un ID de puerto al principio de la lista de directorios.
reset(WEAVE_ERROR aError)
void
Este método restablece el administrador de servicios a su estado inicial.
reset(void)
void
Este método restablece el administrador de servicios a su estado inicial.
unresolve(WEAVE_ERROR aError)
void
Este método invalida la caché del directorio de servicios.
unresolve(void)
void
Este método invalida la caché del directorio de servicios.

Clases

nl::Weave::Perfiles::Directorio de servicios::WeaveServiceManager::ConnectRequest

Esta clase representa una sola transacción administrada por el administrador de servicios,

Tipos públicos

@303

 @303
Properties
kWeave_DefaultSendTimeout

Cantidad de milisegundos que debe recibirse una respuesta para la consulta del directorio antes de que se agote el tiempo de espera del contexto de intercambio.

OnConnectbegin

void(* OnConnectBegin)(struct ServiceConnectBeginArgs &args)

Una devolución de llamada de la aplicación realizada inmediatamente antes del establecimiento de la conexión.

Las aplicaciones pueden utilizar esta devolución de llamada para observar y, de manera opcional, alterar los argumentos pasados a #WeaveConnection::Connect() durante el establecimiento de una conexión de servicio. Esta devolución de llamada se llamará para la conexión al extremo del servicio de destino y para la conexión con el extremo del Directorio de servicios en caso de que se deba realizar una búsqueda de directorio.

OnServiceEndpointQueryStart

void(* OnServiceEndpointQueryBegin)(void)

Una devolución de llamada de la aplicación para marcar el tiempo de una consulta del directorio de servicio saliente.

Se llama a este método cuando estamos a punto de enviar la solicitud de consulta del extremo del servicio. Se usa para que coincida con OnServiceEndpointQueryEnd a fin de compensar el tiempo de publicación del mensaje.

OnServiceEndpointQueryEndWithTimeInfo

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

Una devolución de llamada de la aplicación para entregar valores de tiempo a partir de una respuesta del directorio de servicios.

Se llama a este método cuando obtenemos información de tiempo a partir de la respuesta a la consulta del directorio de servicios. Ten en cuenta que esta devolución de llamada solo ocurrirá si se analiza correctamente una respuesta y se incluye información de tiempo.

Detalles
Parámetros
[in] timeQueryReceiptMsec
La cantidad de ms en la época POSIX, cuando se recibió la consulta en el servidor.
[in] timeProcessMsec
La cantidad de ms que se dedicó a procesar esta consulta.

RootDirectoryAccessor

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

Una función de acceso para la información del directorio raíz.

Deberá comenzar en algún lugar y, con el directorio de servicios, debe comenzar con un directorio de stub que contenga la dirección de un servidor al que puede acceder para obtener todo lo demás. Debido a que es probable que la disposición y la fuente de esta información varíen según el dispositivo, proporcionamos una devolución de llamada del descriptor de acceso.

Detalles
Parámetros
[out] aDirectory
Un puntero a un búfer para escribir la información del directorio.
[in] aLength
Longitud del búfer determinado en bytes.
Qué muestra
WEAVE_NO_ERROR si se realiza correctamente, de lo contrario se anulará el proceso de carga.

Controlador de estado

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

Un controlador para condiciones de error y estado.

Se puede informar a un usuario del administrador de servicios si hay problemas al intentar ejecutar una solicitud de conexión de una de las siguientes dos maneras. Es posible que reciba un informe de estado del servicio o que reciba un WEAVE_ERROR generado de forma interna. En cualquier caso, la información proviene de esta devolución de llamada.

Detalles
Parámetros
[in] anAppState
Un puntero para un objeto de la aplicación que se pasó a la llamada conect() correspondiente.
[in] anError
Un código de error de Weave que indica un error en el proceso de intentar ejecutar la solicitud de conexión. Debe ser WEAVE_NO_ERROR en caso de que no haya un error y haya un informe de estado disponible.
[in] aStatusReport
Un puntero para un informe de estado generado por el servicio de directorio remoto. Este argumento será NULL en el caso en que no haya un informe de estado y se pase un error interno en el argumento anterior.

Funciones públicas

SetConnectStartCallback

void SetConnectBeginCallback(
  OnConnectBegin aConnectBegin
)

Configura una función de devolución de llamada para que se llame inmediatamente antes de la conexión.

Detalles
Parámetros
[in] aConnectBegin
Un puntero para la función de devolución de llamada. Un valor de NULL inhabilita la devolución de llamada.

Administrador de servicios de Weave

 WeaveServiceManager(
  void
)

Este método inicializa la instancia WeaveServiceManager.

Ten en cuenta que se debe llamar a init() para inicializar aún más esta instancia.

cancelar

void cancel(
  uint64_t aServiceEp,
  void *aAppState
)

Este método cancela una solicitud de conexión.

Este método cancela una solicitud de conexión según el ID de extremo del servicio y el objeto de estado de la aplicación que se pasó en el momento de la solicitud como identificadores. Si es la última solicitud de conexión, este método también borra cualquier estado de conexión del directorio del servicio pendiente.

Detalles
Parámetros
[in] aServiceEp
El ID del extremo de servicio de la solicitud que se cancela.
[in] anAppState
Un puntero para el objeto de estado de la app asignado a la llamada connect().

clearCache

void clearCache(
  void
)

Este método borra el estado y la caché del administrador si el estado se encuentra en el estado kServiceMgrState_Resolved de la terminal, lo que significa que se recibió la respuesta del extremo del Directorio de servicios.

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 conectarse a un servicio de Weave.

Esta es la llamada de conexión de nivel superior. Básicamente, produce una conexión segura al servicio de Weave con un extremo de servicio y un modo de autenticación que falla.

Solo se puede llamar a este método después de una llamada exitosa a init(), y una solicitud de conexión puede ser potencialmente cancelada mediante cancel().

Se puede llamar a este método antes de que la caché local se rellene con datos proporcionados de forma predeterminada o de un viaje al servicio de directorio. El administrador de servicios solo pondrá en cola la solicitud para que se pueda determinar el contenido de la caché.

Detalles
Parámetros
[in] aServiceEp
Es el identificador de extremo del servicio, como se define en ServiceDirectory.h, para el servicio de interés.
[in] aAuthMode
El modo de autenticación que se debe usar cuando se conecta al servicio de interés.
[in] aAppState
Un puntero para un objeto de estado de la aplicación, que se pasa a las devoluciones de llamada como un argumento.
[in] aStatusHandler
Una devolución de llamada para invocar en caso de que se produzca un error antes de que se complete la conexión.
[in] aConnectionCompleteHandler
Una devolución de llamada para invocar en el caso en que se completa la conexión solicitada. Ten en cuenta que la conexión puede fallar con un código de error de Weave.
[in] aConnectTimeoutMsecs
Es el tiempo de espera opcional de conexión TCP en milisegundos.
[in] aConnectIntf
La interfaz opcional para establecer la conexión.
Qué muestra
WEAVE_NO_ERROR si la operación se completa de forma correcta; de lo contrario, aparecerá el código de error correspondiente.

init

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 el objeto del administrador de servicios.

Para poder usarlo, se debe inicializar un objeto del administrador de servicios. Después de una llamada exitosa a este método, los clientes pueden comenzar a llamar a connect(), lookup() y otros métodos.

Detalles
Parámetros
[in] aExchangeMgr
Un puntero al administrador de intercambios que se usa para todos los intercambios de perfiles del directorio de servicios.
[in] aCache
Un puntero para un búfer que se puede utilizar para almacenar en caché la información del directorio.
[in] aCacheLen
Longitud en bytes de la caché.
[in] aAccessor
Es la devolución de llamada, como se define en ServiceDirectory.h, que se invoca para cargar el directorio raíz como punto de partida para la búsqueda de directorios.
[in] aDirAuthMode
El modo de autenticación que se debe usar cuando se habla con el servicio de directorio.
[in] aServiceEndpointQueryBegin
Un puntero de función de tipo OnServiceEndpointQueryStart, que se llama al comienzo de una solicitud del directorio de servicios y permite que el código de la aplicación marque la hora si desea usar la sincronización de hora que ofrece el protocolo del directorio de servicios.
[in] aServiceEndpointQueryEndWithTimeInfo
Un puntero de función de tipo OnServiceEndpointQueryEndWithTimeInfo que se llama al momento de recibir un directorio de servicios que permite que las aplicaciones se sincronicen con el servicio de Weave mediante los campos de tiempo proporcionados en la respuesta. Esta devolución de llamada se realizará una vez que el administrador de servicios reciba una respuesta con información sobre la hora. La caché ya debería completarse correctamente antes de que se realice la devolución de llamada.
[in] aConnectBegin
Un puntero de función de tipo OnConnectbegin, que se llama inmediatamente antes del establecimiento de la conexión y permite que las aplicaciones observen y alteren los argumentos pasados a #WeaveConnection::Connect(). Un valor NULL (predeterminado) inhabilita la devolución de llamada.
Qué muestra
WEAVE_ERROR_INVALID_BUCKET si el argumento de la función no es válido; de lo contrario, WEAVE_NO_ERROR.

lookup

WEAVE_ERROR lookup(
  uint64_t aServiceEp,
  HostPortList *outHostPortList
)

Este método busca información del directorio para un extremo de servicio.

Si se resolvió el directorio de servicio, es decir, si se realizó correctamente una operación connect(), este método propagará el objeto HostPortList proporcionado.

Nota: HostPortList está vinculada al objeto WeaveServiceManager; sigue siendo válido hasta que se borre la caché del directorio de servicios o se realice otra búsqueda en el directorio de servicios.

Detalles
Parámetros
[in] aServiceEp
Es el identificador del extremo de servicio para buscar.
[out] outHostPortList
Es el puntero a HostPortList que se propagará cuando se busque correctamente la entrada del directorio. No debe ser NULO.
Valores que se muestran
WEAVE_NO_ERROR
de lo contrario, de lo contrario, un código de error correspondiente.
WEAVE_ERROR_INVALID_SERVICE_EP
si no se encuentra el extremo de servicio determinado.
WEAVE_ERROR_INVALID_DIRECTORY_ENTRY_TYPE
if directory contiene un tipo de entrada de directorio desconocido.

lookup

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

Este método busca información del directorio para un extremo de servicio.

Si se resolvió el directorio de servicio, es decir, si hubo una operación de connect() exitosa, este método mostrará una entrada de directorio con un identificador de extremo de servicio.

Este método expone los detalles de la implementación interna del directorio de servicios; las implementaciones deben preferir usar la variante de este método que genera la HostPortList.

Detalles
Parámetros
[in] aServiceEp
Es el identificador del extremo de servicio para buscar.
[out] aControlByte
Un puntero al lugar para escribir el byte de control de entrada del directorio.
[out] aDirectoryEntry
Un puntero que se dirigirá a la entrada del directorio.
Valores que se muestran
WEAVE_NO_ERROR
de lo contrario, de lo contrario, un código de error correspondiente.
WEAVE_ERROR_INVALID_SERVICE_EP
si no se encuentra el extremo de servicio determinado.
WEAVE_ERROR_INVALID_DIRECTORY_ENTRY_TYPE
if directory contiene un tipo de entrada de directorio desconocido.

onConnectionClosed

void onConnectionClosed(
  WEAVE_ERROR aError
)

Este método controla el evento de conexión cerrada que informa el contexto de intercambio de Weave asociado.

Detalles
Parámetros
[in] aError
Un error de Weave que indica el motivo por el que se cierra esta conexión.

onConnectionComplete (en inglés)

void onConnectionComplete(
  WEAVE_ERROR aError
)

Este método controla el evento de conexión completada para la transacción de consulta del extremo del servicio.

Hay un par de posibilidades. En primer lugar, es posible que la conexión haya fallado. En ese caso, la conexión debería estar lista. De lo contrario, la conexión estará completa, y lo que queremos es abrir un contexto de intercambio y enviar una consulta de directorio.

Detalles
Parámetros
[in] aError
Un error de Weave si se produce algún error durante la configuración de conexión.

onResponseReceived

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

Este método controla cualquier mensaje de respuesta en la conversación con el servicio de directorio.

Detalles
Parámetros
[in] aProfileId
El ID de perfil de este mensaje entrante.
[in] aMsgType
El tipo de perfil específico para este mensaje.
[in] aMsg
El contenido de este mensaje

onResponseTimeout

void onResponseTimeout(
  void
)

Este método controla el evento de tiempo de espera, en el que no se recibe ninguna respuesta del servicio de directorio.

reubicar

void relocate(
  WEAVE_ERROR aError
)

Con este método, se reubica la caché del directorio de servicios.

Cuando un extremo de servicio muestra un informe de estado con el código de estado kStatus_Relocations, la aplicación puede llamar a unresolve() para borrar la caché y cancelar las solicitudes de conexión. Este método simplifica el manejo de errores llamando a unresolve() por primera vez y reset() si aún no se resuelve el problema.

Esta versión del método, que es compatible con versiones anteriores, toma y registra un error y, luego, llama a relocate(void).

Detalles
Parámetros
[in] aError
un error para registrar.
Consulta también:
relocate(void)

reubicar

void relocate(
  void
)

Con este método, se reubica la caché del directorio de servicios.

Cuando un extremo de servicio muestra un informe de estado con el código de estado kStatus_Relocations, la aplicación puede llamar a unresolve() para borrar la caché y cancelar las solicitudes de conexión. Este método simplifica el manejo de errores llamando a unresolve() por primera vez y reset() si aún no se resuelve el problema.

Consulta también:
reubicar(WEAVE_ERROR)

replaceOrAddCacheEntry

WEAVE_ERROR replaceOrAddCacheEntry(
  uint16_t port,
  const char *hostName,
  uint8_t hostLen,
  uint64_t serviceEndpointId
)

Agrega la entrada del directorio predominante de un nombre de host y un ID de puerto al principio de la lista de directorios.

restablecer

void reset(
  WEAVE_ERROR aError
)

Este método restablece el administrador de servicios a su estado inicial.

Este método restablece todos los estados del administrador de servicios, incluidos el estado de las comunicaciones, el estado de la caché y el estado de cualquier solicitud de conexión pendiente.

Esta versión del método, que aquí es para retrocompatibilidad, toma y registra un error y, luego, llama a reset(void) .

Detalles
Parámetros
[in] aError
El error que activó esta operación.
Consulta también:
reset(void)

restablecer

void reset(
  void
)

Este método restablece el administrador de servicios a su estado inicial.

Este método restablece todos los estados del administrador de servicios, incluidos el estado de las comunicaciones, el estado de la caché y el estado de cualquier solicitud de conexión pendiente.

Consulta también:
reset(WEAVE_ERROR)

resolver

void unresolve(
  WEAVE_ERROR aError
)

Este método invalida la caché del directorio de servicios.

Este método establece el estado de la caché del directorio de servicios para que, en la próxima solicitud, el administrador de servicios emita una consulta en el directorio de servicios.

Esta versión del método, que se usa para fines de retrocompatibilidad, registra y registra un error y, luego, llama a unresolve(void) .

Detalles
Parámetros
[in] aError
El error que activó esta operación.
Consulta también:
unresolve(void)

resolver

void unresolve(
  void
)

Este método invalida la caché del directorio de servicios.

Este método establece el estado de la caché del directorio de servicios para que, en la próxima solicitud, el administrador de servicios emita una consulta en el directorio de servicios.

Consulta también:
unresolve(WEAVE_ERROR)

~WeaveServiceManager

 ~WeaveServiceManager(
  void
)

Este método destruye la instancia de WeaveServiceManager.