nl::Weave::Profiles::DataManagement_Legacy::Binding

#include <src/lib/profiles/data-management/Legacy/Binding.h>

Класс Binding управляет состоянием связи от имени объекта приложения, использующего Weave.

Сводка

Когда приложение хочет использовать Weave для связи с удаленным объектом, существует множество вариантов. Класс Binding собирает эти параметры и упорядочивает их таким образом, чтобы простые вещи были простыми, а более сложные – по крайней мере, понятными. В частности, вы узнаете:

  • одноадресная передача данных по протоколу UDP с известным узлом.
  • Широковещательная рассылка UDP с узлом any.
  • одноадресная связь WRMP с известным одноранговым узлом.
  • TCP-соединения с известным узлом.
  • TCP-коммуникации с известной конечной точкой сервиса, использующие экземпляр менеджера сервиса для настройки.
  • TCP-коммуникации на основе предварительно установленного соединения.

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

Binding(void)
Конструктор по умолчанию для объектов Binding.
~Binding(void)
Деструктор для объектов Binding.

Общедоступные типы

@165{
  kState_Incomplete = 0,
  kState_Completing = 1,
  kState_Complete = 2
}
enum : перечисление
Набор состояний объекта Binding.

Общедоступные атрибуты

mAuthMode
WeaveAuthMode
Режим аутентификации Weave, который будет использоваться.
mConnection
Указатель на подключение Weave, которое сейчас используется в этой привязке.
mEngine
Указатель на объект ProtocolEngine, связанный с этим объектом Binding.
mPeerNodeId
uint64_t
64-битный идентификатор узла цели связывания.
mServiceMgr
Указатель на объект ServiceManager (необязательно), который будет использоваться для завершения привязки.
mState
uint8_t
Текущее состояние объекта Binding.
mTransport
uint8_t
Транспорт, который будет использоваться для завершения этой привязки.

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

CompleteConfirm(WeaveConnection *aConnection)
void
Обработка подтверждения запроса на привязку.
CompleteConfirm(StatusReport & aReport)
void
Обработка сбоя запроса на привязку.
CompleteConfirm(void)
void
Обработка подтверждения запроса на привязку.
CompleteRequest(ProtocolEngine *aEngine)
Запрос на завершение привязки.
Connect(WeaveConnection *aConnection)
Завершите привязку TCP, предоставив завершенное подключение.
Finalize(void)
void
"Отменить" привязку и освободить ее.
Finalize(WEAVE_ERROR aErr)
void
"Отменить" привязку и освободить ее.
Free(void)
void
Очистить состояние привязки.
GetExchangeCtx(WeaveExchangeManager *aExchangeMgr, void *aAppState)
Создайте объект ExchangeContext из Binding.
IncompleteIndication(StatusReport & aReport)
void
Обработка ошибки привязки.
Init(const uint64_t & aPeerNodeId)
Инициализируйте Binding, указав только идентификатор узла.
Init(const uint64_t & aPeerNodeId, uint8_t aTransport)
Инициализируйте объект Binding на основе идентификатора партнера и транспорта.
Init(const uint64_t & aServiceEpt, WeaveServiceManager *aServiceMgr, WeaveAuthMode aAuthMode)
Инициализируйте объект Binding для конечной точки сервиса.
Init(WeaveConnection *aConnection)
Инициализируйте объект Binding с помощью WeaveConnection.
IsComplete(void)
bool
Проверьте, завершено ли связывание.
IsFree(void)
bool
Проверьте, свободна ли привязка.
UncompleteRequest(void)
void
Привязка не завершена.
UncompleteRequest(WEAVE_ERROR aErr)
void
Привязка не завершена.

Общедоступные типы

@165

 @165

Набор состояний объекта Binding.

Свойства
kState_Complete

Состояние привязки, которая завершена и готова к использованию.

kState_Completing

Состояние привязки, которая находится в процессе завершения.

kState_Incomplete

Начальное (и конечное) состояние привязки.

Общедоступные атрибуты

mAuthMode

WeaveAuthMode mAuthMode

Режим аутентификации Weave, который будет использоваться.

(READ_ONLY)

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

mConnection

WeaveConnection * mConnection

Указатель на подключение Weave, которое сейчас используется в этой привязке.

(ТОЛЬКО ЧТЕНИЕ)

Привязки TCP могут быть инициализированы с подключением сразу или могут выделять его во время завершения.

mEngine

ProtocolEngine * mEngine

Указатель на объект ProtocolEngine, связанный с этим объектом Binding.

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

mPeerNodeId

uint64_t mPeerNodeId

