нл:: Переплетение:: Профили:: DataManagement_Legacy

Это пространство имен включает в себя все интерфейсы внутри Weave для профиля Weave Data Management (WDM), поддержка которых скоро будет прекращена.

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

Перечисления

@103 {
kStatus_CancelSuccess = 0x0001,
kStatus_InvalidPath = 0x0013,
kStatus_UnknownTopic = 0x0014,
kStatus_IllegalReadRequest = 0x0015,
kStatus_IllegalWriteRequest = 0x0016,
kStatus_InvalidVersion = 0x0017,
kStatus_UnsupportedSubscriptionMode = 0x0018
}
перечисление
@166 {
kViewPoolSize = WEAVE_CONFIG_WDM_VIEW_POOL_SIZE,
kSubscribePoolSize = WEAVE_CONFIG_WDM_SUBSCRIBE_POOL_SIZE,
kCancelSubscriptionPoolSize = WEAVE_CONFIG_WDM_CANCEL_SUBSCRIPTION_POOL_SIZE,
kUpdatePoolSize = WEAVE_CONFIG_WDM_UPDATE_POOL_SIZE,
kNotifyPoolSize = WEAVE_CONFIG_WDM_NOTIFY_POOL_SIZE,
kTransactionTableSize = WEAVE_CONFIG_WDM_TRANSACTION_TABLE_SIZE,
kBindingTableSize = WEAVE_CONFIG_WDM_BINDING_TABLE_SIZE,
kNotifierTableSize = WEAVE_CONFIG_WDM_NOTIFIER_TABLE_SIZE,
kSubscriptionMgrTableSize = WEAVE_CONFIG_WDM_SUBSCRIPTION_MGR_TABLE_SIZE
}
перечисление
Размеры пула и столов WDM.
@167 {
kMsgType_ViewRequest = 0x10,
kMsgType_ViewResponse = 0x11,
kMsgType_SubscribeRequest = 0x12,
kMsgType_SubscribeResponse = 0x13,
kMsgType_CancelSubscriptionRequest = 0x14,
kMsgType_UpdateRequest = 0x15,
kMsgType_NotifyRequest = 0x16,
kMsgType_ViewRequest_Deprecated = 0x00,
kMsgType_ViewResponse_Deprecated = 0x01,
kMsgType_SubscribeRequest_Deprecated = 0x02,
kMsgType_SubscribeResponse_Deprecated = 0x03,
kMsgType_CancelSubscriptionRequest_Deprecated = 0x04,
kMsgType_UpdateRequest_Deprecated = 0x05,
kMsgType_NotifyRequest_Deprecated = 0x06
}
перечисление
Типы сообщений профиля WDM.
@168 {
kTransactionIdNotSpecified = 0,
kResponseTimeoutNotSpecified = 0,
kVersionNotSpecified = 0xFFFFFFFFFFFFFFFFULL,
kInstanceIdNotSpecified = 0,
kDefaultBindingTableIndex = 0,
kWeaveTLVTagLen = 8,
kWeaveTLVControlByteLen = 1
}
перечисление
Разные константы, специфичные для WDM.
@169 {
kStatus_CancelSuccess = 0x0001,
kStatus_InvalidPath = 0x0013,
kStatus_UnknownTopic = 0x0014,
kStatus_IllegalReadRequest = 0x0015,
kStatus_IllegalWriteRequest = 0x0016,
kStatus_InvalidVersion = 0x0017,
kStatus_UnsupportedSubscriptionMode = 0x0018
}
перечисление
Коды состояния, специфичные для WDM.
@170 {
kTag_WDMPathList = 100,
kTag_WDMPathProfile = 101,
kTag_WDMPathProfileId = 1,
kTag_WDMPathProfileInstance = 2,
kTag_WDMPathProfileId_Deprecated = 102,
kTag_WDMPathProfileInstance_Deprecated = 103,
kTag_WDMPathArrayIndexSelector = 104,
kTag_WDMPathArrayValueSelector = 105,
kTag_WDMDataList = 200,
kTag_WDMDataListElementPath = 3,
kTag_WDMDataListElementVersion = 4,
kTag_WDMDataListElementData = 5,
kTag_WDMDataListElementPath_Deprecated = 201,
kTag_WDMDataListElementVersion_Deprecated = 202,
kTag_WDMDataListElementData_Deprecated = 203
}
перечисление
Теги протокола управления данными.
@171 {
kTopicIdPublisherSpecificMask = 0xFFFF000000000000ULL,
kTopicIdNotSpecified = 0x0000000000000000ULL,
kAnyTopicId = 0xFFFFFFFFFFFFFFFFULL
}
перечисление
Отличающиеся идентификаторы тем.
WeaveTransportOption {
kTransport_TCP = 1,
kTransport_WRMP = 2,
kTransport_UDP = 3
}
перечисление
Варианты транспортировки WDM.

Определения типов

TopicIdentifier определение типа
uint64_t
Идентификатор темы.

Функции

