nl::Weave::โปรไฟล์::DataManagement_Current::SUBSCRIPTIONClient

สรุป

ประเภทสาธารณะ

@130 enum
EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam) Typedef
void(*
โค้ดเรียกกลับเพื่อส่งเหตุการณ์การสมัครใช้บริการไปยังแอปพลิเคชัน
EventID{
  kEvent_OnSubscriptionTerminated = 1,
  kEvent_OnExchangeStart = 2,
  kEvent_OnSubscribeRequestPrepareNeeded = 3,
  kEvent_OnSubscriptionEstablished = 4,
  kEvent_OnNotificationRequest = 5,
  kEvent_OnNotificationProcessed = 6,
  kEvent_OnEventStreamReceived = 7,
  kEvent_OnSubscriptionActivity = 8,
  kEvent_OnUpdateComplete = 9,
  kEvent_OnNoMorePendingUpdates = 10
}
enum
ResubscribePolicyCallback)(void *const aAppState, ResubscribeParam &aInParam, uint32_t &aOutIntervalMsec) Typedef
void(*
โค้ดเรียกกลับเพื่อดึงระยะเวลารอก่อนการสมัครใช้บริการอีกครั้งถัดไป

ฟังก์ชันสาธารณะแบบคงที่

DefaultEventHandler(EventID aEvent, const InEventParam & aInParam, OutEventParam & aOutParam)
void
DefaultResubscribePolicyCallback(void *const aAppState, ResubscribeParam & aInParam, uint32_t & aOutIntervalMsec)
void
การใช้นโยบายเริ่มต้นจะสุ่มเลือกช่วงเวลาที่มีความละเอียดเป็นมิลลิวินาทีในช่วงกรอบเวลาที่เพิ่มขึ้น ตามลําดับ fibonacci สูงสุด 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
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::Weave::Profiles::DataManagement_Current::subscriptionsClient::LastObservingEvent
nl::Weave::Profiles::DataManagement_Current::subscribeClient::สมัครใช้บริการอีกครั้ง

สหภาพ

nl::Weave::Profiles::DataManagement_Current::SUBSCRIPTIONClient::InEventParam
nl::Weave::Profiles::DataManagement_Current::subscriptionsClient::OutEventParam

ประเภทสาธารณะ

130 แต้ม

 @130

เรียกกลับเหตุการณ์

void(* EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)

โค้ดเรียกกลับเพื่อส่งเหตุการณ์การสมัครใช้บริการไปยังแอปพลิเคชัน

รายละเอียด
พารามิเตอร์
[in] aAppState
ตัวชี้สถานะแอปที่กําหนดไว้ระหว่างการเริ่มต้นการสมัครใช้บริการ Client
[in] aEvent
ระบุว่ากิจกรรมใดจะเกิดขึ้น
[in] aInParam
จัดโครงสร้างด้วยรายละเอียดเพิ่มเติมเกี่ยวกับกิจกรรม
[out] aOutParam
ข้อมูลที่ส่งคืนโดยแอปพลิเคชัน

รหัสกิจกรรม

 EventID
พร็อพเพอร์ตี้
kEvent_OnEventStreamReceived

สร้างขึ้นเมื่อ SUBSCRIPTIONEngine นับสตรีมเหตุการณ์ภายในข้อความ AlertRequest

แอปพลิเคชันอาจเรียกใช้ EndSubscription(), Abortsubscriptions() หรือ Free()

kEvent_OnExchangeStart

สร้างขึ้นหลังจากเตรียมการเชื่อมโยงและได้ตั้งค่า ExchangeContext แล้ว ก่อนที่จะส่งข้อความใดๆ

นี่เป็นโอกาสสุดท้ายที่แอปพลิเคชันจะปรับการตั้งค่า ExchangeContext ทําให้ mEC ถูกต้องและปรับแต่งสําหรับการตั้งค่าระยะหมดเวลาได้ แอปพลิเคชันต้องไม่แตะช่องอื่นๆ ในไคลเอ็นต์ และต้องไม่ปิด ExchangeContext

kEvent_OnNoMorePendingUpdates

เหตุการณ์ที่บ่งบอกว่าเส้นทางทั้งหมดในชุดการอัปเดตได้รับการประมวลผลโดยกลุ่มเดียวกัน และไม่จําเป็นต้องอัปเดตเส้นทางเพิ่มเติม

kEvent_OnNotificationProcessed

สร้างขึ้นเมื่อ subscriptionEngine เสร็จสิ้นการประมวลผลข้อความการแจ้งเตือนคําขอ

แอปพลิเคชันอาจเรียกใช้ EndSubscription(), Abortsubscriptions() หรือ Free()

kEvent_OnNotificationRequest

สร้างขึ้นในคําขอการแจ้งเตือน

แอปพลิเคชันอาจเรียกใช้ EndSubscription(), Abortsubscriptions() หรือ Free()

kEvent_OnSubscribeRequestPrepareNeeded

ส่งเมื่อเครื่องพร้อมให้ส่ง

แอปพลิเคชันนี้ต้องการให้กรอกข้อมูลในเส้นทางที่ต้องการสมัคร

kEvent_OnSubscriptionActivity

เหตุการณ์ที่ระบุกิจกรรมการสมัครใช้บริการ

ระบบนี้สร้างขึ้นเมื่อใดก็ตามที่ลูกค้าได้รับการแจ้งเตือนเกี่ยวกับกิจกรรมการสมัครใช้บริการ ซึ่งรวมถึงการสมัครใช้บริการที่สําเร็จ การรับคําขอการแจ้งเตือน หรือการได้รับรายงานสถานะตอบกลับข้อความสมัครใช้บริการเพื่อยืนยัน

kEvent_OnSubscriptionEstablished

สร้างขึ้นเมื่อการสมัครใช้บริการประสบความสําเร็จ

แอปพลิเคชันอาจเรียกใช้ EndSubscription(), Abortsubscriptions() หรือ Free()

kEvent_OnSubscriptionTerminated

ทําเครื่องหมายว่าสิ้นสุดการสมัครใช้บริการนี้

พารามิเตอร์ที่ส่งไปยัง nl::Weave::Profiles::DataManagement_Current::SUBSCRIPTIONClient::EventCallback จะระบุว่าจะพยายามสมัครใช้บริการอีกครั้งโดยอัตโนมัติหรือไม่

ในระหว่างการเรียกเครื่องจัดการเหตุการณ์ สถานะของไคลเอ็นต์จะเป็น Terminated หากคุณไม่พยายามดําเนินการซ้ํา สถานะของไคลเอ็นต์จะเปลี่ยนเป็น Initialized เมื่อเครื่องจัดการเหตุการณ์กลับมา มิเช่นนั้น สถานะจะเปลี่ยนเป็น ResubscribeHoldoff และจะพยายามสร้างการสมัครใช้บริการอีกครั้งหลังจากเวลาที่มีการระงับ

แอปพลิเคชันอาจเรียก Abortsubscriptions() หรือ Free() ในสถานะนี้

พารามิเตอร์ที่ส่งจะมีรหัสข้อผิดพลาดซึ่งระบุเหตุผลที่สิ้นสุดการสมัครใช้บริการด้วย

การสมัครใช้บริการอาจถูกยกเลิกด้วยเหตุผลหลายประการ (WRM ACK ขาดหายไป, การจัดสรร ExchangeContext ไม่สําเร็จ, หมดเวลาตอบสนอง,...) รหัสข้อผิดพลาดบางส่วนที่ไคลเอ็นต์สร้างขึ้นมีดังนี้

รหัสข้อผิดพลาด ความหมาย
ประเภทข้อความแสดงข้อผิดพลาด ได้รับข้อความที่ไม่รู้จักแล้ว
หมดเวลาเมื่อเกิดข้อผิดพลาด ระบบไม่ยอมรับคําขอหรือการตรวจสอบความถูกต้องล้มเหลว
WEME_ERROR_INCORRECT_STATE ได้รับข้อความในสถานะที่ไม่คาดคิด
WEERROR_ERROR_STATUS_REPORT_RECEIVED ได้รับรายงานสถานะแล้ว
WEhave_ERROR_INVALID_PARAM ช่องคําขอการสมัครใช้บริการไม่ถูกต้อง

kEvent_OnUpdateComplete

เหตุการณ์ที่ระบุว่าการอัปเดตเสร็จสมบูรณ์

พารามิเตอร์เหตุการณ์จะระบุว่าการอัปเดตเส้นทางลักษณะเฉพาะนั้นๆ สําเร็จหรือล้มเหลว

สมัครใช้บริการ Callback ของนโยบายอีกครั้ง

void(* ResubscribePolicyCallback)(void *const aAppState, ResubscribeParam &aInParam, uint32_t &aOutIntervalMsec)

โค้ดเรียกกลับเพื่อดึงระยะเวลารอก่อนการสมัครใช้บริการอีกครั้งถัดไป

แอปพลิเคชันได้รับอนุญาตให้ยกเลิกการทํางาน/ยกเลิกฟังก์ชันนี้ในฟังก์ชันนี้ได้หากตัดสินใจยกเลิกการสมัครใช้บริการอีกครั้ง

รายละเอียด
พารามิเตอร์
[in] aAppState
ตัวชี้สถานะแอปที่กําหนดไว้ระหว่างการเริ่มต้นการสมัครใช้บริการ Client
[in] aInParam
จัดโครงสร้างพร้อมรายละเอียดเพิ่มเติมเกี่ยวกับการลองอีกครั้ง
[out] aOutIntervalMsec
เวลาเป็นมิลลิวินาทีที่จะรอก่อนลองอีกครั้ง

ฟังก์ชันสาธารณะแบบคงที่

เครื่องจัดการเหตุการณ์เริ่มต้น

void DefaultEventHandler(
  EventID aEvent,
  const InEventParam & aInParam,
  OutEventParam & aOutParam
)

ค่าเริ่มต้นการติดต่อกลับนโยบายอีกครั้ง

void DefaultResubscribePolicyCallback(
  void *const aAppState,
  ResubscribeParam & aInParam,
  uint32_t & aOutIntervalMsec
)

การใช้นโยบายเริ่มต้นจะสุ่มเลือกช่วงเวลาที่มีความละเอียดเป็นมิลลิวินาทีในช่วงกรอบเวลาที่เพิ่มขึ้น ตามลําดับ fibonacci สูงสุด WDM_RESUBSCRIBE_MAX_FIBONACCI_step_INDEX

เวลารอโดยเฉลี่ยแบบสุ่มหลังจาก WDM_RESUBSCRIBE_MAX_FIBONACCI_step_INDEX จะอยู่ที่ประมาณ 1 ชั่วโมง เมื่อรีเซ็ตจํานวนครั้งที่ลองใหม่เป็น 0 แล้ว ลําดับจะเริ่มจากจุดเริ่มต้นอีกครั้ง

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

ล้มเลิกการสมัครใช้บริการ

void AbortSubscription(
  void
)

ล้มเลิกการสมัครใช้บริการ

ล้มเลิกการสมัครใช้บริการของลูกค้า

หยุดยอมรับการเข้าชมทั้งหมดที่เชื่อมโยงกับการสมัครใช้บริการทันที และถอนทรัพยากรการสื่อสารที่สําคัญทั้งหมด ออบเจ็กต์ subscriptionClient ยังคงใช้งานได้และใช้งานได้อีกครั้ง

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

เมื่อเรียกใช้ Abortsubscriptions() ออบเจ็กต์ SubscriptionClient จะเข้าสู่สถานะ Terminated เมื่อกระบวนการสิ้นสุดเสร็จสมบูรณ์แล้ว ออบเจ็กต์จะเข้าสู่สถานะ Initialized การเปลี่ยนแปลงทั้ง 2 รายการจะเกิดขึ้นพร้อมกันในการเรียกใช้ Abortsubscriptions()

หลังจากส่งคืน Abortsubscriptions() แล้ว อาจมีการใช้ออบเจ็กต์ SubscriptionClient เพื่อเริ่มการสมัครใช้บริการอื่น หรืออาจเรียกใช้ได้โดยเรียกเมธอด Free()

ล้างข้อมูลแล้ว

WEAVE_ERROR ClearUpdated(
  TraitUpdatableDataSink *aDataSink,
  PropertyPathHandle aPropertyHandle
)

ปิดใช้งานการสมัครรับข้อมูลอีกครั้ง

void DisableResubscribe(
  void
)

ปิดกลไกการสมัครใช้บริการอีกครั้ง

การดําเนินการนี้จะยกเลิกหากการสมัครใช้บริการอีกครั้งอยู่ระหว่างรอดําเนินการ

ทิ้งการอัปเดต

void DiscardUpdates()

แจ้ง SUBSCRIPTIONClient ให้ล้างชุด TraitPath ที่รอดําเนินการเพื่ออัปเดตและยกเลิกคําขออัปเดตที่กําลังดําเนินการอยู่ (หากมี)

เมธอดนี้สามารถเรียกใช้ได้จากการติดต่อกลับ

เปิดใช้การสมัครอีกครั้ง

void EnableResubscribe(
  ResubscribePolicyCallback aCallback
)

เปิดใช้การสมัครใช้บริการอีกครั้งโดยอัตโนมัติ

แนบโค้ดเรียกกลับเพื่อระบุจํานวนครั้งที่จะลองใหม่ครั้งถัดไปเมื่อล้มเหลว

รายละเอียด
พารามิเตอร์
[in] aCallback
โค้ดเรียกกลับ (ไม่บังคับ) เพื่อดึงระยะเวลารอก่อนลองอีกครั้งหลังจากล้มเหลว หากเป็น NULL จะใช้นโยบายเริ่มต้น

สิ้นสุดการสมัครใช้บริการ

WEAVE_ERROR EndSubscription(
  void
)

สิ้นสุดการสมัครใช้บริการ

สิ้นสุดการสมัครใช้บริการของลูกค้าอย่างราบรื่น

เมื่อเปิดใช้ตัวเลือกเวลาคอมไพล์ WDM_ENABLE_SUBSCRIPTION_UPDATE แล้ว การสมัครใช้บริการจะยุติลงอย่างราบรื่นโดยส่งคําขอ Request ไปยังแอปเทียบเท่า ทรัพยากรที่เชื่อมโยงกับการสมัครใช้บริการจะถูกปล่อยว่างไว้จากเพียร์หรือเมื่อหมดเวลา เมื่อปิดใช้ตัวเลือกนี้ การเรียกจะเท่ากับ Abortsubscriptions()

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

ขณะรอการตอบกลับของการยกเลิกการสมัครใช้บริการ SubscriptionClient จะเข้าสู่สถานะ Canceling

เมื่อเริ่มกระบวนการสิ้นสุด ออบเจ็กต์ SubscriptionClient จะเข้าสู่สถานะ Terminated และจะส่งเหตุการณ์ OnSubscriptionTerminated ไปยังเครื่องจัดการเหตุการณ์ของแอปพลิเคชัน โปรดทราบว่าหากไม่เปิดใช้งานการสนับสนุนการยกเลิก เครื่องจัดการเหตุการณ์อาจเรียกใช้พร้อมกันภายในการเรียกใช้ Endsubscription()

หลังจากที่เครื่องจัดการเหตุการณ์ของแอปพลิเคชันปรากฏขึ้น ออบเจ็กต์ SubscriptionClient จะเข้าสู่สถานะ Initialized เมื่อถึงตอนนี้อาจมีการใช้ออบเจ็กต์ SubscriptionClient เพื่อเริ่มการสมัครใช้บริการอื่น หรืออาจเรียกใช้ได้โดยเรียกเมธอด Free()

FlushUpdate

WEAVE_ERROR FlushUpdate()

สัญญาณที่แจ้งว่าแอปพลิเคชันเปลี่ยนแปลง TraitUpdatableDataSinks ทั้งหมดเสร็จแล้ว

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

รายละเอียด
พารามิเตอร์
[in] aForce
หาก "จริง" จะทําให้ระบบส่งการอัปเดตทันที แม้ว่าจะมีกําหนดการลองอีกครั้งในอนาคตก็ตาม พารามิเตอร์นี้จะถือว่าเป็นเท็จโดยค่าเริ่มต้น
การคืนสินค้า
WEhave_NO_ERROR ในกรณีที่สําเร็จ รหัส WEhave_ERROR อื่นๆ ในกรณีที่ล้มเหลว

FlushUpdate

WEAVE_ERROR FlushUpdate(
  bool aForce
)

ฟรี

void Free(
  void
)

ปล่อยออบเจ็กต์ SUBSCRIPTIONClient นี้ฟรี

ยกเลิกออบเจ็กต์ SubscriptionClient

เรียก Abortsubscriptions() หากจําเป็น และปล่อย refref ในออบเจ็กต์ subscriptionClient นี้ ในส่วนการใช้งานที่ถูกต้อง การดําเนินการนี้จะช่วยให้มีการส่งออบเจ็กต์กลับมาที่พูลออบเจ็กต์

ปล่อยวัตถุ SubscriptionClient หากการสมัครใช้บริการทํางานอยู่หรืออยู่ระหว่างดําเนินการ การสมัครใช้บริการจะถูกยกเลิกในลักษณะเดียวกับการเรียกใช้ Abortsubscriptions() ทันที หากคําขออัปเดตอยู่ระหว่างดําเนินการ ระบบจะล้มเลิกคําขอที่คล้ายกันด้วย

แอปพลิเคชันจะทําหน้าที่เรียก Free() เพียงครั้งเดียวตลอดอายุการใช้งานของออบเจ็กต์ SubscriptionClient หลังจากเรียก Free() แล้ว ไม่ควรมีการอ้างอิงเพิ่มเติมสําหรับออบเจ็กต์ดังกล่าว

ดาวน์โหลด Get-inding

Binding * GetBinding(
  void
) const 

รับระยะหมดเวลาของ Liveสด

uint32_t GetLivenessTimeoutMsec(
  void
) const 

GetPeerNodeId

uint64_t GetPeerNodeId(
  void
) const 

รับรหัสการสมัครรับข้อมูล

WEAVE_ERROR GetSubscriptionId(
  uint64_t *const apSubscriptionId
)

ระบุกิจกรรม

void IndicateActivity(
  void
)

เริ่มต้นตัวนับ

void InitiateCounterSubscription(
  const uint32_t aLivenessTimeoutSec
)

เริ่มสมัครใช้บริการ

void InitiateSubscription(
  void
)

กําหนดค่า subscriptionClient เป็นผู้เริ่ม (ไม่ใช่ผู้ติดตามแทน) แล้วเปิดใช้การสมัครใช้บริการหากไม่ใช่

กําลังยกเลิก

bool IsCanceling() const 

เป็นที่รู้จัก

bool IsEstablished()

เป็นที่ยอมรับ

bool IsEstablishedIdle()

ฟรี

bool IsFree()

กําลังดําเนินการหรือเป็นที่รู้จัก

bool IsInProgressOrEstablished()

IsInResubscribeholdoff

bool IsInResubscribeHoldoff()

เป็นลองใหม่อีกครั้ง

bool IsRetryEnabled()

สิ้นสุด

bool IsTerminated()

IsUpdatePendingOrInProgress

bool IsUpdatePendingOrInProgress()

LockUpdateMutex

void LockUpdateMutex(
  void
)

OnCatalogChanged

void OnCatalogChanged()

คุณควรเรียกใช้เมธอดนี้เมื่อแก้ไขแคตตาล็อก TraitDataSink แล้ว

รีเซ็ตการสมัครใช้บริการอีกครั้ง

void ResetResubscribe(
  void
)

เปิดกลไกการสมัครใช้บริการอีกครั้ง

การดําเนินการนี้จะเริ่มต้นทันทีทันที

SetLivenessTimeoutMsec

void SetLivenessTimeoutMsec(
  uint32_t val
)

ตั้งค่าแล้ว

WEAVE_ERROR SetUpdated(
  TraitUpdatableDataSink *aDataSink,
  PropertyPathHandle aPropertyHandle,
  bool aIsConditional
)

ระงับการอัปเดต

void SuspendUpdateRetries()

แจ้ง SUBSCRIPTIONClient ให้หยุดส่งคําขออัปเดตอีกครั้ง

อนุญาตให้แอปพลิเคชันระงับการอัปเดตเป็นระยะเวลาหนึ่งโดยไม่ต้องทิ้งข้อมูลเมตาทั้งหมด การอัปเดตและการลองใหม่จะกลับมาทํางานอีกครั้งเมื่อเรียกใช้ FlushUpdate เมื่อเรียกใช้การระงับการอัปเดตขณะกําลังดําเนินการอยู่ ระบบจะไม่อัปเดตการอัปเดตนั้น แต่ในกรณีที่ดําเนินการไม่สําเร็จ ระบบจะไม่พยายามอัปเดตอีกจนกว่าจะเรียกใช้ FlushUpdate อีกครั้ง

ปลดล็อกUpdateUpdatex

void UnlockUpdateMutex(
  void
)