64-битный идентификатор узла цели связывания.

(ТОЛЬКО ЧТЕНИЕ)

У каждого объекта Binding есть целевой объект, который указывается в этом поле. Помимо идентификатора узла Weave, это может быть название конечной точки сервиса.

mServiceMgr

nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager * mServiceMgr

Указатель на объект ServiceManager (необязательно), который будет использоваться для завершения привязки.

(ТОЛЬКО ЧТЕНИЕ)

При привязке к сервису Weave во время инициализации вместо идентификатора узла Weave можно указать 64-битный идентификатор конечной точки сервиса. В этом случае для завершения привязки также требуется объект ServiceManager. Для обычных привязок TCP или WRMP объект ServiceManager не требуется.

mState

uint8_t mState

Текущее состояние объекта Binding.

Одновременно может выполняться только одна операция complete. Если вы попытаетесь выполнить ее для уже завершенной привязки, будет сразу вызвана функция confirm. Переменная состояния ниже отслеживает текущее состояние и действует как блокировка.

mTransport

uint8_t mTransport

Транспорт, который будет использоваться для завершения этой привязки.

(ТОЛЬКО ЧТЕНИЕ)

Возможные значения для mTransport определены в DMConstants.h.

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

Привязки

 Binding(
  void
)

Конструктор по умолчанию для объектов Binding.

Очищает все внутреннее состояние.

CompleteConfirm

void CompleteConfirm(
  WeaveConnection *aConnection
)

Обработка подтверждения запроса на привязку.

Сведения
Параметры
[in] aConnection
Указатель на активное WeaveConnection к цели привязки.

CompleteConfirm

void CompleteConfirm(
  StatusReport & aReport
)

Обработка сбоя запроса на привязку.

Сведения
Параметры
[in] aReport
Ссылка на объект StatusReport, описывающий ошибку.

CompleteConfirm

void CompleteConfirm(
  void
)

Обработка подтверждения запроса на привязку.

CompleteRequest

WEAVE_ERROR CompleteRequest(
  ProtocolEngine *aEngine
)

Запрос на завершение привязки.

Привязка, по крайней мере для привязок, требующих TCP, выполняется в отношении определенного объекта ProtocolEngine, который предоставляет доступ к экземпляру ExchangeManager.

Сведения
Параметры
[in] aEngine
Указатель на объект ProtocolEngine, от имени которого выполняется завершение.
Возвращаемые значения
WEAVE_NO_ERROR
При успешном выполнении.
WEAVE_ERROR_INCORRECT_STATE
если привязка уже завершена.
WEAVE_ERROR_NO_MEMORY
Если подключение требуется, но недоступно
Возвраты
В противном случае при попытке подключения возвращается ошибка WEAVE_ERROR.

Подключить

WEAVE_ERROR Connect(
  WeaveConnection *aConnection
)

Завершите привязку TCP, предоставив завершенное подключение.

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

Сведения
Параметры
[in] aConnection
Указатель на WeaveConnection, используемый для завершения привязки.
Возвращаемые значения
WEAVE_NO_ERROR
При успешном выполнении.
WEAVE_ERROR_INCORRECT_STATE
Если у привязки уже есть подключение.
WEAVE_ERROR_INVALID_ARGUMENT
Если подключение имеет значение NULL.

Завершить

void Finalize(
  void
)

"Отменить" привязку и освободить ее.

Привязки могут иметь состояние, требующее очистки, например закрытие соединения, которое обрабатывается методом Uncomplete() в дополнение к состоянию, которое просто очищается до исходного состояния методом Free(). Этот метод, в основном для удобства, вызывает оба.

См. также:
Finalize(WEAVE_ERROR)

Завершить

void Finalize(
  WEAVE_ERROR aErr
)

"Отменить" привязку и освободить ее.

Привязки могут иметь состояние, требующее очистки, например закрытие соединения, которое обрабатывается методом Uncomplete() в дополнение к состоянию, которое просто очищается до исходного состояния методом Free(). Этот метод, в основном для удобства, вызывает оба.

Сведения
Параметры
[in] aErr
Этот код ошибки указывает на причину запроса. Если не WEAVE_NO_ERROR, TCP-соединение может быть прервано.
См. также:
Finalize(void)

Бесплатно

void Free(
  void
)

Очистить состояние привязки.

Безусловно возвращает все состояния привязки в исходное состояние.

GetExchangeCtx

ExchangeContext * GetExchangeCtx(
  WeaveExchangeManager *aExchangeMgr,
  void *aAppState
)

Создайте объект ExchangeContext из Binding.