CheckTLVType ( nl::Weave::TLV::TLVType aType, nl::Weave::TLV::TLVReader & aReader)
bool
Убедитесь, что считываемый элемент TLV имеет ожидаемый тип TLV .
CheckWDMTag (uint32_t aTagNum, nl::Weave::TLV::TLVReader & aReader)
bool
Проверьте тег, специфичный для WDM.
CloseDataListElement ( nl::Weave::TLV::TLVReader & aReader)
Прекратите чтение элемента списка данных WDM.
CloseList ( nl::Weave::TLV::TLVReader & aReader)
Прекратите чтение пути или списка данных WDM.
EncodeDeprecatedPath ( TLVWriter & aWriter, const uint64_t & aTag, uint32_t aProfileId, const uint64_t & aInstanceId, uint32_t aPathLen, ...)
Закодируйте путь WDM с помощью устаревших тегов и целочисленного идентификатора экземпляра.
EncodeDeprecatedPath ( TLVWriter & aWriter, const uint64_t & aTag, uint32_t aProfileId, const char *aInstanceId, uint32_t aPathLen, ...)
Закодируйте путь WDM с помощью устаревших тегов и идентификатора экземпляра строки.
EncodePath ( TLVWriter & aWriter, const uint64_t & aTag, uint32_t aProfileId, const uint64_t & aInstanceId, uint32_t aPathLen, ...)
Закодируйте путь WDM с помощью целочисленного идентификатора экземпляра профиля.
EncodePath ( TLVWriter & aWriter, const uint64_t & aTag, uint32_t aProfileId, const uint32_t aInstanceIdLen, const uint8_t *aInstanceId, uint32_t aPathLen, ...)
Закодируйте путь WDM с помощью идентификатора экземпляра байтового массива.
EncodePath ( TLVWriter & aWriter, const uint64_t & aTag, uint32_t aProfileId, const char *aInstanceId, uint32_t aPathLen, ...)
Закодируйте путь WDM с помощью идентификатора экземпляра строки.
EndDataListElement ( nl::Weave::TLV::TLVWriter & aWriter)
Завершите написание элемента списка данных.
EndEncodePath ( TLVWriter & aWriter, TLVType & mOuterContainer, WEAVE_ERROR mError)
EndList ( nl::Weave::TLV::TLVWriter & aWriter)
Завершите написание списка путей или списка данных.
EndList ( ReferencedTLVData & aList, nl::Weave::TLV::TLVWriter & aWriter)
Завершите написание списка путей или списка данных.
IsPublisherSpecific (const TopicIdentifier & aTopicId)
bool
Проверьте, зависит ли идентификатор темы от издателя.
OpenDataList ( ReferencedTLVData & aDataList, nl::Weave::TLV::TLVReader & aReader)
Начните читать список данных.
OpenDataListElement ( nl::Weave::TLV::TLVReader & aReader, nl::Weave::TLV::TLVReader & aPathReader, uint64_t & aVersion)
Начните читать элемент списка данных.
OpenPathList ( ReferencedTLVData & aPathList, nl::Weave::TLV::TLVReader & aReader)
Начните читать список путей.
PublisherSpecificTopicId (void)
Создайте идентификатор темы для конкретного издателя с нуля.
SendStatusReport ( ExchangeContext *aExchangeCtx, StatusReport & aStatus)
StartDataList ( nl::Weave::TLV::TLVWriter & aWriter)
Начните писать список данных.
StartDataList ( ReferencedTLVData & aDataList, nl::Weave::TLV::TLVWriter & aWriter)
Начните запись списка данных в данный объект ReferencedTLVData .
StartDataListElement ( nl::Weave::TLV::TLVWriter & aWriter)
Начните писать элемент списка данных.
StartEncodePath ( TLVWriter & aWriter, const uint64_t & aTag, uint32_t aProfileId, TLVType & mOuterContainer, TLVType & mPath)
StartPathList ( nl::Weave::TLV::TLVWriter & aWriter)
Начните писать список путей.
TxnResponseHandler ( ExchangeContext *anExchangeCtx, const IPPacketInfo *anAddrInfo, const WeaveMessageInfo *aMsgInfo, uint32_t aProfileId, uint8_t aMsgType, PacketBuffer *aMsg)
void
TxnTimeoutHandler ( ExchangeContext *anExchangeCtx)
void
ValidateTLVType ( nl::Weave::TLV::TLVType aType, nl::Weave::TLV::TLVReader & aReader)
Убедитесь, что считываемый элемент TLV имеет ожидаемый тип TLV .
ValidateWDMTag (uint32_t aTagNum, nl::Weave::TLV::TLVReader & aReader)
Убедитесь, что считываемый элемент TLV имеет ожидаемый тег WDM.

Классы

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

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

nl:: Weave:: Profiles:: DataManagement_Legacy:: ClientDataManager

Абстрактный класс, содержащий определения методов подтверждения и индикации, необходимые клиенту WDM.

nl:: Weave:: Profiles:: DataManagement_Legacy:: ClientNotifier

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

nl:: Weave:: Profiles:: DataManagement_Legacy:: DMClient

Абстрактный базовый класс для клиентов WDM, специфичных для приложения.

nl:: Weave:: Profiles:: DataManagement_Legacy:: DMPublisher

Абстрактный базовый класс для издателей WDM, ориентированных на конкретные приложения.

