nl::Weave::Profiles::DataManagement_Current::TraitUpdatableDataSink

สรุป

การสืบทอด

รับค่าจาก
  nl::Weave::Profiles::DataManagement_Current::TraitDataSink
  nl::Weave::Profiles::DataManagement_Current::TraitSchemaEngine::IGetDataDelegate

ผู้ผลิตและผู้ทำลาย

TraitUpdatableDataSink(const TraitSchemaEngine *aEngine)

ฟังก์ชันสาธารณะ

ClearUpdated(SubscriptionClient *apSubClient, PropertyPathHandle aPropertyHandle)
GetData(PropertyPathHandle aHandle, uint64_t aTagToWrite, nl::Weave::TLV::TLVWriter & aWriter, bool & aIsNull, bool & aIsPresent) __OVERRIDE
virtual WEAVE_ERROR
รับข้อมูลจากแหล่งที่มาลักษณะที่จะสร้างการแจ้งเตือน โดยใช้แฮนเดิลพาธไปยังโหนด ผู้เขียน TLV และบูลีนที่ระบุว่าค่านั้นๆ เป็นค่าว่างหรือไม่
GetSubscriptionClient() __OVERRIDE
virtual SubscriptionClient *
GetUpdateEncoder() __OVERRIDE
virtual UpdateEncoder *
IsUpdatableDataSink(void) __OVERRIDE
virtual bool
Lock(SubscriptionClient *apSubClient)
void
ReadData(TraitDataHandle aTraitDataHandle, PropertyPathHandle aHandle, uint64_t aTagToWrite, TLV::TLVWriter & aWriter, PropertyPathHandle & aPropertyPathHandleOfDictItemToStartFrom)
SetSubscriptionClient(SubscriptionClient *apSubClient) __OVERRIDE
virtual WEAVE_ERROR
SetUpdateEncoder(UpdateEncoder *apEncoder) __OVERRIDE
virtual WEAVE_ERROR
SetUpdated(SubscriptionClient *apSubClient, PropertyPathHandle aPropertyHandle, bool aIsConditional)
ประกาศว่า PropertyPathHandle ที่ระบุมีการแก้ไขในเครื่อง
Unlock(SubscriptionClient *apSubClient)
void

ฟังก์ชันสาธารณะ

ClearUpdated

WEAVE_ERROR ClearUpdated(
  SubscriptionClient *apSubClient,
  PropertyPathHandle aPropertyHandle
)

GetData

virtual WEAVE_ERROR GetData(
  PropertyPathHandle aHandle,
  uint64_t aTagToWrite,
  nl::Weave::TLV::TLVWriter & aWriter,
  bool & aIsNull,
  bool & aIsPresent
) __OVERRIDE

รับข้อมูลจากแหล่งที่มาลักษณะที่จะสร้างการแจ้งเตือน โดยใช้แฮนเดิลพาธไปยังโหนด ผู้เขียน TLV และบูลีนที่ระบุว่าค่านั้นๆ เป็นค่าว่างหรือไม่

หากแฮนเดิลเส้นทางไม่ใช่โหนด Leaf TDM จะจัดการการเขียนค่าไปยังผู้เขียน (เช่น การเปิดคอนเทนเนอร์ การทำให้โครงสร้างเป็นโมฆะ เป็นต้น) หากโหนดที่ไม่ใช่ Leaf มีค่าหรือไม่มี TDM จะไม่เรียก GetData สำหรับระดับลูก

ระบบจะเรียกใช้ฟังก์ชันนี้สำหรับแฮนเดิลที่เป็นค่าว่าง ไม่บังคับ ชั่วคราว หรือใบไม้เท่านั้น โปรดทราบว่าลักษณะใดๆ ที่มีแฮนเดิลที่เปิดใช้ตัวเลือกเหล่านั้นจะใช้ตรรกะที่เหมาะสมเพื่อป้อนข้อมูล aIsNull และ aIsนำเสนอ

รายละเอียด
พารามิเตอร์
[in] aHandle
PropertyPathHandle ที่เป็นปัญหา
[in] aTagToWrite
แท็กที่จะเขียนสำหรับ aHandle
[in,out] aWriter
ผู้เขียนที่จะเขียนองค์ประกอบ TLV
[out] aIsNull
แฮนเดิลเป็นโมฆะใช่ไหม หากใช่ TDM จะเขียนองค์ประกอบ Null หาก aHandle ไม่ใช่ Leaf ตัว TDM จะข้ามผ่านรายการย่อย
[out] aIsPresent
มี aHandle ไหม หากไม่มีและหาก aHandle ไม่ใช่ Leaf TDM จะข้ามเส้นทางและรายการย่อย
แสดงผลค่า
WEAVE_NO_ERROR
ความสำเร็จ
other
ไม่สามารถเรียกข้อมูลและเขียนลงในผู้เขียน

