нл:: Переплетение:: Профили:: Каталог Сервисов:: WeaveServiceManager

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

Объект-менеджер для каталога службы Weave.

Краткое содержание

Менеджер службы Weave — это основной интерфейс приложений к службе каталогов. Таким образом, он скрывает сложности, связанные с поиском записи каталога, связанной с конечной точкой службы, выполнением поиска DNS по одному или нескольким найденным там именам хостов, попыткой подключения, защитой соединения и т. д. Он также может управлять кэшем информации каталога служб.

Конструкторы и деструкторы

WeaveServiceManager (void)
Этот метод инициализирует экземпляр WeaveServiceManager .
~WeaveServiceManager (void)
Этот метод разрушает экземпляр WeaveServiceManager .

Публичные типы

@303 {
kWeave_DefaultSendTimeout = 15000
}
перечисление
OnConnectBegin )(struct ServiceConnectBeginArgs &args) nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnConnectBegin
void(*
Обратный вызов приложения, выполняемый непосредственно перед установлением соединения.
OnServiceEndpointQueryBegin )(void) nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryBegin
void(*
Обратный вызов приложения для отметки времени исходящего запроса к каталогу служб.
OnServiceEndpointQueryEndWithTimeInfo )(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec) nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryEndWithTimeInfo
void(*
Обратный вызов приложения для доставки значений времени из ответа каталога служб.
RootDirectoryAccessor )(uint8_t *aDirectory, uint16_t aLength) nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::RootDirectoryAccessor
Функция доступа к информации о корневом каталоге.
StatusHandler )(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport) nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::StatusHandler
void(*
Обработчик ошибок и состояний состояния.

Общественные функции

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
Характеристики
kWeave_DefaultSendTimeout

Количество миллисекунд, в течение которых должен быть получен ответ на запрос каталога, прежде чем истечет время ожидания контекста обмена.

ОнКоннектБегин

void(* OnConnectBegin)(struct ServiceConnectBeginArgs &args)

Обратный вызов приложения, выполняемый непосредственно перед установлением соединения.

Этот обратный вызов может использоваться приложениями для наблюдения и, при необходимости, изменения аргументов, передаваемых в #WeaveConnection::Connect() в ходе установления служебного соединения. Этот обратный вызов будет вызываться как для подключения к целевой конечной точке службы, так и для подключения к конечной точке каталога служб в случае, если необходимо выполнить поиск в каталоге.

Онсервицеендпоинткуерибегин

void(* OnServiceEndpointQueryBegin)(void)

Обратный вызов приложения для отметки времени исходящего запроса к каталогу служб.

Это вызывается, когда мы собираемся отправить запрос на запрос конечной точки службы. Используется для сопоставления с OnServiceEndpointQueryEnd для компенсации времени полета сообщения.

Онсервицеендпоинткуериендвистимеинфо

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

Обратный вызов приложения для доставки значений времени из ответа каталога служб.

Это вызывается, когда мы получаем информацию о времени из ответа на запрос каталога служб. Обратите внимание, что этот обратный вызов произойдет только в том случае, если ответ успешно проанализирован и включена информация о времени.

Подробности
Параметры
[in] timeQueryReceiptMsec
Количество миллисекунд с эпохи POSIX, когда запрос был получен на стороне сервера.
[in] timeProcessMsec
Количество мс, затраченное на обработку этого запроса.

RootDirectoryAccessor

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

Функция доступа к информации о корневом каталоге.

Вам нужно с чего-то начать, и с каталога службы вы должны начать с каталога-заглушки, содержащего адрес сервера, к которому вы можете обратиться, чтобы получить доступ ко всему остальному. Поскольку расположение и происхождение этой информации могут различаться от устройства к устройству, здесь мы предоставляем обратный вызов средства доступа.

Подробности
Параметры
[out] aDirectory
Указатель на буфер для записи информации о каталоге.
[in] aLength
Длина данного буфера в байтах.
Возврат
WEAVE_NO_ERROR в случае успеха, иначе процесс загрузки будет прерван.

Обработчик статуса

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

Обработчик ошибок и состояний состояния.

Пользователь диспетчера служб может быть проинформирован о проблемах при попытке выполнить запрос на соединение одним из двух способов. Он может получить отчет о состоянии от службы или получить внутренне сгенерированное сообщение WEAVE_ERROR. В любом случае информация поступает через этот обратный вызов.

Подробности
Параметры
[in] anAppState
Указатель на объект приложения, который был передан соответствующему вызову conect().
[in] anError
Код ошибки Weave, указывающий на то, что ошибка произошла в процессе попытки выполнить запрос на подключение. Это должно быть WEAVE_NO_ERROR в случае, когда не возникло ошибок и доступен отчет о состоянии.
[in] aStatusReport
Указатель на отчет о состоянии, созданный удаленной службой каталогов. Этот аргумент должен иметь значение NULL в случае, если отчет о состоянии не был получен и в предыдущем аргументе передается внутренняя ошибка.

Общественные функции

SetConnectBeginCallback

void SetConnectBeginCallback(
  OnConnectBegin aConnectBegin
)

Установите функцию обратного вызова, которая будет вызываться непосредственно перед установлением соединения.

Подробности
Параметры
[in] aConnectBegin
Указатель на функцию обратного вызова. Значение NULL отключает обратный вызов.

WeaveServiceManager

 WeaveServiceManager(
  void
)

Этот метод инициализирует экземпляр WeaveServiceManager .

Обратите внимание, что для дальнейшей инициализации этого экземпляра необходимо вызвать init() .

отмена

void cancel(
  uint64_t aServiceEp,
  void *aAppState
)

Этот метод отменяет запрос на соединение.

Этот метод отменяет запрос на подключение, учитывая идентификатор конечной точки службы и объект состояния приложения, переданные во время запроса в качестве идентификаторов. Если это последний запрос на подключение, этот метод также очищает все ожидающие состояния подключения к каталогу служб.

Подробности
Параметры
[in] aServiceEp
Идентификатор конечной точки службы отменяемого запроса.
[in] anAppState
Указатель на объект состояния приложения, передаваемый при вызове Connect() .

ОчиститьКэш

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() .

Этот метод можно вызвать до того, как локальный кэш будет заполнен данными либо из подготовленных по умолчанию данных, либо из обращения к службе каталогов. Диспетчер служб просто поставит запрос в очередь, прежде чем можно будет определить содержимое кэша.

Подробности
Параметры
[in] aServiceEp
Идентификатор конечной точки службы, определенный в ServiceDirectory.h , для интересующей службы.
[in] aAuthMode
Режим аутентификации, используемый при подключении к интересующей услуге.
[in] aAppState
Указатель на объект состояния приложения, передаваемый функциям обратного вызова в качестве аргумента.
[in] aStatusHandler
Обратный вызов, вызываемый в случае ошибки, возникшей до завершения соединения.
[in] aConnectionCompleteHandler
Обратный вызов, вызываемый в случае завершения запрошенного соединения. Обратите внимание, что соединение может завершиться неудачно с кодом ошибки Weave.
[in] aConnectTimeoutMsecs
Необязательный тайм-аут TCP-соединения в миллисекундах.
[in] aConnectIntf
Дополнительный интерфейс, через который должно быть установлено соединение.
Возврат
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() и другие методы.

Подробности
Параметры
[in] aExchangeMgr
Указатель на диспетчер обмена, используемый для всех обменов профилями каталогов служб.
[in] aCache
Указатель на буфер, который можно использовать для кэширования информации о каталоге.
[in] aCacheLen
Длина кэша в байтах.
[in] aAccessor
Обратный вызов, определенный в ServiceDirectory.h , который необходимо вызвать для загрузки корневого каталога в качестве отправной точки для поиска каталога.
[in] aDirAuthMode
Режим аутентификации, используемый при общении со службой каталогов.
[in] aServiceEndpointQueryBegin
Указатель функции типа OnServiceEndpointQueryBegin, который вызывается в начале запроса каталога службы и позволяет коду приложения отмечать время, если оно желает использовать синхронизацию времени, предлагаемую протоколом каталога службы.
[in] aServiceEndpointQueryEndWithTimeInfo
Указатель функции типа OnServiceEndpointQueryEndWithTimeInfo, вызываемый при получении каталога службы, который позволяет приложениям синхронизироваться со службой Weave, используя поля времени, указанные в ответе. Этот обратный вызов будет выполнен после того, как менеджер службы получит ответ с информацией о времени. Кэш уже должен быть успешно заполнен до выполнения обратного вызова.
[in] aConnectBegin
Указатель функции типа OnConnectBegin, который вызывается непосредственно перед установлением соединения и позволяет приложениям наблюдать и при необходимости изменять аргументы, передаваемые в #WeaveConnection::Connect(). Значение NULL (по умолчанию) отключает обратный вызов.
Возврат
WEAVE_ERROR_INVALID_ARGUMENT , если аргумент функции недействителен; в противном случае WEAVE_NO_ERROR .

искать

WEAVE_ERROR lookup(
  uint64_t aServiceEp,
  HostPortList *outHostPortList
)

Этот метод ищет информацию о каталоге для конечной точки службы.

Если каталог службы был разрешен, т. е. если была успешная операция подключения() , то этот метод заполнит предоставленный объект HostPortList .

Примечание. HostPortList привязан к объекту WeaveServiceManager ; он остается действительным до тех пор, пока кеш каталога службы не будет очищен или пока не произойдет другой поиск в каталоге службы.

Подробности
Параметры
[in] aServiceEp
Идентификатор конечной точки службы для поиска.
[out] outHostPortList
Указатель на HostPortList , который будет заполнен при успешном поиске записи каталога. Не должно быть НУЛЕМ.
Возвращаемые значения
WEAVE_NO_ERROR
об успехе; в противном случае соответствующий код ошибки.
WEAVE_ERROR_INVALID_SERVICE_EP
если данная конечная точка службы не найдена.
WEAVE_ERROR_INVALID_DIRECTORY_ENTRY_TYPE
если каталог содержит неизвестный тип записи каталога.

искать

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

Этот метод ищет информацию о каталоге для конечной точки службы.

Если каталог службы был разрешен, т. е. если была успешная операция подключения() , то этот метод вернет запись каталога с идентификатором конечной точки службы.

Этот метод раскрывает детали внутренней реализации каталога службы; реализации должны настоятельно отдавать предпочтение варианту этого метода, который генерирует HostPortList .

Подробности
Параметры
[in] aServiceEp
Идентификатор конечной точки службы для поиска.
[out] aControlByte
Указатель на место для записи байта управления записью в каталог.
[out] aDirectoryEntry
Указатель-указатель, который будет направлен на запись каталога.
Возвращаемые значения
WEAVE_NO_ERROR
об успехе; в противном случае соответствующий код ошибки.
WEAVE_ERROR_INVALID_SERVICE_EP
если данная конечная точка службы не найдена.
WEAVE_ERROR_INVALID_DIRECTORY_ENTRY_TYPE
если каталог содержит неизвестный тип записи каталога.

onConnectionClosed

void onConnectionClosed(
  WEAVE_ERROR aError
)

Этот метод обрабатывает событие закрытия соединения, о котором сообщает связанный контекст обмена Weave.

Подробности
Параметры
[in] aError
Ошибка Weave, указывающая причину закрытия этого соединения.

onConnectionComplete

void onConnectionComplete(
  WEAVE_ERROR aError
)

Этот метод обрабатывает событие завершения подключения для транзакции запроса конечной точки службы.

Есть несколько возможностей. Во-первых, соединение могло прерваться, и в этом случае мы закончили. В противном случае соединение фактически завершено, и нам нужно открыть контекст обмена и отправить запрос к каталогу.

Подробности
Параметры
[in] aError
Ошибка Weave, если во время установки соединения возникла какая-либо ошибка.

onResponseReceived

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

Этот метод обрабатывает любое ответное сообщение в диалоге со службой каталогов.

Подробности
Параметры
[in] aProfileId
Идентификатор профиля для этого входящего сообщения.
[in] aMsgType
Тип этого сообщения, специфичный для профиля.
[in] aMsg
Содержание этого сообщения.

onResponseTimeout

void onResponseTimeout(
  void
)

Этот метод обрабатывает событие тайм-аута, при котором от службы каталогов не было получено ответа.

переместить

void relocate(
  WEAVE_ERROR aError
)

Этот метод перемещает кэш каталога службы.

Когда конечная точка службы возвращает отчет о состоянии с кодом состояния kStatus_Relocated, приложение может вызвать unsolve() , чтобы очистить кеш и отменить запросы на подключение. Этот метод упрощает обработку ошибок, вызывая функцию unsolve() в первый раз и функцию сброса(), если проблема еще не решена.

Эта версия метода (здесь для обратной совместимости) принимает и регистрирует ошибку, а затем вызывает relocate(void) .

Подробности
Параметры
[in] aError
ошибка при входе в систему.
См. также:
переместить (аннулировать)

переместить

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) .