Сведения
Параметры
[in] aExchangeMgr
Указатель на менеджер обмена, у которого нужно запросить контекст.
[in] aAppState
Указатель void на объект состояния приложения, который будет храниться в контексте обмена для последующего использования.
Возвраты
Указатель на объект ExchangeContext или NULL в случае сбоя.

IncompleteIndication

void IncompleteIndication(
  StatusReport & aReport
)

Обработка ошибки привязки.

Этот метод вызывается и, в свою очередь, вызывает обработчики более высокого уровня, когда привязка завершается сбоем ПОСЛЕ завершения, то есть после вызова CompleteConfirm() со статусом, указывающим на успех.

Сведения
Параметры
[in] aReport
Ссылка на отчет StatusReport с описанием проблемы.
См. также:
CompleteConfirm(StatusReport &aReport).

Init

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId
)

Инициализируйте Binding, указав только идентификатор узла.

В результате будет выполнена привязка к настроенному транспорту по умолчанию.

Сведения
Параметры
[in] aPeerNodeId
Ссылка на 64-битный идентификатор цели привязки.
Возвращаемые значения
WEAVE_NO_ERROR
При успешном выполнении.
WEAVE_ERROR_INVALID_ARGUMENT
Если привязка неполная.

Init

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId,
  uint8_t aTransport
)

Инициализируйте объект Binding на основе идентификатора партнера и транспорта.

Сведения
Параметры
[in] aPeerNodeId
Ссылка на 64-битный идентификатор узла цели привязки.
[in] aTransport
Спецификация транспорта из WeaveTransportOption.
Возвращаемые значения
WEAVE_NO_ERROR
При успешном выполнении.
WEAVE_ERROR_INVALID_ARGUMENT
Если привязка неполная.

Init

WEAVE_ERROR Init(
  const uint64_t & aServiceEpt,
  WeaveServiceManager *aServiceMgr,
  WeaveAuthMode aAuthMode
)

Инициализируйте объект Binding для конечной точки сервиса.

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

Сведения
Параметры
[in] aServiceEpt
Ссылка на 64-битный идентификатор конечной точки интересующего сервиса Weave.
[in] aServiceMgr
Указатель на экземпляр менеджера сервиса, который используется для поиска уровня сервиса и подключения к нему.
[in] aAuthMode
Режим аутентификации, который будет использоваться при подключении.
Возвращаемые значения
WEAVE_NO_ERROR
При успешном выполнении.
WEAVE_ERROR_INVALID_ARGUMENT
Если привязка неполная.

Init

WEAVE_ERROR Init(
  WeaveConnection *aConnection
)

Инициализируйте объект Binding с помощью WeaveConnection.

Сведения
Параметры
[in] aConnection
Указатель на WeaveConnection, который будет использоваться в качестве основы для привязки.
Возвращаемые значения
WEAVE_NO_ERROR
При успешном выполнении.
WEAVE_ERROR_INVALID_ARGUMENT
Если привязка неполная.

IsComplete

bool IsComplete(
  void
)

Проверьте, завершено ли связывание.

Сведения
Возвраты
true, если оно завершено, и false, если нет.
См. также:
CompleteRequest(ProtocolEngine *aEngine)

IsFree

bool IsFree(
  void
)

Проверьте, свободна ли привязка.

"Свободный" в данном контексте означает, что у него есть определенный идентификатор узла. IsFree() означает, что для объекта был вызван метод Free() и с тех пор объект не использовался.

Сведения
Возвраты
true, если привязка бесплатная, и false в противном случае.

UncompleteRequest

void UncompleteRequest(
  void
)

Привязка не завершена.

После вызова этого метода привязка должна находиться в состоянии "неполная". Кроме того, необходимо очистить все связанные состояния, не содержащиеся в самой привязке, например TCP-подключение. Приложения могут вызывать UncompleteRequest() в рамках очистки при ошибке.

См. также:
UncompleteRequest(WEAVE_ERROR )

UncompleteRequest

void UncompleteRequest(
  WEAVE_ERROR aErr
)

Привязка не завершена.

После вызова этого метода привязка должна находиться в состоянии "неполная". Кроме того, необходимо очистить все связанные состояния, не содержащиеся в самой привязке, например TCP-подключение. Приложения могут вызывать UncompleteRequest() в рамках очистки при ошибке.

Сведения
Параметры
[in] aErr
Если не WEAVE_NO_ERROR, существующее соединение, если таковое имеется, будет прервано, а не корректно закрыто.
См. также:
UncompleteRequest(void)

~Binding

virtual  ~Binding(
  void
)

Деструктор для объектов Binding.

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