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

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

El objeto de administrador del directorio de servicios 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 buscar la entrada de directorio asociada con un extremo de servicio, realizar la búsqueda de DNS en uno o más de los nombres de host que se encuentran allí, intentar conectarse, proteger 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 de 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::OnConnectBegin
void(*
Una devolución de llamada de la aplicación que se realiza inmediatamente antes de que se establezca la conexión.
OnServiceEndpointQueryBegin)(void) nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryBegin
void(*
Es una devolución de llamada de la aplicación para marcar la hora de una consulta de directorio de servicio saliente.
OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec) nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryEndWithTimeInfo
void(*
Es una devolución de llamada de la aplicación para entregar valores de tiempo 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 las condiciones de error y estado.

Funciones públicas

SetConnectBeginCallback(OnConnectBegin aConnectBegin)
void
Establece una función de devolución de llamada a la que se le llamará inmediatamente antes de que se establezca 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 está 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 de directorio para un extremo de servicio.
lookup(uint64_t aServiceEp, uint8_t *aControlByte, uint8_t **aDirectoryEntry)
Este método busca información de directorio para un extremo de servicio.
onConnectionClosed(WEAVE_ERROR aError)
void
Este método controla el evento de cierre de conexión informado por 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 de 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 recibió ninguna respuesta del servicio de directorio.
relocate(WEAVE_ERROR aError)
void
Este método vuelve a ubicar la caché del directorio de servicios.
relocate(void)
void
Este método vuelve a ubicar la caché del directorio de servicios.
replaceOrAddCacheEntry(uint16_t port, const char *hostName, uint8_t hostLen, uint64_t serviceEndpointId)
Agrega la entrada de directorio de anulación 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::Profiles::ServiceDirectory::WeaveServiceManager::ConnectRequest

Esta clase representa una sola transacción que administra el administrador de servicios.

Tipos públicos

@303

 @303
Propiedades
kWeave_DefaultSendTimeout

Es la cantidad de milisegundos que se debe recibir 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 que se realiza inmediatamente antes de que se establezca la conexión.

Las aplicaciones pueden usar esta devolución de llamada para observar y, de manera opcional, alterar los argumentos que se pasan a #WeaveConnection::Connect() durante el establecimiento de una conexión de servicio. Se llamará a esta devolución de llamada para la conexión con el 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 del directorio.

OnServiceEndpointQueryBegin

void(* OnServiceEndpointQueryBegin)(void)

Es una devolución de llamada de la aplicación para marcar la hora de una consulta saliente del directorio de servicios.

Se llama cuando estamos a punto de enviar una solicitud de consulta de extremo de servicio. Se usa para coincidir con OnServiceEndpointQueryEnd para compensar el tiempo de vuelo 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 desde una respuesta del directorio de servicios.

Se llama a esta función cuando recibimos información de hora de la respuesta de la consulta del directorio de servicios. Ten en cuenta que esta devolución de llamada solo se realizará si se analiza correctamente una respuesta y se incluye información de hora.

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

RootDirectoryAccessor

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

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

Tienes que comenzar en algún lugar y, con el directorio de servicios, debes comenzar con un directorio stub que contenga la dirección de un servidor al que puedas acceder para obtener todo lo demás. Dado que es probable que la disposición y la procedencia de esta información varíen de un dispositivo a otro, proporcionamos una devolución de llamada de acceso aquí.

Detalles
Parámetros
[out] aDirectory
Es un puntero a un búfer para escribir la información del directorio.
[in] aLength
La longitud del búfer determinado en bytes.
Resultado que se muestra
WEAVE_NO_ERROR si se realiza correctamente; de lo contrario, se abortará el proceso de carga.

StatusHandler

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 sobre los problemas que se producen cuando se intenta ejecutar una solicitud de conexión de una de las siguientes maneras. Puede recibir un informe de estado del servicio o un WEAVE_ERROR generado de forma interna. En cualquier caso, la información se obtiene a través de esta devolución de llamada.

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

Funciones públicas

SetConnectBeginCallback

void SetConnectBeginCallback(
  OnConnectBegin aConnectBegin
)

Establece una función de devolución de llamada a la que se le llamará inmediatamente antes de que se establezca 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.

WeaveServiceManager

 WeaveServiceManager(
  void
)

Este método inicializa la instancia de 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 del extremo de servicio y el objeto de estado de la aplicación que se pasa en el momento de la solicitud como identificadores. Si es la última solicitud de conexión, este método también borra cualquier estado pendiente de conexión del directorio de servicios.

Detalles
Parámetros
[in] aServiceEp
El ID del extremo de servicio de la solicitud que se cancela.
[in] anAppState
Es un puntero al objeto de estado de la app proporcionado a la llamada a connect().

clearCache

void clearCache(
  void
)

Este método borra el estado y la caché del administrador si el estado está 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. En esencia, produce una conexión segura al servicio de Weave, dado un extremo de servicio y un modo de autenticación, o bien falla en el intento.

Solo se puede llamar a este método después de una llamada correcta a init(), y cancel() puede cancelar una solicitud de conexión.

Se puede llamar a este método antes de que la caché local se llene de datos de los datos aprovisionados predeterminados o de un viaje al servicio de directorio. El administrador de servicios solo pondrá en cola la solicitud antes de 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
Es el modo de autenticación que se usará cuando te conectes al servicio de interés.
[in] aAppState
Un puntero a 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 que se invocará en caso de que se produzca un error antes de que se complete la conexión.
[in] aConnectionCompleteHandler
Una devolución de llamada que se invocará en el caso en que se complete la conexión solicitada. Ten en cuenta que la conexión puede fallar con un código de error de Weave.
[in] aConnectTimeoutMsecs
El tiempo de espera de conexión TCP opcional en milisegundos.
[in] aConnectIntf
Es la interfaz opcional a través de la cual se establecerá la conexión.
Resultado que se muestra
WEAVE_NO_ERROR si se ejecuta de forma correcta; de lo contrario, un código de error respectivo.

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 de administrador de servicios. Después de una llamada correcta a este método, los clientes pueden comenzar a llamar a connect(), lookup() y otros métodos.

Detalles
Parámetros
[in] aExchangeMgr
Es un puntero al administrador de intercambios que se usará para todos los intercambios de perfiles de directorios de servicios.
[in] aCache
Es un puntero a un búfer que se puede usar para almacenar en caché la información del directorio.
[in] aCacheLen
Es la extensión de la caché en bytes.
[in] aAccessor
La devolución de llamada, como se define en ServiceDirectory.h, que se invocará para cargar el directorio raíz como punto de partida para la búsqueda de directorios.
[in] aDirAuthMode
Es el modo de autenticación que se usará cuando se comunique con el servicio de directorio.
[in] aServiceEndpointQueryBegin
Es un puntero de función de tipo OnServiceEndpointQueryBegin, al que se llama al comienzo de una solicitud de directorio de servicios y que permite que el código de la aplicación marque la hora si desea usar la sincronización de hora que ofrece el protocolo de directorio de servicios.
[in] aServiceEndpointQueryEndWithTimeInfo
Un puntero de función de tipo OnServiceEndpointQueryEndWithTimeInfo, al que se llama cuando se recibe un directorio de servicios que permite que las aplicaciones se sincronicen con el servicio de Weave mediante los campos de tiempo que se proporcionan en la respuesta. Esta devolución de llamada se realizará después de que el administrador del servicio reciba una respuesta con información de hora. La caché ya debería estar completada 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, de manera opcional, modifiquen los argumentos que se pasan a #WeaveConnection::Connect(). Un valor NULL (el predeterminado) inhabilita la devolución de llamada.
Resultado que se muestra
WEAVE_ERROR_INVALID_ARGUMENT si un 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 de directorio para un extremo de servicio.

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

Nota: HostPortList está vinculado al objeto WeaveServiceManager y permanece válido hasta que se borra la caché del directorio de servicios o hasta que se realiza otra búsqueda en el directorio de servicios.

Detalles
Parámetros
[in] aServiceEp
El identificador del extremo del servicio que se debe buscar.
[out] outHostPortList
Es el puntero a HostPortList que se propagará cuando se realice correctamente la búsqueda de la entrada de directorio. No debe ser NULL.
Valores de retorno
WEAVE_NO_ERROR
si la operación se realiza correctamente; de lo contrario, se muestra 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
El directorio if 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 de directorio para un extremo de servicio.

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

Este método expone los detalles de la implementación interna del directorio de servicios. Las implementaciones deben favorecer el uso de la variante de este método que genera HostPortList.

Detalles
Parámetros
[in] aServiceEp
Es el identificador del extremo de servicio que se buscará.
[out] aControlByte
Es un puntero al lugar donde se escribirá el byte de control de la entrada de directorio.
[out] aDirectoryEntry
Un puntero-puntero que se dirigirá a la entrada del directorio.
Valores de retorno
WEAVE_NO_ERROR
si la operación se realiza correctamente; de lo contrario, se muestra 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
si el directorio contiene un tipo de entrada de directorio desconocido.

onConnectionClosed

void onConnectionClosed(
  WEAVE_ERROR aError
)

Este método controla el evento de cierre de conexión informado por el contexto de intercambio de Weave asociado.

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

onConnectionComplete

void onConnectionComplete(
  WEAVE_ERROR aError
)

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

Hay dos posibilidades. Primero, es posible que la conexión haya fallado, en cuyo caso ya terminamos. De lo contrario, la conexión está completa y lo que queremos hacer es abrir un contexto de intercambio y enviar una consulta de directorio.

Detalles
Parámetros
[in] aError
Un error de Weave si hay algún error durante la configuración de la 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
Es el ID del perfil de este mensaje entrante.
[in] aMsgType
El tipo específico del perfil 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 recibió ninguna respuesta del servicio de directorio.

trasladar

void relocate(
  WEAVE_ERROR aError
)

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

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

Esta versión del método, que se incluye aquí para la retrocompatibilidad, 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)

trasladar

void relocate(
  void
)

Este método vuelve a ubicar la caché del directorio de servicios.

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

También consulta:
relocate(WEAVE_ERROR)

replaceOrAddCacheEntry

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

Agrega la entrada de directorio de anulación de un nombre de host y un ID de puerto al comienzo 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, incluido el estado de las comunicaciones, el estado de la caché y el estado de las solicitudes de conexión pendientes.

Esta versión del método, que se incluye aquí para la 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 de caché y el de cualquier solicitud de conexión pendiente.

Consulta también:
reset(WEAVE_ERROR)

no resolver

void unresolve(
  WEAVE_ERROR aError
)

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

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

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

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

no 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 del directorio de servicios.

Consulta también:
unresolve(WEAVE_ERROR)

~WeaveServiceManager

 ~WeaveServiceManager(
  void
)

Este método destruye la instancia de WeaveServiceManager.