Подробности
Параметры
[in] aError
Ошибка, вызвавшая эту операцию.
См. также:
сброс (недействительный)

перезагрузить

void reset(
  void
)

Этот метод возвращает диспетчер служб в исходное состояние.

Этот метод сбрасывает все состояния диспетчера служб, включая состояние связи, состояние кэша и состояние любых ожидающих запросов на подключение.

См. также:
сброс (WEAVE_ERROR)

не решить

void unresolve(
  WEAVE_ERROR aError
)

Этот метод делает недействительным кэш каталога службы.

Этот метод устанавливает состояние кэша каталога служб, чтобы при следующем запросе диспетчер служб выдавал запрос к каталогу служб.

Эта версия метода (здесь для обратной совместимости) принимает и регистрирует ошибку, а затем вызывает unresolve(void) .

Подробности
Параметры
[in] aError
Ошибка, вызвавшая эту операцию.
См. также:
не разрешить (недействительно)

не решить

void unresolve(
  void
)

Этот метод делает недействительным кэш каталога службы.

Этот метод устанавливает состояние кэша каталога служб, чтобы при следующем запросе диспетчер служб выдавал запрос к каталогу служб.

См. также:
не разрешить (WEAVE_ERROR)

~WeaveServiceManager

 ~WeaveServiceManager(
  void
)

Этот метод разрушает экземпляр WeaveServiceManager .