nl:: Weave:: Profiles:: DataManagement_Legacy:: ProfileDatabase

Абстрактный вспомогательный класс ProfileDatabase .

nl:: Weave:: Profiles:: DataManagement_Legacy:: ProtocolEngine

Класс механизма протокола WDM.

nl:: Weave:: Profiles:: DataManagement_Legacy:: PublisherDataManager

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

Перечисления

@103

 @103
Характеристики
kStatus_CancelSuccess

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

Этот код состояния означает, что подписка была успешно отменена.

kStatus_IllegalReadRequest

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

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

kStatus_IllegalWriteRequest

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

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

kStatus_InvalidPath

Этот устаревший код состояния означает, что путь из списка путей кадра запроса представления или обновления не соответствует резидентной схеме узла ответчика.

Этот код состояния означает, что путь из списка путей кадра запроса представления или обновления не соответствует резидентной схеме узла ответчика.

kStatus_InvalidVersion

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

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

kStatus_UnknownTopic

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

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

kStatus_UnsupportedSubscriptionMode

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

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

@166

 @166

Размеры пула и столов WDM.

WDM определяет различные пулы и таблицы, необходимые для его работы, следующим образом.

Пулы клиентских транзакций:

  • kViewPoolSize
  • kSubscribePoolSize
  • kCancelSubscriptionPoolSize
  • kUpdatePoolSize

Пулы транзакций издателя:

  • kNotifyPoolSize

Таблицы механизма протоколов:

  • kTransactionTableSize
  • kBindingTableSize

Таблицы, связанные с подпиской:

  • kNotifierTableSize (только клиент)
  • kSubscriptionMgrTableSize (только для издателя)

Обратите внимание, что это настраиваемые величины и что значения для каждой платформы отображаются в связанном файле WeaveConfig.h .

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

Это размер таблицы привязки по умолчанию в механизме протокола WDM.

Это значение можно настроить с помощью WEAVE_CONFIG_WDM_BINDING_TABLE_SIZE .

kCancelSubscriptionPoolSize

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

Это значение можно настроить с помощью WEAVE_CONFIG_WDM_CANCEL_SUBSCRIPTION_POOL_SIZE .

kNotifierTableSize

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

Это значение можно настроить с помощью WEAVE_CONFIG_WDM_NOTIFIER_TABLE_SIZE .

kNotifyPoolSize

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

Это значение можно настроить с помощью WEAVE_CONFIG_WDM_NOTIFY_POOL_SIZE .

kSubscribePoolSize

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

Это значение можно настроить с помощью WEAVE_CONFIG_WDM_SUBSCRIBE_POOL_SIZE .

kSubscriptionMgrTableSize

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

Это значение можно настроить с помощью WEAVE_CONFIG_WDM_SUBSCRIPTION_MGR_TABLE_SIZE .

kTransactionTableSize

Это размер таблицы транзакций по умолчанию в механизме протокола WDM.

Это значение можно настроить с помощью WEAVE_CONFIG_WDM_TRANSACTION_TABLE_SIZE .

kUpdatePoolSize

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

Это значение можно настроить с помощью WEAVE_CONFIG_WDM_UPDATE_POOL_SIZE .

kViewPoolSize

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

Это значение можно настроить с помощью WEAVE_CONFIG_WDM_VIEW_POOL_SIZE .

@167

 @167

Типы сообщений профиля WDM.

Эти значения указаны в спецификации управления данными.

ПРИМЕЧАНИЕ!! По состоянию на первый квартал 2015 года типы сообщений, использовавшиеся в предыдущих версиях WDM, устарели, и были определены новые типы сообщений, что отражает достаточный сдвиг в прошлых деталях упаковки и анализа, чтобы оправдать полный разрыв.

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

Сообщение с запросом на отмену подписки.

kMsgType_CancelSubscriptionRequest_Deprecated

устарел

kMsgType_NotifyRequest

Сообщение с запросом уведомления.

kMsgType_NotifyRequest_Deprecated

устарел

kMsgType_SubscribeRequest

Сообщение с запросом на подписку.

kMsgType_SubscribeRequest_Deprecated

устарел

kMsgType_SubscribeResponse

Подпишитесь на ответное сообщение.

kMsgType_SubscribeResponse_Deprecated

устарел

kMsgType_UpdateRequest

Сообщение с запросом обновления.

kMsgType_UpdateRequest_Deprecated

устарел

kMsgType_ViewRequest

Посмотреть сообщение с запросом.

kMsgType_ViewRequest_Deprecated

устарел

kMsgType_ViewResponse

Посмотреть ответное сообщение.

kMsgType_ViewResponse_Deprecated

устарел

@168

 @168

Разные константы, специфичные для WDM.

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

Индекс привязки по умолчанию в таблице привязок механизма протокола, содержащей более одной записи.

kInstanceIdNotSpecified

В вызовах, требующих указания экземпляра профиля, указывается «нет».

Чаще всего это означает, что на рассматриваемом объекте присутствует только один экземпляр профиля.

kResponseTimeoutNotSpecified

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

Обычно это означает, что следует использовать значение по умолчанию.

kTransactionIdNotSpecified

