nl:: Weave:: Profiles:: DataManagement_Current:: SubscriptionClient
สรุป
ประเภทสาธารณะ |
|
---|---|
@130
|
enum |
EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
|
Typedefvoid(*
ติดต่อกลับเพื่อส่งต่อเหตุการณ์การสมัครใช้บริการไปยังแอปพลิเคชัน |
EventID{
|
enum |
ResubscribePolicyCallback)(void *const aAppState, ResubscribeParam &aInParam, uint32_t &aOutIntervalMsec)
|
Typedefvoid(*
ติดต่อกลับเพื่อดึงข้อมูลช่วงเวลาที่ต้องรอก่อนการสมัครใช้บริการครั้งถัดไป |
ฟังก์ชันสาธารณะแบบคงที่ |
|
---|---|
DefaultEventHandler(EventID aEvent, const InEventParam & aInParam, OutEventParam & aOutParam)
|
void
|
DefaultResubscribePolicyCallback(void *const aAppState, ResubscribeParam & aInParam, uint32_t & aOutIntervalMsec)
|
void
การใช้นโยบายเริ่มต้นจะเลือกช่วงเวลาแบบสุ่มที่มีการแก้ปัญหาเป็นมิลลิวินาทีในช่วงกรอบเวลาที่เพิ่มขึ้นเรื่อยๆ โดยเรียงตามลำดับฟีโบนักชีไปจนถึง WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX
|
ฟังก์ชันสาธารณะ |
|
---|---|
AbortSubscription(void)
|
void
ยกเลิกการสมัครใช้บริการ
|
ClearUpdated(TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle)
|
|
DisableResubscribe(void)
|
void
ปิดใช้กลไกการสมัครอีกครั้ง
|
DiscardUpdates()
|
void
แจ้งให้ SubscriptionClient ล้างชุด TraitPath ที่รอการอัปเดต แล้วล้มเลิกคำขออัปเดตที่กำลังดำเนินการ หากมี
|
EnableResubscribe(ResubscribePolicyCallback aCallback)
|
void
เปิดใช้งานการสมัครใช้บริการอีกครั้งโดยอัตโนมัติ
|
EndSubscription(void)
|
สิ้นสุดการสมัครใช้บริการ
|
FlushUpdate()
|
สัญญาณที่แจ้งว่าแอปพลิเคชันเปลี่ยนแปลง TraitUpdatableDataSinks ทั้งหมดเรียบร้อยแล้ว
|
FlushUpdate(bool aForce)
|
|
Free(void)
|
void
ทำให้ออบเจ็กต์ SubscriptionClient นี้ว่าง
|
GetBinding(void) const
|
Binding *
|
GetLivenessTimeoutMsec(void) const
|
uint32_t
|
GetPeerNodeId(void) const
|
uint64_t
|
GetSubscriptionId(uint64_t *const apSubscriptionId)
|
|
IndicateActivity(void)
|
void
|
InitiateCounterSubscription(const uint32_t aLivenessTimeoutSec)
|
void
|
InitiateSubscription(void)
|
void
กำหนดค่า SubscriptionClient ในฐานะผู้เริ่ม (ไม่ใช่ผู้ใช้โต้แย้ง) และทำให้การสมัครใช้บริการใช้งานได้หากไม่ใช่
|
IsCanceling() const
|
bool
|
IsEstablished()
|
bool
|
IsEstablishedIdle()
|
bool
|
IsFree()
|
bool
|
IsInProgressOrEstablished()
|
bool
|
IsInResubscribeHoldoff()
|
bool
|
IsRetryEnabled()
|
bool
|
IsTerminated()
|
bool
|
IsUpdatePendingOrInProgress()
|
bool
|
LockUpdateMutex(void)
|
void
|
OnCatalogChanged()
|
void
ควรเรียกเมธอดนี้เมื่อมีการแก้ไขแคตตาล็อก TraitDataSink
|
ResetResubscribe(void)
|
void
ใช้กลไกการสมัครใช้บริการอีกครั้ง
|
SetLivenessTimeoutMsec(uint32_t val)
|
void
|
SetUpdated(TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle, bool aIsConditional)
|
|
SuspendUpdateRetries()
|
void
แจ้งให้ SubscriptionClient หยุดลองส่งคำขออัปเดตอีกครั้ง
|
UnlockUpdateMutex(void)
|
void
|
โครงสร้าง |
|
---|---|
nl:: |
|
nl:: |
สหภาพ |
|
---|---|
nl:: |
|
nl:: |
ประเภทสาธารณะ
@130
@130
EventCallback
void(* EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
ติดต่อกลับเพื่อส่งต่อเหตุการณ์การสมัครใช้บริการไปยังแอปพลิเคชัน
รายละเอียด | |||||||||
---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
EventID
EventID
พร็อพเพอร์ตี้ | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
kEvent_OnEventStreamReceived
|
สร้างขึ้นเมื่อ SubscriptionEngine รวมสตรีมเหตุการณ์ภายในข้อความ NotificationRequest ในตอนนี้ แอปพลิเคชันอาจเรียก EndSubscription(), AbortSubscription() หรือ Free() |
||||||||||||
kEvent_OnExchangeStart
|
สร้างหลังจากเตรียมการเชื่อมโยงและตั้งค่า ExchangeContext ก่อนที่จะส่งข้อความ นี่เป็นโอกาสสุดท้ายที่แอปพลิเคชันจะปรับการตั้งค่า ExchangeContext เนื่องจาก |
||||||||||||
kEvent_OnNoMorePendingUpdates
|
เหตุการณ์ซึ่งบ่งชี้ว่าเส้นทางทั้งหมดในชุดการอัปเดตได้รับการประมวลผลโดยเพียร์ และไม่จำเป็นต้องอัปเดตเส้นทางเพิ่มเติม |
||||||||||||
kEvent_OnNotificationProcessed
|
สร้างขึ้นเมื่อ SubscriptionEngine ดำเนินการข้อความ NotificationRequest เสร็จแล้ว ในตอนนี้ แอปพลิเคชันอาจเรียก EndSubscription(), AbortSubscription() หรือ Free() |
||||||||||||
kEvent_OnNotificationRequest
|
สร้างขึ้นจากการรับ NotificationRequest ในตอนนี้ แอปพลิเคชันอาจเรียก EndSubscription(), AbortSubscription() หรือ Free() |
||||||||||||
kEvent_OnSubscribeRequestPrepareNeeded
|
ส่งเมื่อเครื่องมือพร้อมส่งคำขอสมัคร โดยแอปพลิเคชันจะต้องกรอกตามเส้นทางที่ต้องการสมัครใช้บริการ |
||||||||||||
kEvent_OnSubscriptionActivity
|
เหตุการณ์ที่ระบุกิจกรรมการสมัครใช้บริการ รายงานนี้จะสร้างขึ้นเมื่อลูกค้าได้รับตัวบ่งชี้เกี่ยวกับกิจกรรมการสมัครใช้บริการ ซึ่งรวมถึงการสมัครใช้บริการที่ประสบความสำเร็จ การรับ NotificationRequest หรือการได้รับรายงานสถานะตามข้อความที่สมัครยืนยัน |
||||||||||||
kEvent_OnSubscriptionEstablished
|
สร้างขึ้นหลังจากการสมัครใช้บริการเสร็จสมบูรณ์ ในตอนนี้ แอปพลิเคชันอาจเรียก EndSubscription(), AbortSubscription() หรือ Free() |
||||||||||||
kEvent_OnSubscriptionTerminated
|
ทำเครื่องหมายการสิ้นสุดของการสมัครใช้บริการนี้ พารามิเตอร์ที่ส่งไปยัง nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::EventCallback จะระบุว่าระบบพยายามสมัครใช้บริการอีกครั้งโดยอัตโนมัติหรือไม่ ระหว่างการเรียกตัวแฮนเดิลเหตุการณ์ สถานะของไคลเอ็นต์จะเป็น แอปพลิเคชันอาจเรียก AbortSubscription() หรือ Free() ในสถานะนี้ นอกจากนี้ พารามิเตอร์ที่ส่งจะมีรหัสข้อผิดพลาดที่ระบุเหตุผลในการสิ้นสุดการสมัครใช้บริการด้วย การสมัครใช้บริการอาจสิ้นสุดลงด้วยสาเหตุหลายประการ (ไม่มี WRM ACK, จัดสรร ExchangeContext ไม่สำเร็จ, หมดเวลาตอบกลับ,...) รหัสข้อผิดพลาดที่เป็นไปได้บางส่วนที่ไคลเอ็นต์สร้างขึ้นมีดังนี้
|
||||||||||||
kEvent_OnUpdateComplete
|
เหตุการณ์ที่แสดงถึงความเสร็จสมบูรณ์ของการอัปเดต พารามิเตอร์เหตุการณ์จะแจ้งให้ทราบว่าการอัปเดตเส้นทางลักษณะเฉพาะหนึ่งๆ สำเร็จหรือล้มเหลว |
ResubscribePolicyCallback
void(* ResubscribePolicyCallback)(void *const aAppState, ResubscribeParam &aInParam, uint32_t &aOutIntervalMsec)
ติดต่อกลับเพื่อดึงข้อมูลช่วงเวลาที่ต้องรอก่อนการสมัครใช้บริการครั้งถัดไป
แอปพลิเคชันจะได้รับอนุญาตให้ล้มเลิก/ฟรีในฟังก์ชันนี้ หากผู้ใช้ตัดสินใจที่จะยกเลิกการสมัครใช้บริการใหม่
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
ฟังก์ชันสาธารณะแบบคงที่
DefaultEventHandler
void DefaultEventHandler( EventID aEvent, const InEventParam & aInParam, OutEventParam & aOutParam )
DefaultResubscribePolicyCallback
void DefaultResubscribePolicyCallback( void *const aAppState, ResubscribeParam & aInParam, uint32_t & aOutIntervalMsec )
การใช้นโยบายเริ่มต้นจะเลือกช่วงเวลาแบบสุ่มที่มีการแก้ปัญหาเป็นมิลลิวินาทีในช่วงกรอบเวลาที่เพิ่มขึ้นเรื่อยๆ โดยเรียงตามลำดับฟีโบนักชีไปจนถึง WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX
ค่าเฉลี่ยของเวลารอแบบสุ่มหลังจากผ่าน WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX จะอยู่ที่ประมาณ 1 ชั่วโมง เมื่อจำนวนการลองใหม่รีเซ็ตเป็น 0 ลำดับจะเริ่มจากจุดเริ่มต้นอีกครั้ง
ฟังก์ชันสาธารณะ
AbortSubscription
void AbortSubscription( void )
ยกเลิกการสมัครใช้บริการ
ล้มเลิกการสมัครรับข้อมูลของลูกค้า
หยุดรับการเข้าชมทั้งหมดที่เกี่ยวข้องกับการสมัครใช้บริการทันที และปล่อยทรัพยากรการสื่อสารทั้งหมดที่เกี่ยวข้อง ทั้งนี้ ออบเจ็กต์ SubscriptionClient เองจะยังคงใช้งานได้และอาจใช้งานอีกครั้งได้
การสิ้นสุดไคลเอ็นต์ของการสมัครใช้บริการโดยไม่แจ้งให้ผู้เผยแพร่การสมัครใช้บริการทราบและไม่ส่งเหตุการณ์ OnSubscriptionTerminated
ไปยังเครื่องจัดการเหตุการณ์ของแอปพลิเคชัน หากมีการสมัครใช้บริการร่วมกัน การสมัครใช้บริการที่โต้แย้งจะสิ้นสุดลงด้วย
เมื่อเรียกใช้ AbortSubscription() แล้ว ออบเจ็กต์ SubscriptionClient
จะเข้าสู่สถานะ Terminated
เมื่อกระบวนการสิ้นสุดสิ้นสุดลง ออบเจ็กต์จะเข้าสู่สถานะ Initialized
การเปลี่ยนทั้ง 2 แบบจะเกิดขึ้นพร้อมกันภายในการเรียก AbortSubscription()
หลังจากที่แสดงผล AbortSubscription() แล้ว ระบบอาจใช้ออบเจ็กต์ SubscriptionClient
เพื่อเริ่มการสมัครใช้บริการรายการอื่น หรืออาจเพิ่มพื้นที่ว่างโดยการเรียกใช้เมธอด Free()
ClearUpdated
WEAVE_ERROR ClearUpdated( TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle )
DisableResubscribe
void DisableResubscribe( void )
ปิดใช้กลไกการสมัครอีกครั้ง
ซึ่งจะล้มเลิกหากการสมัครใช้บริการอีกครั้งรอดำเนินการอยู่
DiscardUpdates
void DiscardUpdates()
แจ้งให้ SubscriptionClient ล้างชุด TraitPath ที่รอดำเนินการอัปเดต แล้วล้มเลิกคำขออัปเดตที่กำลังดำเนินการ หากมี
คุณสามารถเรียกใช้เมธอดนี้จาก Callback ใดก็ได้
EnableResubscribe
void EnableResubscribe( ResubscribePolicyCallback aCallback )
เปิดใช้งานการสมัครใช้บริการอีกครั้งโดยอัตโนมัติ
แนบ Callback เพื่อระบุเวลาลองอีกครั้งเมื่อล้มเหลว
รายละเอียด | |||
---|---|---|---|
พารามิเตอร์ |
|
EndSubscription
WEAVE_ERROR EndSubscription( void )
สิ้นสุดการสมัครใช้บริการ
ยุติการสมัครใช้บริการของลูกค้าอย่างค่อยเป็นค่อยไป
เมื่อเปิดใช้ตัวเลือกเวลาคอมไพล์ WDM_ENABLE_SUBSCRIPTION_CANCEL ให้ยุติการสมัครใช้บริการอย่างนุ่มนวลโดยส่ง cancelRequest ไปยังแอปเทียบเท่า ทรัพยากรที่เชื่อมโยงกับการสมัครใช้บริการจะใช้ได้ฟรีเมื่อมีการตอบกลับจากแอปเทียบเท่าหรือเมื่อหมดเวลา เมื่อปิดใช้ตัวเลือก การเรียกใช้จะเท่ากับ AbortSubscription()
ยุติการสมัครใช้บริการเมื่อสิ้นสุดไคลเอ็นต์อย่างค่อยเป็นค่อยไป หากเปิดใช้งานการสนับสนุนการยกเลิกการสมัครรับข้อมูลไว้ ข้อความ SupportCancelRequest จะถูกส่งไปยังผู้เผยแพร่ที่สมัครรับข้อมูล และระบบจะรอการตอบกลับก่อนยุติการสมัครรับข้อมูล ไม่เช่นนั้น การสมัครใช้บริการจะสิ้นสุดลงทันทีในลักษณะเดียวกับ AbortSubscription() หากมีการสมัครใช้บริการร่วมกัน การสมัครใช้บริการที่โต้แย้งจะสิ้นสุดลงด้วย
ขณะรอการตอบกลับสำหรับ SubscriptionCancelRequest แต่ SubscriptionClient
จะเข้าสู่สถานะ Canceling
เมื่อกระบวนการสิ้นสุดเริ่มขึ้น ออบเจ็กต์ SubscriptionClient
จะเข้าสู่สถานะ Terminated
และนำส่งเหตุการณ์ OnSubscriptionTerminated
ไปยังเครื่องจัดการเหตุการณ์ของแอปพลิเคชัน โปรดทราบว่าหากไม่ได้เปิดใช้การยกเลิกการสนับสนุน ระบบอาจเรียกใช้เครื่องจัดการเหตุการณ์พร้อมกันภายในการเรียก EndSubscription()
หลังจากที่ตัวแฮนเดิลเหตุการณ์ของแอปพลิเคชันกลับมา ออบเจ็กต์ SubscriptionClient
จะเข้าสู่สถานะ Initialized
ในจุดนี้ ระบบอาจใช้ออบเจ็กต์ SubscriptionClient
เพื่อเริ่มการสมัครใช้บริการรายการอื่น หรืออาจเพิ่มพื้นที่ว่างโดยการเรียกใช้เมธอด Free()
FlushUpdate
WEAVE_ERROR FlushUpdate()
สัญญาณที่แจ้งว่าแอปพลิเคชันเปลี่ยนแปลง TraitUpdatableDataSinks ทั้งหมดเรียบร้อยแล้ว
ไคลเอ็นต์จะนำข้อมูลทั้งหมดที่ทำเครื่องหมายว่าอัปเดตแล้วส่งไปให้ผู้ตอบในคำขออัปเดตรายการเดียว เว้นแต่การแลกเปลี่ยนการอัปเดตครั้งก่อนหน้าอยู่ระหว่างดำเนินการ ระบบจะเรียกใช้เมธอดนี้จากชุดข้อความใดก็ได้
รายละเอียด | |||
---|---|---|---|
พารามิเตอร์ |
|
||
การคืนสินค้า |
WEAVE_NO_ERROR ในกรณีที่สำเร็จ รหัส WEAVE_ERROR อื่นๆ ในกรณีที่เกิดข้อผิดพลาด
|
FlushUpdate
WEAVE_ERROR FlushUpdate( bool aForce )
ฟรี
void Free( void )
ทำให้ออบเจ็กต์ SubscriptionClient นี้ว่าง
ทำให้ออบเจ็กต์ SubscriptionClient
ว่าง
เรียกใช้ AbortSubscription() หากจำเป็น และปล่อยการอ้างอิงในออบเจ็กต์ SubscriptionClient นี้ หากใช้งานอย่างถูกต้อง ออบเจ็กต์นี้ควรทำให้ระบบส่งคืนออบเจ็กต์ไปยัง Object Pool
ทำให้ออบเจ็กต์ SubscriptionClient
ว่าง หากการสมัครใช้บริการมีการใช้งานอยู่หรืออยู่ระหว่างดำเนินการ การสมัครใช้บริการจะสิ้นสุดลงทันทีในลักษณะเดียวกับการเรียกใช้ AbortSubscription() หากคำขอการอัปเดตใดๆ อยู่ระหว่างดำเนินการ คำขอเหล่านั้นจะถูกล้มเลิก
แอปพลิเคชันมีหน้าที่ในการเรียกใช้ Free() เพียงครั้งเดียวในระหว่างอายุการใช้งานของออบเจ็กต์ SubscriptionClient
หลังจากเรียก Free() แล้ว ไม่ควรมีการอ้างอิงไปยังออบเจ็กต์นั้นอีก
GetBinding
Binding * GetBinding( void ) const
GetLivenessTimeoutMsec
uint32_t GetLivenessTimeoutMsec( void ) const
GetPeerNodeId
uint64_t GetPeerNodeId( void ) const
GetSubscriptionId
WEAVE_ERROR GetSubscriptionId( uint64_t *const apSubscriptionId )
IndicateActivity
void IndicateActivity( void )
InitiateCounterSubscription
void InitiateCounterSubscription( const uint32_t aLivenessTimeoutSec )
InitiateSubscription
void InitiateSubscription( void )
กำหนดค่า SubscriptionClient ในฐานะผู้เริ่ม (ไม่ใช่ผู้ใช้โต้แย้ง) และทำให้การสมัครใช้บริการใช้งานได้หากไม่ใช่
IsCanceling
bool IsCanceling() const
IsEstablished
bool IsEstablished()
IsEstablishedIdle
bool IsEstablishedIdle()
IsFree
bool IsFree()
IsInProgressOrEstablished
bool IsInProgressOrEstablished()
IsInResubscribeHoldoff
bool IsInResubscribeHoldoff()
IsRetryEnabled
bool IsRetryEnabled()
IsTerminated
bool IsTerminated()
IsUpdatePendingOrInProgress
bool IsUpdatePendingOrInProgress()
LockUpdateMutex
void LockUpdateMutex( void )
ResetResubscribe
void ResetResubscribe( void )
ใช้กลไกการสมัครใช้บริการอีกครั้ง
การดำเนินการนี้จะเริ่มต้นการลองอีกครั้งทันที
SetLivenessTimeoutMsec
void SetLivenessTimeoutMsec( uint32_t val )
SetUpdated
WEAVE_ERROR SetUpdated( TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle, bool aIsConditional )
SuspendUpdateRetries
void SuspendUpdateRetries()
แจ้งให้ SubscriptionClient หยุดลองส่งคำขออัปเดตอีกครั้ง
อนุญาตให้แอปพลิเคชันระงับการอัปเดตเป็นระยะเวลาหนึ่งโดยไม่ทิ้งข้อมูลเมตาทั้งหมด ระบบจะกลับมาอัปเดตและลองใหม่ต่อเมื่อมีการเรียกใช้ FlushUpdate เมื่อเรียกใช้ให้ระงับการอัปเดตขณะที่การอัปเดตอยู่ระหว่างดำเนินการ การอัปเดตจะไม่ถูกยกเลิก แต่หากไม่สำเร็จ จะไม่ลองอีกครั้งจนกว่าจะมีการเรียกใช้ FlushUpdate อีกครั้ง
UnlockUpdateMutex
void UnlockUpdateMutex( void )