nl:: Weave:: Profiles:: 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 de las aplicaciones al servicio de directorio. Así, oculta las complicaciones inherentes a la búsqueda de la entrada del directorio asociada con un extremo de servicio, realizar búsquedas de DNS en uno o más nombres de host que se encuentran allí, intentar conectarse, proteger la conexión, etc. 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 WeaveServiceManager.
|
Tipos públicos |
|
---|---|
@303{
|
enum |
OnConnectBegin)(struct ServiceConnectBeginArgs &args)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnConnectBeginvoid(*
Una devolución de llamada a la aplicación realizada inmediatamente antes del establecimiento de la conexión. |
OnServiceEndpointQueryBegin)(void)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryBeginvoid(*
Una devolución de llamada de la aplicación para marcar la hora de una consulta saliente del directorio de servicios. |
OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryEndWithTimeInfovoid(*
Una devolución de llamada de la aplicación para entregar valores de tiempo desde una respuesta del directorio de servicios. |
RootDirectoryAccessor)(uint8_t *aDirectory, uint16_t aLength)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::RootDirectoryAccessor Una función de descriptor de acceso para la información del directorio raíz. |
StatusHandler)(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::StatusHandlervoid(*
Un controlador para las 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 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 caché del administrador si 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 de directorio de un extremo de servicio.
|
lookup(uint64_t aServiceEp, uint8_t *aControlByte, uint8_t **aDirectoryEntry)
|
Este método busca información de directorio de 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 recibió 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 de directorio anulada de un nombre de host y un ID de puerto al comienzo 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:: |
Esta clase representa una sola transacción administrada por 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 a la aplicación realizada inmediatamente antes del establecimiento de la conexión.
Las aplicaciones pueden usar esta devolución de llamada para observar y, opcionalmente, modificar los argumentos pasados a #WeaveConnection::Connect() durante el proceso de establecimiento de una conexión de servicio. Se llamará a esta devolución de llamada para la conexión al extremo del servicio de destino y la conexión con el extremo del Directorio de servicios en caso de que se deba realizar 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 saliente del directorio de servicios.
Se llama a este método cuando estamos a punto de enviar una solicitud de consulta del extremo del servicio. Esto se usa para coincidir con OnServiceEndpointQueryEnd a fin de 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 este método cuando obtenemos información de tiempo de la respuesta de la consulta del directorio de servicios. Ten en cuenta que esta devolución de llamada solo se realizará si una respuesta se analiza correctamente y se incluye información de tiempo.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
RootDirectoryAccessor
WEAVE_ERROR(* RootDirectoryAccessor)(uint8_t *aDirectory, uint16_t aLength)
Una función de descriptor de acceso para la información del directorio raíz.
Debes empezar en algún lugar y con el directorio de servicio debes comenzar con un directorio stub que contiene la dirección de un servidor al que puedas acceder para todo lo demás. Debido a que la disposición y el origen de esta información probablemente varíen de un dispositivo a otro, proporcionamos una devolución de llamada de descriptor de acceso aquí.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
||||
Qué muestra |
WEAVE_NO_ERROR si la operación fue exitosa; de lo contrario, el proceso de carga se anularía.
|
StatusHandler
void(* StatusHandler)(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport)
Un controlador para las condiciones de error y estado.
Un usuario del administrador del servicio puede ser informado de los problemas al intentar ejecutar una solicitud de conexión de una de dos maneras. Puede recibir un informe de estado del servicio o un WEAVE_ERROR generado internamente. En cualquier caso, la información se obtiene mediante esta devolución de llamada.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
Funciones públicas
SetConnectBeginCallback
void SetConnectBeginCallback( OnConnectBegin aConnectBegin )
Configura una función de devolución de llamada para que se llame inmediatamente antes del establecimiento de la conexión.
Detalles | |||
---|---|---|---|
Parámetros |
|
WeaveServiceManager
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 a partir del ID del 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 pendiente del directorio de servicios.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
clearCache
void clearCache( void )
Este método borra el estado y la caché del administrador si 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
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, o bloques que lo prueban.
Solo se puede llamar a este método después de realizar una llamada exitosa a init(), y es posible que cancel() cancele una solicitud de conexión.
Se puede llamar a este método antes de que la caché local se llene con datos de los datos aprovisionados predeterminados o de un viaje al servicio de directorio. El administrador de servicios coloca la solicitud en cola antes de que se pueda determinar el contenido de la caché.
Detalles | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||||
Qué muestra |
WEAVE_NO_ERROR si la operación es exitosa; de lo contrario, se muestra un 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 usarlo, se debe inicializar un objeto del administrador de servicios. Después de realizar una llamada exitosa a este método, los clientes pueden comenzar a llamar a connect(), lookup() y otros métodos.
Detalles | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||||||
Qué muestra |
WEAVE_ERROR_INVALID_ARGUMENT si el argumento de una 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 de un extremo de servicio.
Si se resolvió el directorio de servicio, es decir, si se realizó una operación connect() correcta, este método propagará el objeto HostPortList proporcionado.
Nota: HostPortList está vinculado al objeto WeaveServiceManager; sigue siendo válido hasta que se borre la caché del directorio de servicios o hasta que se realice otra búsqueda en el directorio de servicios.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores que se muestran |
|
lookup
WEAVE_ERROR lookup( uint64_t aServiceEp, uint8_t *aControlByte, uint8_t **aDirectoryEntry )
Este método busca información de directorio de un extremo de servicio.
Si se resolvió el directorio de servicios, es decir, si la operación connect() se realizó correctamente, este método mostrará una entrada de directorio con un identificador de extremo del servicio.
Este método expone los detalles de la implementación interna del directorio de servicio. Las implementaciones deben favorecer el uso de la variante de este método que genera la HostPortList.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores que se muestran |
|
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 |
|
onConnectionComplete
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, 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 |
|
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 |
|
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.
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_Reassigned, 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() la primera vez y a reset() si el problema aún no se resolvió.
Esta versión del método (aquí para la retrocompatibilidad) toma y registra un error y, luego, llama a relocate(void) .
Detalles | |||
---|---|---|---|
Parámetros |
|
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_Reassigned, 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() la primera vez y a reset() si el problema aún no se resolvió.
Consulta también:relocate(WEAVE_ERROR)
replaceOrAddCacheEntry
WEAVE_ERROR replaceOrAddCacheEntry( uint16_t port, const char *hostName, uint8_t hostLen, uint64_t serviceEndpointId )
Agrega la entrada de directorio anulada 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, incluidos el estado de comunicaciones, el estado de caché y el estado de cualquier solicitud de conexión pendiente.
Esta versión del método (aquí para la retrocompatibilidad) toma y registra un error y, luego, llama a reset(void) .
Detalles | |||
---|---|---|---|
Parámetros |
|
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 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 de servicios emita una consulta en el directorio de servicios.
Esta versión del método (aquí para la retrocompatibilidad) toma y registra un error y, luego, llama a unresolve(void) .
Detalles | |||
---|---|---|---|
Parámetros |
|
unresolve(void)
no resolver
void unresolve( void )
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 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 WeaveServiceManager.