В методах и структурах данных, которые принимают идентификатор транзакции, указывается «нет» или значение подстановочного знака.

kVersionNotSpecified

В вызовах, требующих указания версии данных, указывается «нет конкретной версии».

kWeaveTLVControlByteLen

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

kWeaveTLVTagLen

Стандартная длина в байтах полного тега TLV , используемая в методах поддержки, которые кодируют структуры WDM в TLV .

@169

 @169

Коды состояния, специфичные для WDM.

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

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

Этот код состояния означает, что подписка была успешно отменена.

kStatus_IllegalReadRequest

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

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

kStatus_IllegalWriteRequest

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

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

kStatus_InvalidPath

Этот устаревший код состояния означает, что путь из списка путей кадра запроса представления или обновления не соответствует резидентной схеме узла ответчика.

Этот код состояния означает, что путь из списка путей кадра запроса представления или обновления не соответствует резидентной схеме узла ответчика.

kStatus_InvalidVersion

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

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

kStatus_UnknownTopic

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

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

kStatus_UnsupportedSubscriptionMode

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

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

@170

 @170

Теги протокола управления данными.

Протокол управления данными определяет ряд тегов, которые будут использоваться в TLV- представлении данных профиля.

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

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

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

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

Тип тега: специфичный для профиля. Тип элемента: Массив. Расположение: Верхний уровень.

kTag_WDMDataListElementData

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

Тип тега: Зависит от контекста. Тип элемента: Любой. Расположение: Обязательно.

kTag_WDMDataListElementData_Deprecated

Устарело.

Тип тега: Зависит от контекста. Тип элемента: Любой. Расположение: Обязательно.

kTag_WDMDataListElementPath

Этот элемент является компонентом пути элемента списка данных.

Тип тега: Зависит от контекста. Тип элемента: Путь. Расположение: Обязательно.

kTag_WDMDataListElementPath_Deprecated

Устарело.

Тип тега: специфичный для профиля. Тип элемента: Путь. Расположение: Обязательно.

kTag_WDMDataListElementVersion

Этот элемент является компонентом версии элемента списка данных.

Тип тега: Зависит от контекста. Тип элемента: Целое число. Расположение: Обязательно.

kTag_WDMDataListElementVersion_Deprecated

Устарело.

Тип тега: специфичный для профиля. Тип элемента: целое число. Расположение: обязательно.

kTag_WDMPathArrayIndexSelector

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

Тип тега: Специфический для профиля. Тип элемента: Целочисленный. Расположение: Необязательно.

kTag_WDMPathArrayValueSelector

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

Тип тега: Специфический для профиля. Тип элемента: Структура. Расположение: Необязательно.

kTag_WDMPathList

Этот элемент представляет собой список путей TLV .

Тип тега: специфичный для профиля. Тип элемента: Массив. Расположение: Верхний уровень.

kTag_WDMPathProfile

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

Тип тега: Специфический для профиля. Тип элемента: Структура. Расположение: Обязательно.

kTag_WDMPathProfileId

Этот элемент представляет собой компонент идентификатора профиля элемента профиля пути, который начинает путь TLV .

Тип тега: Зависит от контекста. Тип элемента: Целое число. Расположение: Обязательно.

kTag_WDMPathProfileId_Deprecated

Устарело.

Тип тега: специфичный для профиля. Тип элемента: целое число. Расположение: обязательно.

kTag_WDMPathProfileInstance

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

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

Тип тега: Зависит от контекста. Тип элемента: Любой. Расположение: Необязательно.

kTag_WDMPathProfileInstance_Deprecated

Устарело.

Тип тега: специфичный для профиля. Тип элемента: любой. Расположение: необязательно.

@171

 @171

Отличающиеся идентификаторы тем.

Существует три различных идентификатора интересующей темы, все три из которых имеют формат «зависит от издателя».

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

Это зарезервировано как идентификатор темы с подстановочным знаком.

kTopicIdNotSpecified

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

kTopicIdPublisherSpecificMask

Это используется как маска для создания или разложения идентификатора topci.

Вариант WeaveTransport

 WeaveTransportOption

Варианты транспортировки WDM.

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

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

Базовый транспорт — TCP.

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

kTransport_UDP

Базовым транспортом является исключительно UDP.

kTransport_WRMP

Базовым транспортом является исключительно UDP, но с улучшениями надежности «уровня поддержки приложений».

Определения типов

Идентификатор темы

uint64_t TopicIdentifier

Идентификатор темы.

Идентификаторы тем представляют собой 64-битные величины с двумя связанными использованиями/семантикой. Прежде всего, их можно использовать как условное обозначение хорошо известного набора путей, например «детектор дыма Nest». Идентификаторы тем, используемые таким образом, должны, как и идентификаторы профилей, содержать код поставщика, который предотвращает конфликт идентификаторов тем, выбранных автономно разными поставщиками, следующим образом:

бит 48–63 бит 0–47
Идентификатор поставщика Номер темы
Второе использование/семантика идентификаторов тем возникает в случае динамической подписки между клиентом WDM и издателем. в этом случае издатель всегда должен предоставлять уникальный идентификатор темы, который соответствует конкретной подписке, и он должен делать это независимо от того, была ли подписка запрошена с использованием известного идентификатора темы или произвольного списка путей. Идентификаторы тем этой формы отличаются кодом поставщика 0xFFFF.