GetSubscriptionClient

virtual SubscriptionClient * GetSubscriptionClient() __OVERRIDE

GetUpdateEncoder

virtual UpdateEncoder * GetUpdateEncoder() __OVERRIDE

IsUpdatableDataSink

virtual bool IsUpdatableDataSink(
  void
) __OVERRIDE

ล็อก

void Lock(
  SubscriptionClient *apSubClient
)

ReadData

WEAVE_ERROR ReadData(
  TraitDataHandle aTraitDataHandle,
  PropertyPathHandle aHandle,
  uint64_t aTagToWrite,
  TLV::TLVWriter & aWriter,
  PropertyPathHandle & aPropertyPathHandleOfDictItemToStartFrom
)

SetSubscriptionClient

virtual WEAVE_ERROR SetSubscriptionClient(
  SubscriptionClient *apSubClient
) __OVERRIDE

SetUpdateEncoder

virtual WEAVE_ERROR SetUpdateEncoder(
  UpdateEncoder *apEncoder
) __OVERRIDE

SetUpdated

WEAVE_ERROR SetUpdated(
  SubscriptionClient *apSubClient,
  PropertyPathHandle aPropertyHandle,
  bool aIsConditional
)

ประกาศว่า PropertyPathHandle ที่ระบุมีการแก้ไขในเครื่อง

NotificationEngine จะไม่ลบล้างแฮนเดิลและองค์ประกอบสืบทอดของแฮนเดิลจนกว่าจะมีการประมวลผลคำขออัปเดต แอปพลิเคชันจะได้รับโค้ดเรียกกลับ kEvent_OnUpdateComplete สำหรับแฮนเดิลนี้หรือสำหรับระดับบนซึ่งเป็นผลมาจากการดำเนินการอัปเดต การแก้ไขนี้อาจมีเงื่อนไขหรือไม่ก็ได้ การอัปเดตข้อมูลแบบมีเงื่อนไขจะสูญหายหากสำเนาในเครื่องของอินสแตนซ์ลักษณะดังกล่าวไม่ได้ซิงค์กับของผู้เผยแพร่เนื้อหาอีกต่อไป เนื่องจากมีการเปลี่ยนแปลงโดยผู้เผยแพร่เองหรือโดยไคลเอ็นต์อื่น ระบบไม่รองรับการเปลี่ยนแปลงแบบมีเงื่อนไขและไม่มีเงื่อนไขพร้อมกันในอินสแตนซ์ลักษณะเดียวกัน

รายละเอียด
พารามิเตอร์
[in] apSubClient
ตัวชี้ไปยัง SubscriptionClient ที่จัดการซิงก์นี้
[in] aPropertyHandle
PropertyPathHandle ที่ถูกต้องทั้งหมดสำหรับอินสแตนซ์ Trait นี้
[in] aIsConditional
"จริง" สำหรับการอัปเดตแบบมีเงื่อนไข หากไม่เป็น "เท็จ"
แสดงผลค่า
WEAVE_NO_ERROR
หากเพิ่มแฮนเดิลพร็อพเพอร์ตี้ลงในชุดพร็อพเพอร์ตี้เรียบร้อยแล้วเพื่อส่งไปยังเจ้าของลักษณะ
WEAVE_ERROR_INVALID_ARGUMENT
หากแฮนเดิลหรือเคอร์เซอร์ SubscriptionClient ไม่ถูกต้อง
WEAVE_ERROR_WDM_INCONSISTENT_CONDITIONALITY
หากมีการอัปเดตอินสแตนซ์ลักษณะด้วยเงื่อนไขที่ตรงข้ามกันอยู่แล้ว
WEAVE_ERROR_WDM_LOCAL_DATA_INCONSISTENT
ถ้า aIsConditional เป็นจริง แต่อินสแตนซ์ลักษณะไม่มีเวอร์ชันที่ถูกต้อง
WEAVE_ERROR_WDM_PATH_STORE_FULL
หากไม่มีหน่วยความจำที่จะจัดเก็บเส้นทาง
Other
WEAVE_ERROR อาจขึ้นอยู่กับรหัสที่ผิดพลาด

TraitUpdatableDataSink

 TraitUpdatableDataSink(
  const TraitSchemaEngine *aEngine
)

ปลดล็อก

void Unlock(
  SubscriptionClient *apSubClient
)