En Google, luchamos por la equidad racial de la comunidad negra. Más información
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

nl :: Tejido:: Perfiles: ServiceDirectory :: WeaveServiceManager

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

El objeto 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. Como tal, oculta las complicaciones inherentes a buscar la entrada de directorio asociada con un punto final de servicio, realizar una búsqueda de DNS en uno o más de los nombres de host que se encuentran allí, intentar conectarse, asegurar la conexión, etc. También puede administrar un 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
}
enumeración
OnConnectBegin )(struct ServiceConnectBeginArgs &args) nl :: Weave :: Profiles :: ServiceDirectory :: WeaveServiceManager :: OnConnectBegin
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 :: OnServiceEndpointQueryBegin
void(*
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(*
Una devolución de llamada de la aplicación para entregar valores de tiempo desde una respuesta de 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 :: Perfiles :: ServiceDirectory :: WeaveServiceManager :: StatusHandler
void(*
Controlador de condiciones de error y estado.

Funciones publicas

SetConnectBeginCallback ( OnConnectBegin aConnectBegin)
void
Configure una función de devolución de llamada para que se llame inmediatamente antes del establecimiento 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 memoria caché del administrador si el estado está en el estado kServiceMgrState_Resolved del terminal, lo que significa que se recibió la respuesta del punto final de Service Directory.
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 punto final de servicio.
lookup (uint64_t aServiceEp, uint8_t *aControlByte, uint8_t **aDirectoryEntry)
Este método busca información de directorio para un punto final de servicio.
onConnectionClosed ( WEAVE_ERROR aError)
void
Este método maneja el evento de conexión cerrada informado por el contexto de intercambio de Weave asociado.
onConnectionComplete ( WEAVE_ERROR aError)
void
Este método maneja el evento de conexión completada para la transacción de consulta de punto final de servicio.
onResponseReceived (uint32_t aProfileId, uint8_t aMsgType, PacketBuffer *aMsg)
void
Este método maneja cualquier mensaje de respuesta en la conversación con el servicio de directorio.
onResponseTimeout (void)
void
Este método maneja el evento de tiempo de espera, en el que no se recibió respuesta del servicio de directorio.
relocate ( WEAVE_ERROR aError)
void
Este método reubica la caché del directorio de servicios.
relocate (void)
void
Este método reubica la caché del directorio de servicios.
replaceOrAddCacheEntry (uint16_t port, const char *hostName, uint8_t hostLen, uint64_t serviceEndpointId)
Agregue la entrada de directorio principal de un nombre de host y una identificación 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 :: ServiceDirectory :: WeaveServiceManager :: ConnectRequest

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

Tipos públicos

@ 303

 @303
Propiedades
kWeave_DefaultSendTimeout

Número 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 realizada inmediatamente antes del establecimiento de la conexión.

Esta devolución de llamada puede ser utilizada por aplicaciones para observar y, opcionalmente, alterar los argumentos pasados ​​a #WeaveConnection :: Connect () durante el curso del establecimiento de una conexión de servicio. Esta devolución de llamada se llamará tanto para la conexión al punto final del servicio de destino como para la conexión al punto final del Directorio de servicios en caso de que deba realizarse una búsqueda en el directorio.

OnServiceEndpointQueryBegin

void(* OnServiceEndpointQueryBegin)(void)

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

Esto se llama cuando estamos a punto de enviar una solicitud de consulta de punto final de servicio. Esto 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 de directorio de servicios.

Esto se llama cuando obtenemos información de la hora de la respuesta a la consulta del directorio de servicios.Tenga en cuenta que esta devolución de llamada solo se produciría si una respuesta se analiza correctamente y se incluye la información de la hora.

Detalles
Parámetros
[in] timeQueryReceiptMsec
El número de milisegundos desde la época POSIX, cuando se recibió la consulta en el lado del servidor.
[in] timeProcessMsec
El número de milisegundos dedicados al procesamiento de 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.

Debe comenzar en alguna parte y con el directorio de servicios debe comenzar con un directorio auxiliar que contiene la dirección de un servidor que puede presionar para acceder a todo lo demás. Dado que es probable que la disposición y procedencia de esta información varíe de un dispositivo a otro, proporcionamos aquí una devolución de llamada de acceso.

Detalles
Parámetros
[out] aDirectory
Un puntero a un búfer para escribir la información del directorio.
[in] aLength
La longitud del búfer dado en bytes.
Devoluciones
WEAVE_NO_ERROR en caso de éxito, de lo contrario, el proceso de carga sería abortado.

StatusHandler

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

Controlador de condiciones de error y estado.

Un usuario del administrador de servicios puede estar informado de los problemas al intentar ejecutar una solicitud de conexión de una de dos formas. Puede recibir un informe de estado del servicio o puede recibir un WEAVE_ERROR generado internamente. En cualquier caso, la información llega a través de esta devolución de llamada.

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

Funciones publicas

SetConnectBeginCallback

void SetConnectBeginCallback(
  OnConnectBegin aConnectBegin
)

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

Detalles
Parámetros
[in] aConnectBegin
Un puntero a 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 .

Tenga 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 dado el ID del punto final del servicio y el objeto de estado de la aplicación pasado 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 de servicios pendiente.

Detalles
Parámetros
[in] aServiceEp
El ID de punto final de servicio de la solicitud que se cancela.
[in] anAppState
Un puntero al objeto de estado de la aplicación proporcionado a la llamada connect () .

limpiar cache

void clearCache(
  void
)

Este método borra el estado y la memoria caché del administrador si el estado está en el estado kServiceMgrState_Resolved del terminal, lo que significa que se recibió la respuesta del punto final de Service Directory.

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 Weave dado un punto final de servicio y un modo de autenticación o muere en el intento.

Este método solo se puede llamar después de una llamada exitosa a init () , y una solicitud de conexión puede cancelarse potencialmente mediante cancel () .

Se puede llamar a este método antes de que la caché local se llene con datos de datos aprovisionados predeterminados o de un viaje al servicio de directorio. El administrador de servicios simplemente pondría en cola la solicitud antes de que se pueda determinar el contenido de la caché.

Detalles
Parámetros
[in] aServiceEp
El identificador de punto final de servicio, como se define en ServiceDirectory.h , para el servicio de interés.
[in] aAuthMode
El modo de autenticación que se utilizará al conectarse 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 argumento.
[in] aStatusHandler
Una devolución de llamada para invocar en el caso de un error que ocurra antes de que se complete la conexión.
[in] aConnectionCompleteHandler
Una devolución de llamada para invocar en el caso de que se complete la conexión solicitada. Tenga en cuenta que la conexión puede fallar con un código de error Weave.
[in] aConnectTimeoutMsecs
El tiempo de espera de conexión TCP opcional en milisegundos.
[in] aConnectIntf
La interfaz opcional a través de la cual se establecerá la conexión.
Devoluciones
WEAVE_NO_ERROR en caso de éxito; de lo contrario, un código de error respectivo.

en eso

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 utilizarlo, se debe inicializar un objeto de 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 intercambio que se utilizará para todos los intercambios de perfiles de directorio de servicios.
[in] aCache
Un puntero a un búfer que se puede utilizar para almacenar en caché la información del directorio.
[in] aCacheLen
La longitud en bytes de la caché.
[in] aAccessor
La devolución de llamada, como se define en ServiceDirectory.h para invocar con el fin de cargar el directorio raíz como punto de partida para la búsqueda de directorio.
[in] aDirAuthMode
El modo de autenticación que se utilizará al hablar con el servicio de directorio.
[in] aServiceEndpointQueryBegin
Un puntero de función de tipo OnServiceEndpointQueryBegin, que se llama al inicio de una solicitud de directorio de servicios y permite que el código de la aplicación marque la hora si desea utilizar la sincronización de hora ofrecida por el protocolo de directorio de servicios.
[in] aServiceEndpointQueryEndWithTimeInfo
Un puntero de función de tipo OnServiceEndpointQueryEndWithTimeInfo, que se llama al recibir un directorio de servicios que permite que las aplicaciones se sincronicen con el servicio Weave utilizando 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 tiempo. La caché ya debería llenarse 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 a las aplicaciones observar y, opcionalmente, alterar los argumentos pasados ​​a #WeaveConnection :: Connect (). Un valor de NULL (el predeterminado) deshabilita la devolución de llamada.
Devoluciones
WEAVE_ERROR_INVALID_ARGUMENT si un argumento de función no es válido; de lo contrario, WEAVE_NO_ERROR .

buscar

WEAVE_ERROR lookup(
  uint64_t aServiceEp,
  HostPortList *outHostPortList
)

Este método busca información de directorio para un punto final de servicio.

Si el directorio de servicios se ha resuelto, es decir, si ha habido una operación connect () exitosa, este método completará el objeto HostPortList proporcionado.

Nota: HostPortList está vinculado al objeto WeaveServiceManager ; sigue siendo válido hasta que se borra la memoria 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 punto final de servicio que se buscará.
[out] outHostPortList
El puntero a HostPortList que se completará en la búsqueda exitosa de la entrada del directorio. No debe ser nulo.
Valores devueltos
WEAVE_NO_ERROR
sobre el éxito; de lo contrario, un código de error respectivo.
WEAVE_ERROR_INVALID_SERVICE_EP
si no se encuentra el punto final de servicio dado.
WEAVE_ERROR_INVALID_DIRECTORY_ENTRY_TYPE
si el directorio contiene un tipo de entrada de directorio desconocido.

buscar

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

Este método busca información de directorio para un punto final de servicio.

Si el directorio de servicios se ha resuelto, es decir, si se ha realizado una operación connect () con éxito, este método devolverá una entrada de directorio con un identificador de punto final de servicio.

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

Detalles
Parámetros
[in] aServiceEp
El identificador del punto final de servicio que se buscará.
[out] aControlByte
Un puntero al lugar para escribir el byte de control de entrada del directorio.
[out] aDirectoryEntry
Un puntero-puntero que se dirigirá a la entrada del directorio.
Valores devueltos
WEAVE_NO_ERROR
sobre el éxito; de lo contrario, un código de error respectivo.
WEAVE_ERROR_INVALID_SERVICE_EP
si no se encuentra el punto final de servicio dado.
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 maneja el evento de conexión cerrada 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 cierra esta conexión.

onConnectionComplete

void onConnectionComplete(
  WEAVE_ERROR aError
)

Este método maneja el evento de conexión completada para la transacción de consulta de punto final de servicio.

Hay un par de posibilidades. Primero, la conexión podría haber fallado, en cuyo caso hemos terminado. De lo contrario, la conexión está realmente 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 maneja cualquier mensaje de respuesta en la conversación con el servicio de directorio.

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

onResponseTimeout

void onResponseTimeout(
  void
)

Este método maneja el evento de tiempo de espera, en el que no se recibió respuesta del servicio de directorio.

trasladarse

void relocate(
  WEAVE_ERROR aError
)

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

Cuando un punto final de servicio devuelve un informe de estado con el código de estado kStatus_Relocated, la aplicación podría llamar a unresolve () para limpiar el caché y cancelar las solicitudes de conexión. Este método simplifica el manejo de errores al llamar a unresolve () la primera vez y reset () si el problema aún no se ha resuelto.

Esta versión del método, aquí para compatibilidad con versiones anteriores, toma y registra un error y luego llama a relocate (void) .

Detalles
Parámetros
[in] aError
un error para registrar.
Ver también:
reubicar (anular)

trasladarse

void relocate(
  void
)

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

Cuando un punto final de servicio devuelve un informe de estado con el código de estado kStatus_Relocated, la aplicación podría llamar a unresolve () para limpiar el caché y cancelar las solicitudes de conexión. Este método simplifica el manejo de errores al llamar a unresolve () la primera vez y reset () si el problema aún no se ha resuelto.

Ver también:
reubicar (WEAVE_ERROR)

replaceOrAddCacheEntry

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

Agregue la entrada de directorio principal de un nombre de host y una identificación de puerto al principio de la lista de directorios.

Reiniciar

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 cualquier solicitud de conexión pendiente.

Esta versión del método, aquí para compatibilidad con versiones anteriores, toma y registra un error y luego llama a reset (void) .

Detalles
Parámetros
[in] aError
El error que desencadenó esta operación.
Ver también:
reiniciar (anular)

Reiniciar

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, incluido el estado de las comunicaciones, el estado de la caché y el estado de cualquier solicitud de conexión pendiente.

Ver también:
restablecer (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 la memoria caché del directorio de servicios para que en la próxima solicitud el administrador de servicios emita una consulta del directorio de servicios.

Esta versión del método, aquí para compatibilidad con versiones anteriores, toma y registra un error y luego llama a unresolve (void) .

Detalles
Parámetros
[in] aError
El error que desencadenó esta operación.
Ver también:
sin resolver (vacío)

no resolver

void unresolve(
  void
)

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

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

Ver también:
anular la resolución (WEAVE_ERROR)

~ WeaveServiceManager

 ~WeaveServiceManager(
  void
)

Este método destruye la instancia de WeaveServiceManager .