См. также:
WeaveVendorIdentifiers.hpp

Функции

ПроверитьTLVType

bool CheckTLVType(
  nl::Weave::TLV::TLVType aType,
  nl::Weave::TLV::TLVReader & aReader
)

Убедитесь, что считываемый элемент TLV имеет ожидаемый тип TLV .

Проверьте данный тип TLV по типу элемента в начале считывателя TLV .

Подробности
Параметры
[in] aType
TLVType, который нужно проверить по определенному элементу.
[in] aReader
Ссылка на считыватель TLV , расположенный на проверяемом элементе.
Возврат
true, если TLVType элемента и aType совпадают.
См. также:
WeaveTLVTypes.h

ПроверитьWDMTag

bool CheckWDMTag(
  uint32_t aTagNum,
  nl::Weave::TLV::TLVReader & aReader
)

Проверьте тег, специфичный для WDM.

Проверьте номер тега, специфичного для WDM, из .../data-management/DMConstants.h, по фактическому тегу в начале устройства чтения TLV .

Подробности
Параметры
[in] aTagNum
Номер тега, который необходимо сверить с конкретным элементом TLV .
[in] aReader
Ссылка на средство чтения TLV , указывающее на проверяемый элемент.
Возврат
true, если aReader.GetTag() создает тег, соответствующий одной из ожидаемых форм тега для данного номера тега.

ЗакрытьDataListElement

WEAVE_ERROR CloseDataListElement(
  nl::Weave::TLV::TLVReader & aReader
)

Прекратите чтение элемента списка данных WDM.

Этот метод предполагает, что рассматриваемый элемент является частью списка данных WDM, и поэтому передает kTLVType_Array в ExitContainer().

Подробности
Параметры
[in,out] aReader
Считыватель TLV , расположенный в элементе списка данных WDM.
Возврат
WEAVE_NO_ERROR В случае успеха. В противном случае верните WEAVE_ERROR , отражающий невозможность выхода из контейнера.

ЗакрытьСписок

WEAVE_ERROR CloseList(
  nl::Weave::TLV::TLVReader & aReader
)

Прекратите чтение пути или списка данных WDM.

Этот метод предполагает, что рассматриваемый список является самым верхним элементом TLV , и поэтому передает kTLVType_Sructure в ExitContainer().

Подробности
Параметры
[in,out] aReader
Считыватель TLV , расположенный в пути или списке данных WDM.
Возврат
WEAVE_NO_ERROR В случае успеха. В противном случае верните WEAVE_ERROR , отражающий невозможность выхода из контейнера.

EncodeDeprecatedPath

WEAVE_ERROR EncodeDeprecatedPath(
  TLVWriter & aWriter,
  const uint64_t & aTag,
  uint32_t aProfileId,
  const uint64_t & aInstanceId,
  uint32_t aPathLen,
  ...
)

Закодируйте путь WDM с помощью устаревших тегов и целочисленного идентификатора экземпляра.

Примечание. Закодируйте путь, используя устаревший набор тегов, принятый службой до версии Weave 2.0. Эта версия метода принимает числовой идентификатор экземпляра. Этот метод запускает контейнер с ProfileTag(kWeaveProfile_WDM, kTag_WDMPathProfile), а затем вставляет идентификатор профиля с ProfileTag(kWeaveProfile_WDM, kTag_WDMPathProfileId_Deprecated). Затем он вставляет идентификатор экземпляра с помощью ProfileTag(kWeaveProfile_WDM, kTag_WDMPathProfileInstance_Deprecated). Это одна из устаревших версий кодирования пути, и в новых проектах следует избегать использования этого формата.

Подробности
Параметры
[in] aWriter
Ссылка на модуль записи TLV , используемый для записи пути.
[in] aTag
Ссылка на полный тег TLV , который применяется к этому пути.
[in] aProfileId
Идентификатор профиля, под которым должны интерпретироваться элементы пути.
[in] aInstanceId
Ссылка на необязательный идентификатор экземпляра профиля, который будет использоваться.
[in] aPathLen
Длина списка элементов пути, возможно, равная 0, за пределами спецификатора исходного профиля.
[in] ...
Необязательный список дополнительных тегов пути переменной длины.
Возврат
WEAVE_NO_ERROR В случае успеха. В противном случае верните WEAVE_ERROR , отражающий невозможность форматирования данного пути.

EncodeDeprecatedPath

WEAVE_ERROR EncodeDeprecatedPath(
  TLVWriter & aWriter,
  const uint64_t & aTag,
  uint32_t aProfileId,
  const char *aInstanceId,
  uint32_t aPathLen,
  ...
)

Закодируйте путь WDM с помощью устаревших тегов и идентификатора экземпляра строки.

Примечание. Закодируйте путь, используя устаревший набор тегов (см. DMConstants.h). Эта версия метода принимает строку идентификатора экземпляра. Этот метод запускает контейнер с ProfileTag(kWeaveProfile_WDM, kTag_WDMPathProfile), а затем вставляет идентификатор профиля с ProfileTag(kWeaveProfile_WDM, kTag_WDMPathProfileId_Deprecated). Затем он вставляет идентификатор экземпляра с помощью ProfileTag(kWeaveProfile_WDM, kTag_WDMPathProfileInstance_Deprecated). Это одна из устаревших версий кодирования пути, и в новых проектах следует избегать использования этого формата.

