нл:: Переплетение:: Профили:: Каталог Сервисов:: WeaveServiceManager
#include <src/lib/profiles/service-directory/ServiceDirectory.h>
Объект-менеджер для каталога службы Weave.
Краткое содержание
Менеджер службы Weave — это основной интерфейс приложений к службе каталогов. Таким образом, он скрывает сложности, связанные с поиском записи каталога, связанной с конечной точкой службы, выполнением поиска DNS по одному или нескольким найденным там именам хостов, попыткой подключения, защитой соединения и т. д. Он также может управлять кэшем информации каталога служб.
Конструкторы и деструкторы | |
---|---|
WeaveServiceManager (void) Этот метод инициализирует экземпляр WeaveServiceManager . | |
~WeaveServiceManager (void) Этот метод разрушает экземпляр WeaveServiceManager . |
Публичные типы | |
---|---|
@303 { | перечисление |
OnConnectBegin )(struct ServiceConnectBeginArgs &args) | nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnConnectBeginvoid(* Обратный вызов приложения, выполняемый непосредственно перед установлением соединения. |
OnServiceEndpointQueryBegin )(void) | nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryBeginvoid(* Обратный вызов приложения для отметки времени исходящего запроса к каталогу служб. |
OnServiceEndpointQueryEndWithTimeInfo )(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec) | nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryEndWithTimeInfovoid(* Обратный вызов приложения для доставки значений времени из ответа каталога служб. |
RootDirectoryAccessor )(uint8_t *aDirectory, uint16_t aLength) | nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::RootDirectoryAccessorWEAVE_ERROR (* Функция доступа к информации о корневом каталоге. |
StatusHandler )(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport) | nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::StatusHandlervoid(* Обработчик ошибок и состояний состояния. |
Общественные функции | |
---|---|
SetConnectBeginCallback ( OnConnectBegin aConnectBegin) | void Установите функцию обратного вызова, которая будет вызываться непосредственно перед установлением соединения. |
cancel (uint64_t aServiceEp, void *aAppState) | void Этот метод отменяет запрос на соединение. |
clearCache (void) | void Этот метод очищает состояние и кэш менеджера, если состояние находится в терминальном состоянии kServiceMgrState_Resolved, что означает, что был получен ответ от конечной точки Service Directory. |
connect (uint64_t aServiceEp, WeaveAuthMode aAuthMode, void *aAppState, StatusHandler aStatusHandler, WeaveConnection::ConnectionCompleteFunct aConnectionCompleteHandler, const uint32_t aConnectTimeoutMsecs, const InterfaceId aConnectIntf) | Этот метод запрашивает подключение к сервису Weave. |
init ( WeaveExchangeManager *aExchangeMgr, uint8_t *aCache, uint16_t aCacheLen, RootDirectoryAccessor aAccessor, WeaveAuthMode aDirAuthMode, OnServiceEndpointQueryBegin aServiceEndpointQueryBegin, OnServiceEndpointQueryEndWithTimeInfo aServiceEndpointQueryEndWithTimeInfo, OnConnectBegin aConnectBegin) | Этот метод инициализирует объект диспетчера служб. |
lookup (uint64_t aServiceEp, HostPortList *outHostPortList) | Этот метод ищет информацию о каталоге для конечной точки службы. |
lookup (uint64_t aServiceEp, uint8_t *aControlByte, uint8_t **aDirectoryEntry) | Этот метод ищет информацию о каталоге для конечной точки службы. |
onConnectionClosed ( WEAVE_ERROR aError) | void Этот метод обрабатывает событие закрытия соединения, о котором сообщает связанный контекст обмена Weave. |
onConnectionComplete ( WEAVE_ERROR aError) | void Этот метод обрабатывает событие завершения подключения для транзакции запроса конечной точки службы. |
onResponseReceived (uint32_t aProfileId, uint8_t aMsgType, PacketBuffer *aMsg) | void Этот метод обрабатывает любое ответное сообщение в диалоге со службой каталогов. |
onResponseTimeout (void) | void Этот метод обрабатывает событие тайм-аута, при котором от службы каталогов не было получено ответа. |
relocate ( WEAVE_ERROR aError) | void Этот метод перемещает кэш каталога службы. |
relocate (void) | void Этот метод перемещает кэш каталога службы. |
replaceOrAddCacheEntry (uint16_t port, const char *hostName, uint8_t hostLen, uint64_t serviceEndpointId) | Добавьте переопределяющую запись каталога с именем хоста и идентификатором порта в начале списка каталогов. |
reset ( WEAVE_ERROR aError) | void Этот метод возвращает диспетчер служб в исходное состояние. |
reset (void) | void Этот метод возвращает диспетчер служб в исходное состояние. |
unresolve ( WEAVE_ERROR aError) | void Этот метод делает недействительным кэш каталога службы. |
unresolve (void) | void Этот метод делает недействительным кэш каталога службы. |
Классы | |
---|---|
nl:: Weave:: Profiles:: ServiceDirectory:: WeaveServiceManager:: ConnectRequest | Этот класс представляет одну транзакцию, управляемую менеджером служб. |
Публичные типы
@303
@303
ОнКоннектБегин
void(* OnConnectBegin)(struct ServiceConnectBeginArgs &args)
Обратный вызов приложения, выполняемый непосредственно перед установлением соединения.
Этот обратный вызов может использоваться приложениями для наблюдения и, при необходимости, изменения аргументов, передаваемых в #WeaveConnection::Connect() в ходе установления служебного соединения. Этот обратный вызов будет вызываться как для подключения к целевой конечной точке службы, так и для подключения к конечной точке каталога служб в случае, если необходимо выполнить поиск в каталоге.
Онсервицеендпоинткуерибегин
void(* OnServiceEndpointQueryBegin)(void)
Обратный вызов приложения для отметки времени исходящего запроса к каталогу служб.
Это вызывается, когда мы собираемся отправить запрос на запрос конечной точки службы. Используется для сопоставления с OnServiceEndpointQueryEnd для компенсации времени полета сообщения.
Онсервицеендпоинткуериендвистимеинфо
void(* OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec)
Обратный вызов приложения для доставки значений времени из ответа каталога служб.
Это вызывается, когда мы получаем информацию о времени из ответа на запрос каталога служб. Обратите внимание, что этот обратный вызов произойдет только в том случае, если ответ успешно проанализирован и включена информация о времени.
Подробности | |||||
---|---|---|---|---|---|
Параметры |
|
RootDirectoryAccessor
WEAVE_ERROR(* RootDirectoryAccessor)(uint8_t *aDirectory, uint16_t aLength)
Функция доступа к информации о корневом каталоге.
Вам нужно с чего-то начать, и с каталога службы вы должны начать с каталога-заглушки, содержащего адрес сервера, к которому вы можете обратиться, чтобы получить доступ ко всему остальному. Поскольку расположение и происхождение этой информации могут различаться от устройства к устройству, здесь мы предоставляем обратный вызов средства доступа.
Подробности | |||||
---|---|---|---|---|---|
Параметры |
| ||||
Возврат | WEAVE_NO_ERROR в случае успеха, иначе процесс загрузки будет прерван. |
Обработчик статуса
void(* StatusHandler)(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport)
Обработчик ошибок и состояний состояния.
Пользователь диспетчера служб может быть проинформирован о проблемах при попытке выполнить запрос на соединение одним из двух способов. Он может получить отчет о состоянии от службы или получить внутренне сгенерированное сообщение WEAVE_ERROR. В любом случае информация поступает через этот обратный вызов.
Подробности | |||||||
---|---|---|---|---|---|---|---|
Параметры |
|
Общественные функции
SetConnectBeginCallback
void SetConnectBeginCallback( OnConnectBegin aConnectBegin )
Установите функцию обратного вызова, которая будет вызываться непосредственно перед установлением соединения.
Подробности | |||
---|---|---|---|
Параметры |
|
WeaveServiceManager
WeaveServiceManager( void )
Этот метод инициализирует экземпляр WeaveServiceManager .
Обратите внимание, что для дальнейшей инициализации этого экземпляра необходимо вызвать init() .
отмена
void cancel( uint64_t aServiceEp, void *aAppState )
Этот метод отменяет запрос на соединение.
Этот метод отменяет запрос на подключение, учитывая идентификатор конечной точки службы и объект состояния приложения, переданные во время запроса в качестве идентификаторов. Если это последний запрос на подключение, этот метод также очищает все ожидающие состояния подключения к каталогу служб.
Подробности | |||||
---|---|---|---|---|---|
Параметры |
|
ОчиститьКэш
void clearCache( void )
Этот метод очищает состояние и кэш менеджера, если состояние находится в терминальном состоянии kServiceMgrState_Resolved, что означает, что был получен ответ от конечной точки Service Directory.
соединять
WEAVE_ERROR connect( uint64_t aServiceEp, WeaveAuthMode aAuthMode, void *aAppState, StatusHandler aStatusHandler, WeaveConnection::ConnectionCompleteFunct aConnectionCompleteHandler, const uint32_t aConnectTimeoutMsecs, const InterfaceId aConnectIntf )
Этот метод запрашивает подключение к сервису Weave.
Это вызов соединения верхнего уровня. По сути, он создает безопасное соединение со службой Weave с учетом конечной точки службы и режима аутентификации или завершает попытку.
Этот метод можно вызвать только после успешного вызова init() , а запрос на соединение потенциально может быть отменен с помощью cancel() .
Этот метод можно вызвать до того, как локальный кэш будет заполнен данными либо из подготовленных по умолчанию данных, либо из обращения к службе каталогов. Диспетчер служб просто поставит запрос в очередь, прежде чем можно будет определить содержимое кэша.
Подробности | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Параметры |
| ||||||||||||||
Возврат | WEAVE_NO_ERROR в случае успеха; в противном случае соответствующий код ошибки. |
инициализировать
WEAVE_ERROR init( WeaveExchangeManager *aExchangeMgr, uint8_t *aCache, uint16_t aCacheLen, RootDirectoryAccessor aAccessor, WeaveAuthMode aDirAuthMode, OnServiceEndpointQueryBegin aServiceEndpointQueryBegin, OnServiceEndpointQueryEndWithTimeInfo aServiceEndpointQueryEndWithTimeInfo, OnConnectBegin aConnectBegin )
Этот метод инициализирует объект диспетчера служб.
Для использования объект диспетчера служб должен быть инициализирован. После успешного вызова этого метода клиенты могут начать вызывать Connect() , Lookup() и другие методы.
Подробности | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Параметры |
| ||||||||||||||||
Возврат | WEAVE_ERROR_INVALID_ARGUMENT , если аргумент функции недействителен; в противном случае WEAVE_NO_ERROR . |
искать
WEAVE_ERROR lookup( uint64_t aServiceEp, HostPortList *outHostPortList )
Этот метод ищет информацию о каталоге для конечной точки службы.
Если каталог службы был разрешен, т. е. если была успешная операция подключения() , то этот метод заполнит предоставленный объект HostPortList .
Примечание. HostPortList привязан к объекту WeaveServiceManager ; он остается действительным до тех пор, пока кеш каталога службы не будет очищен или пока не произойдет другой поиск в каталоге службы.
Подробности | |||||||
---|---|---|---|---|---|---|---|
Параметры |
| ||||||
Возвращаемые значения |
|
искать
WEAVE_ERROR lookup( uint64_t aServiceEp, uint8_t *aControlByte, uint8_t **aDirectoryEntry )
Этот метод ищет информацию о каталоге для конечной точки службы.
Если каталог службы был разрешен, т. е. если была успешная операция подключения() , то этот метод вернет запись каталога с идентификатором конечной точки службы.
Этот метод раскрывает детали внутренней реализации каталога службы; реализации должны настоятельно отдавать предпочтение варианту этого метода, который генерирует HostPortList .
Подробности | |||||||
---|---|---|---|---|---|---|---|
Параметры |
| ||||||
Возвращаемые значения |
|
onConnectionClosed
void onConnectionClosed( WEAVE_ERROR aError )
Этот метод обрабатывает событие закрытия соединения, о котором сообщает связанный контекст обмена Weave.
Подробности | |||
---|---|---|---|
Параметры |
|
onConnectionComplete
void onConnectionComplete( WEAVE_ERROR aError )
Этот метод обрабатывает событие завершения подключения для транзакции запроса конечной точки службы.
Есть несколько возможностей. Во-первых, соединение могло прерваться, и в этом случае мы закончили. В противном случае соединение фактически завершено, и нам нужно открыть контекст обмена и отправить запрос к каталогу.
Подробности | |||
---|---|---|---|
Параметры |
|
onResponseReceived
void onResponseReceived( uint32_t aProfileId, uint8_t aMsgType, PacketBuffer *aMsg )
Этот метод обрабатывает любое ответное сообщение в диалоге со службой каталогов.
Подробности | |||||||
---|---|---|---|---|---|---|---|
Параметры |
|
onResponseTimeout
void onResponseTimeout( void )
Этот метод обрабатывает событие тайм-аута, при котором от службы каталогов не было получено ответа.
переместить
void relocate( WEAVE_ERROR aError )
Этот метод перемещает кэш каталога службы.
Когда конечная точка службы возвращает отчет о состоянии с кодом состояния kStatus_Relocated, приложение может вызвать unsolve() , чтобы очистить кеш и отменить запросы на подключение. Этот метод упрощает обработку ошибок, вызывая функцию unsolve() в первый раз и функцию сброса(), если проблема еще не решена.
Эта версия метода (здесь для обратной совместимости) принимает и регистрирует ошибку, а затем вызывает relocate(void) .
Подробности | |||
---|---|---|---|
Параметры |
|
переместить (аннулировать)
переместить
void relocate( void )
Этот метод перемещает кэш каталога службы.
Когда конечная точка службы возвращает отчет о состоянии с кодом состояния kStatus_Relocated, приложение может вызвать unsolve(), чтобы очистить кеш и отменить запросы на подключение. Этот метод упрощает обработку ошибок, вызывая функцию unsolve() в первый раз и функцию сброса(), если проблема еще не решена.
См. также:переместить (WEAVE_ERROR)
заменитьОрдадкэшеентри
WEAVE_ERROR replaceOrAddCacheEntry( uint16_t port, const char *hostName, uint8_t hostLen, uint64_t serviceEndpointId )
Добавьте переопределяющую запись каталога с именем хоста и идентификатором порта в начале списка каталогов.
перезагрузить
void reset( WEAVE_ERROR aError )
Этот метод возвращает диспетчер служб в исходное состояние.
Этот метод сбрасывает все состояния диспетчера служб, включая состояние связи, состояние кэша и состояние любых ожидающих запросов на подключение.
Эта версия метода (здесь для обратной совместимости) принимает и регистрирует ошибку, а затем вызывает сброс(void) .
Подробности | |||
---|---|---|---|
Параметры |
|
сброс (недействительный)
перезагрузить
void reset( void )
Этот метод возвращает диспетчер служб в исходное состояние.
Этот метод сбрасывает все состояния диспетчера служб, включая состояние связи, состояние кэша и состояние любых ожидающих запросов на подключение.
См. также:сброс (WEAVE_ERROR)
не решить
void unresolve( WEAVE_ERROR aError )
Этот метод делает недействительным кэш каталога службы.
Этот метод устанавливает состояние кэша каталога служб, чтобы при следующем запросе диспетчер служб выдавал запрос к каталогу служб.
Эта версия метода (здесь для обратной совместимости) принимает и регистрирует ошибку, а затем вызывает unresolve(void) .
Подробности | |||
---|---|---|---|
Параметры |
|
не разрешить (недействительно)
не решить
void unresolve( void )
Этот метод делает недействительным кэш каталога службы.
Этот метод устанавливает состояние кэша каталога служб, чтобы при следующем запросе диспетчер служб выдавал запрос к каталогу служб.
См. также:не разрешить (WEAVE_ERROR)
~WeaveServiceManager
~WeaveServiceManager( void )
Этот метод разрушает экземпляр WeaveServiceManager .