нл:: Переплетение:: Профили:: DataManagement_Legacy:: Связывание

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

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

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

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

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

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

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

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

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

Публичные атрибуты

mAuthMode
WeaveAuthMode
Используемый режим аутентификации Weave.
mConnection
Указатель на соединение Weave, которое в данный момент используется в этой привязке.
mEngine
Указатель на объект ProtocolEngine , связанный с этим Binding .
mPeerNodeId
uint64_t
64-битный идентификатор узла цели привязки.
mServiceMgr
Указатель на (необязательный) объект ServiceManager, который будет использоваться при завершении этой привязки.
mState
uint8_t
Текущее состояние объекта привязки .
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)
Инициализируйте привязку , используя только идентификатор узла.
Init (const uint64_t & aPeerNodeId, uint8_t aTransport)
Инициализируйте объект Binding на основе идентификатора узла и транспорта.
Init (const uint64_t & aServiceEpt, WeaveServiceManager *aServiceMgr, WeaveAuthMode aAuthMode)
Инициализируйте объект привязки к конечной точке службы.
Init ( WeaveConnection *aConnection)
Инициализируйте объект Binding с помощью WeaveConnection .
IsComplete (void)
bool
Проверьте, завершена ли привязка.
IsFree (void)
bool
Проверка привязки бесплатна.
UncompleteRequest (void)
void
Сделать привязку неполной.
UncompleteRequest ( WEAVE_ERROR aErr)
void
Сделать привязку неполной.

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

@165

 @165

Набор состояний объекта привязки .

Характеристики
kState_Complete

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

kState_Completing

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

kState_Incomplete

Начальное (и конечное) состояние Binding .

Публичные атрибуты

mAuthMode

WeaveAuthMode mAuthMode

Используемый режим аутентификации Weave.

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

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

мСоединение

WeaveConnection * mConnection

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

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

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

mEngine

ProtocolEngine * mEngine

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

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

mPeerNodeId

uint64_t mPeerNodeId

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

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

Каждая привязка имеет целевую сущность, имя которой указано здесь. В дополнение к идентификатору узла Weave это может указывать на конечную точку службы.

мсервицемгр

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

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

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

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

mState

uint8_t mState

Текущее состояние объекта привязки .

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

мТранспорт

uint8_t mTransport

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

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

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

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

Связывание

 Binding(
  void
)

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

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

ЗавершитьПодтвердить

void CompleteConfirm(
  WeaveConnection *aConnection
)

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

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

ЗавершитьПодтвердить

void CompleteConfirm(
  StatusReport & aReport
)

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

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

ЗавершитьПодтвердить

void CompleteConfirm(
  void
)

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

Полный запрос

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() . Этот метод, главным образом ради удобства, вызывает оба метода.

Смотрите также:
Завершить (WEAVE_ERROR)

Завершить

void Finalize(
  WEAVE_ERROR aErr
)

«Незавершить» привязку и освободить ее.

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

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

Бесплатно

void Free(
  void
)

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

Безоговорочно вернуть все состояние привязки в исходное состояние.

GetExchangeCtx

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

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

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

Неполная индикация

void IncompleteIndication(
  StatusReport & aReport
)

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

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

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

В этом

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId
)

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

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

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

В этом

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId,
  uint8_t aTransport
)

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

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

В этом

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

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

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

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

В этом

WEAVE_ERROR Init(
  WeaveConnection *aConnection
)

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

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

Завершено

bool IsComplete(
  void
)

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

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

Бесплатно

bool IsFree(
  void
)

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

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

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

Неполный запрос

void UncompleteRequest(
  void
)

Сделать привязку неполной.

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

Смотрите также:
Незавершенный запрос (WEAVE_ERROR)

Неполный запрос

void UncompleteRequest(
  WEAVE_ERROR aErr
)

Сделать привязку неполной.

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

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

~Привязка

virtual  ~Binding(
  void
)

Деструктор для объектов привязки .

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