Подробности
Параметры
[in] aWriter
Ссылка на модуль записи TLV , используемый для записи пути.
[in] aTag
Ссылка на полный тег TLV , который применяется к этому пути.
[in] aProfileId
Идентификатор профиля, под которым должны интерпретироваться элементы пути.
[in] aInstanceId
Необязательная строка, используемая в качестве идентификатора экземпляра профиля. Этот аргумент может иметь значение NULL, если идентификатор экземпляра не указан.
[in] aPathLen
Длина списка элементов пути, возможно, равная 0, за пределами спецификатора исходного профиля.
[in] ...
Необязательный список дополнительных тегов пути переменной длины.
Возврат
WEAVE_NO_ERROR В случае успеха. В противном случае верните WEAVE_ERROR , отражающий невозможность форматирования данного пути.

Кодироватьпуть

WEAVE_ERROR EncodePath(
  TLVWriter & aWriter,
  const uint64_t & aTag,
  uint32_t aProfileId,
  const uint64_t & aInstanceId,
  uint32_t aPathLen,
  ...
)

Закодируйте путь WDM с помощью целочисленного идентификатора экземпляра профиля.

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

Этот метод вставляет идентификатор экземпляра с помощью ContextTag(kTag_WDMPathProfileInstance), который является последней версией кодирования пути.

Подробности
Параметры
[in] aWriter
Ссылка на модуль записи TLV , используемый для записи пути.
[in] aTag
Ссылка на полный тег TLV , который применяется к этому пути.
[in] aProfileId
Идентификатор профиля, под которым должны интерпретироваться элементы пути.
[in] aInstanceId
Ссылка на необязательный идентификатор экземпляра профиля, который будет использоваться. Если идентификатор экземпляра не используется, этот параметр должен иметь значение kInstanceIdNotSpecified.
[in] aPathLen
Длина списка элементов пути, возможно, равная 0, за пределами спецификатора исходного профиля.
[in] ...
Необязательный список дополнительных тегов пути переменной длины.
Возврат
WEAVE_NO_ERROR В случае успеха. В противном случае верните WEAVE_ERROR , отражающий невозможность форматирования данного пути.

Кодироватьпуть

WEAVE_ERROR EncodePath(
  TLVWriter & aWriter,
  const uint64_t & aTag,
  uint32_t aProfileId,
  const uint32_t aInstanceIdLen,
  const uint8_t *aInstanceId,
  uint32_t aPathLen,
  ...
)

Закодируйте путь WDM с помощью идентификатора экземпляра байтового массива.

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

Этот метод вставляет идентификатор экземпляра, используя ContextTag(kTag_WDMPathProfileInstance), который является последней версией для кодирования пути.

Подробности
Параметры
[in] aWriter
Ссылка на модуль записи TLV , используемый для записи пути.
[in] aTag
Ссылка на полный тег TLV , который применяется к этому пути.
[in] aProfileId
Идентификатор профиля, под которым должны интерпретироваться элементы пути.
[in] aInstanceIdLen
Длина массива байтов, составляющего идентификатор экземпляра. Если идентификатор отсутствует, этот параметр должен иметь значение 0.
[in] aInstanceId
Необязательный массив байтов, используемый в качестве идентификатора экземпляра профиля. Этот аргумент может иметь значение NULL в случае, если идентификатор экземпляра не указан.
[in] aPathLen
Длина списка элементов пути, возможно, равная 0, за пределами спецификатора исходного профиля.
[in] ...
Необязательный список дополнительных тегов пути переменной длины.
Возврат
WEAVE_NO_ERROR В случае успеха. В противном случае верните WEAVE_ERROR , отражающий невозможность форматирования данного пути.

Кодироватьпуть

WEAVE_ERROR EncodePath(
  TLVWriter & aWriter,
  const uint64_t & aTag,
  uint32_t aProfileId,
  const char *aInstanceId,
  uint32_t aPathLen,
  ...
)

Закодируйте путь WDM с помощью идентификатора экземпляра строки.

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

Этот метод вставляет идентификатор экземпляра, используя ContextTag(kTag_WDMPathProfileInstance), который является последней версией для кодирования пути.

Подробности
Параметры
[in] aWriter
Ссылка на модуль записи TLV , используемый для записи пути.
[in] aTag
Ссылка на полный тег TLV , который применяется к этому пути.
[in] aProfileId
Идентификатор профиля, под которым должны интерпретироваться элементы пути.
[in] aInstanceId
Необязательная строка, используемая в качестве идентификатора экземпляра профиля. Этот аргумент может иметь значение NULL, если идентификатор экземпляра не указан.
[in] aPathLen
Длина списка элементов пути, возможно, равная 0, за пределами спецификатора исходного профиля.
[in] ...
Необязательный список дополнительных тегов пути переменной длины.
Возврат
WEAVE_NO_ERROR В случае успеха. В противном случае верните WEAVE_ERROR , отражающий невозможность форматирования данного пути.

EndDataListElement

WEAVE_ERROR EndDataListElement(
  nl::Weave::TLV::TLVWriter & aWriter
)

Завершите написание элемента списка данных.

Запишите TLV для конца элемента списка данных WDM. Обратите внимание: это автоматически передает тип kTLVType_Array в вызов EndContainer(), предполагая, что мы всегда закрываем элемент списка.

Подробности
Параметры
[in] aWriter
Ссылка на средство записи TLV , с помощью которого можно записать конец элемента.
Возврат
WEAVE_NO_ERROR В случае успеха. В противном случае верните WEAVE_ERROR , отражающий невозможность завершения контейнера.

Конденкодепас

WEAVE_ERROR EndEncodePath(
  TLVWriter & aWriter,
  TLVType & mOuterContainer,
  WEAVE_ERROR mError
)

Конечный список

WEAVE_ERROR EndList(
  nl::Weave::TLV::TLVWriter & aWriter
)

Завершите написание списка путей или списка данных.

Запишите TLV для конца пути WDM или списка данных. Также доработайте писателя.

Подробности
Параметры
[in,out] aWriter
Ссылка на средство записи TLV, с помощью которого можно записать конец списка.
Возврат
WEAVE_NO_ERROR В случае успеха. В противном случае верните WEAVE_ERROR , отражающий невозможность завершения контейнера.

Конечный список

WEAVE_ERROR EndList(
  ReferencedTLVData & aList,
  nl::Weave::TLV::TLVWriter & aWriter
)

Завершите написание списка путей или списка данных.

Запишите TLV для конца пути WDM или списка данных. Также доработайте писателя. В этом случае объект ReferencedTLVData , в который записывается TLV , передается и изменяется в соответствии с объемом записанных данных.

Подробности
Параметры
[in,out] aList
Ссылка на объект ReferenceTLVData, в который записывался список.
[in] aWriter
Ссылка на средство записи TLV, с помощью которого можно записать конец списка.
Возврат
WEAVE_NO_ERROR В случае успеха. В противном случае верните WEAVE_ERROR , отражающий невозможность завершения контейнера.

IsPublisherSpecific

bool IsPublisherSpecific(
  const TopicIdentifier & aTopicId
)

Проверьте, зависит ли идентификатор темы от издателя.

Подробности
Параметры
[in] aTopicId
идентификатор темы или проверка
Возврат
true, если идентификатор темы зависит от издателя, в противном случае — false

Опендаталист

WEAVE_ERROR OpenDataList(
  ReferencedTLVData & aDataList,
  nl::Weave::TLV::TLVReader & aReader
)

Начните читать список данных.

Получив новое средство чтения и список данных, начните читать список и проверьте теги и типы, первоначально встречающиеся в процессе. Если все идет хорошо, программа чтения останавливается после входа в контейнер списка.

Подробности
Параметры
[in] aDataList
Список данных, передаваемый как ссылка на объект ReferencedTLVData . Обычным вариантом использования будет случай, когда список фактически все еще находится в буфере после получения.
[out] aReader
Ссылка на устройство чтения TLV , используемое для чтения списка данных. Этот читатель останется указывать непосредственно перед первым элементом в списке.
Возврат
WEAVE_NO_ERROR В случае успеха. В противном случае верните WEAVE_ERROR , отражающий сбой при открытии списка данных и/или проверке соответствующих тегов и типов.

Опендаталистэлемент

WEAVE_ERROR OpenDataListElement(
  nl::Weave::TLV::TLVReader & aReader,
  nl::Weave::TLV::TLVReader & aPathReader,
  uint64_t & aVersion
)

Начните читать элемент списка данных.

Учитывая, что считыватель расположен в элементе списка данных, начните читать элемент и проверьте теги и типы, первоначально встречающиеся в процессе. Если все идет хорошо, считыватель оказывается на данных элемента данных, а считыватель пути ввода/вывода располагается на соответствующем пути.

Подробности
Параметры
[in] aReader
Ссылка на средство чтения TLV , расположенное в элементе списка данных.
[out] aPathReader
Ссылка на средство чтения TLV , указывающая на компонент пути элемента списка данных.
[out] aVersion
Ссылка на 64-битное целое число, которое должно быть установлено либо на версию элемента списка данных, если таковая имеется, либо на kVersionNotSpecified.
Возврат
WEAVE_NO_ERROR в случае успеха или WEAVE_ERROR, связанный с открытием и чтением элемента списка данных.

ОпенПатЛист

WEAVE_ERROR OpenPathList(
  ReferencedTLVData & aPathList,
  nl::Weave::TLV::TLVReader & aReader
)

Начните читать список путей.

Получив новое средство чтения и список путей, начните читать список и проверьте теги и типы, первоначально встречающиеся в процессе. Если все идет хорошо, программа чтения останавливается после входа в контейнер списка.

Подробности
Параметры
[in] aPathList
Список путей, передаваемый как ссылка на объект ReferencedTLVData . Обычным вариантом использования будет случай, когда список фактически все еще находится в буфере после получения.
[out] aReader
Ссылка на программу чтения TLV , используемую для чтения списка путей. Этот читатель останется указывающим прямо перед первым путем в списке.
Возврат
WEAVE_NO_ERROR в случае успеха; в противном случае WEAVE_ERROR отражает сбой при открытии списка путей и/или проверке соответствующих тегов и типов.

Идентификатор конкретной темы издателя

TopicIdentifier PublisherSpecificTopicId(
  void
)

Создайте идентификатор темы для конкретного издателя с нуля.

Подробности
Возврат
новый идентификатор темы.

Отправитьстатусрепорт

WEAVE_ERROR SendStatusReport(
  ExchangeContext *aExchangeCtx,
  StatusReport & aStatus
)

Стартдаталист

WEAVE_ERROR StartDataList(
  nl::Weave::TLV::TLVWriter & aWriter
)

Начните писать список данных.

Запишите TLV для начала списка данных WDM, например, в качестве основного аргумента UpdateRequest().

Подробности
Параметры
[in] aWriter
Ссылка на средство записи TLV , с которого можно начать запись.
Возврат
WEAVE_NO_ERROR В случае успеха. В противном случае верните WEAVE_ERROR , отражающий невозможность запуска контейнера.

Стартдаталист

WEAVE_ERROR StartDataList(
  ReferencedTLVData & aDataList,
  nl::Weave::TLV::TLVWriter & aWriter
)

Начните запись списка данных в данный объект ReferencedTLVData .

Запишите TLV для начала списка данных WDM. В этом случае мы предполагаем, что записываем список данных в связанную структуру данных TLV . Предполагается, что модуль записи не инициализирован или, в любом случае, будет инициализирован для указания на данный объект.

Подробности
Параметры
[out] aDataList
Ссылка на объект ReferencedTLVData , который должен быть целью средства записи и в конечном итоге содержать интересующие данные.
[in] aWriter
Ссылка на средство записи TLV , с которого можно начать запись.
Возврат
WEAVE_NO_ERROR В случае успеха. В противном случае верните WEAVE_ERROR , отражающий невозможность запуска контейнера.

Стартдаталистэлемент

WEAVE_ERROR StartDataListElement(
  nl::Weave::TLV::TLVWriter & aWriter
)

Начните писать элемент списка данных.

Запишите TLV для начала элемента списка данных WDM.

Подробности
Параметры
[in] aWriter
Ссылка на средство записи TLV , с которого можно начать запись.
Возврат
WEAVE_NO_ERROR В случае успеха. В противном случае верните WEAVE_ERROR , отражающий невозможность запуска контейнера.

Старткодепуть

WEAVE_ERROR StartEncodePath(
  TLVWriter & aWriter,
  const uint64_t & aTag,
  uint32_t aProfileId,
  TLVType & mOuterContainer,
  TLVType & mPath
)

СтартПатЛист

WEAVE_ERROR StartPathList(
  nl::Weave::TLV::TLVWriter & aWriter
)

Начните писать список путей.

Запишите TLV для начала списка путей WDM, например, в качестве основного аргумента ViewRequest().

Подробности
Параметры
[in] aWriter
Ссылка на средство записи TLV , с которого можно начать запись.
Возврат
WEAVE_NO_ERROR В случае успеха. В противном случае верните WEAVE_ERROR , отражающий невозможность запуска контейнера.

TxnResponseHandler

void TxnResponseHandler(
  ExchangeContext *anExchangeCtx,
  const IPPacketInfo *anAddrInfo,
  const WeaveMessageInfo *aMsgInfo,
  uint32_t aProfileId,
  uint8_t aMsgType,
  PacketBuffer *aMsg
)

Обработчик TxnTimeoutHandler

void TxnTimeoutHandler(
  ExchangeContext *anExchangeCtx
)

Проверить типTLV

WEAVE_ERROR ValidateTLVType(
  nl::Weave::TLV::TLVType aType,
  nl::Weave::TLV::TLVReader & aReader
)

Убедитесь, что считываемый элемент TLV имеет ожидаемый тип TLV .

Сверьте данный тип TLV с типом элемента в начале устройства чтения TLV и верните ошибку, если совпадений нет.

Подробности
Параметры
[in] aType
TLVType, который необходимо проверить на соответствие определенному элементу.
[in] aReader
Ссылка на средство чтения TLV , расположенное в проверяемом элементе.
Возврат
WEAVE_NO_ERROR, если есть совпадение, или WEAVE_ERROR_WRONG_TLV_TYPE , если нет.
См. также:
WeaveTLVTypes.h

ПроверитьWDMTag

WEAVE_ERROR ValidateWDMTag(
  uint32_t aTagNum,
  nl::Weave::TLV::TLVReader & aReader
)

Убедитесь, что считываемый элемент TLV имеет ожидаемый тег WDM.

Подробности
Параметры
[in] aTagNum
32-битный номер ожидаемого тега WDM.
[in] aReader
Устройство считывания TLV , расположенное на проверяемом элементе.
Возврат
WEAVE_NO_ERROR В случае успеха. В противном случае WEAVE_ERROR_INVALID_TLV_TAG , если тег не соответствует заданному номеру тега при интерпретации как тег WDM.