nl::Weave::Profiles::DataManagement_Current::LoggingManagement

#include <src/lib/profiles/data-management/Current/LoggingManagement.h>

คลาสสำหรับจัดการบันทึกเหตุการณ์ในหน่วยความจำ

สรุป

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

LoggingManagement(nl::Weave::WeaveExchangeManager *inMgr, size_t inNumBuffers, const LogStorageResources *const inLogStorageResources)
เครื่องมือสร้าง LoggingManagement
LoggingManagement(void)
ตัวสร้างเริ่มต้น LoggingManagement

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

BlitEvent(EventLoadOutContext *aContext, const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions)
ฟังก์ชันตัวช่วยสำหรับการเขียนส่วนหัวและข้อมูลของเหตุการณ์ตามโปรโตคอลการบันทึกเหตุการณ์
CancelShutdownInProgress(void)
void
ตั้งค่าสถานะ mShutdownInProgress เป็น "เท็จ"
CheckShouldRunWDM(void)
bool
เลือกว่าจะลดภาระงานเหตุการณ์โดยอิงตามจำนวนไบต์ในบัฟเฟอร์เหตุการณ์ที่ไม่ได้ตั้งเวลาสำหรับการอัปโหลดหรือไม่
FetchEventsSince(nl::Weave::TLV::TLVWriter & ioWriter, ImportanceType inImportance, event_id_t & ioEventID)
ฟังก์ชันสำหรับเรียกข้อมูลเหตุการณ์ที่มีความสำคัญที่ระบุตั้งแต่รหัสเหตุการณ์ที่ระบุ
GetBytesWritten(void) const
uint32_t
รับจำนวนไบต์ทั้งหมดที่เขียน (สำหรับความสำคัญของเหตุการณ์ทั้งหมด) มายังบันทึกนี้นับตั้งแต่การเริ่มต้น
GetEventReader(nl::Weave::TLV::TLVReader & ioReader, ImportanceType inImportance)
วิธีตัวช่วยที่เป็นประโยชน์สำหรับการตรวจสอบบัฟเฟอร์บันทึกในหน่วยความจำ
GetFirstEventID(ImportanceType inImportance)
ดึงข้อมูลรหัสเหตุการณ์แรกที่จัดเก็บไว้สำหรับระดับความสำคัญหนึ่งๆ ในปัจจุบัน
GetLastEventID(ImportanceType inImportance)
ดึงข้อมูลรหัสที่ใช้ล่าสุดสำหรับระดับความสำคัญหนึ่งๆ
IsShutdownInProgress(void)
bool
ตรวจสอบแฟล็ก mShutdownInProgress
IsValid(void)
bool
IsValid แสดงผลว่าอินสแตนซ์ LoggingManagement ใช้งานได้หรือไม่
LoadEvents(TLVReader & reader)
โหลดเหตุการณ์ Weave ที่บันทึกไว้ก่อนหน้านี้
LogEvent(const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions)
บันทึกเหตุการณ์ผ่าน Callback พร้อมตัวเลือก
MarkShutdownInProgress(void)
void
ตั้งค่าสถานะ mShutdownInProgress เป็น "จริง"
NotifyEventsDelivered(ImportanceType inImportance, event_id_t inLastDeliveredEventID, uint64_t inRecipientNodeID)
void
RegisterEventCallbackForImportance(ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, NotifyExternalEventsDeliveredFunct inNotifyCallback, NotifyExternalEventsEvictedFunct inEvictedCallback, size_t inNumEvents, event_id_t *outLastEventID)
API สาธารณะสำหรับการลงทะเบียนชุดเหตุการณ์ที่จัดเก็บไว้ภายนอก
RegisterEventCallbackForImportance(ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, NotifyExternalEventsDeliveredFunct inNotifyCallback, size_t inNumEvents, event_id_t *outLastEventID)
API สาธารณะสำหรับการลงทะเบียนชุดเหตุการณ์ที่จัดเก็บไว้ภายนอก
RegisterEventCallbackForImportance(ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, size_t inNumEvents, event_id_t *outLastEventID)
API สาธารณะสำหรับการลงทะเบียนชุดเหตุการณ์ที่จัดเก็บไว้ภายนอก
ScheduleFlushIfNeeded(bool inFlushRequested)
กําหนดเวลางานยกเลิกการโหลดบันทึก
SerializeEvents(TLVWriter & writer)
ทำให้เหตุการณ์ Weave เป็นอนุกรมของประเภทความสำคัญทั้งหมด
SetBDXUploader(LogBDXUpload *inUploader)
void
SetExchangeManager(nl::Weave::WeaveExchangeManager *inMgr)
ตั้งค่า WeaveExchangeManager เพื่อใช้กับระบบย่อยของการบันทึกนี้
SetLoggingEndpoint(event_id_t *inEventEndpoints, size_t inNumImportanceLevels, size_t & outLoggingPosition)
SkipEvent(EventLoadOutContext *aContext)
void
ฟังก์ชันตัวช่วยในการข้ามการเขียนเหตุการณ์ที่สอดคล้องกับรหัสเหตุการณ์ที่จัดสรรไว้
ThrottleLogger(void)
void
ThrottleLogger จะยกระดับการบันทึกที่มีประสิทธิภาพเป็นระดับการผลิต
UnregisterEventCallbackForImportance(ImportanceType inImportance, event_id_t inEventID)
void
API สาธารณะสำหรับการยกเลิกการลงทะเบียนชุดเหตุการณ์ที่จัดเก็บไว้ภายนอก
UnthrottleLogger(void)
void
UnthrottleLogger จะคืนค่าระดับการบันทึกที่มีประสิทธิภาพเป็นระดับการบันทึกที่กำหนดค่าไว้

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

CreateLoggingManagement(nl::Weave::WeaveExchangeManager *inMgr, size_t inNumBuffers, const LogStorageResources *const inLogStorageResources)
void
สร้างออบเจ็กต์ LoggingManagement และเริ่มต้นระบบย่อยสำหรับการจัดการการบันทึกด้วยทรัพยากรที่มีให้
DestroyLoggingManagement(void)
void
ดำเนินการทุกอย่างที่จำเป็นเมื่อปิดระบบ
GetInstance(void)

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

BlitEvent

WEAVE_ERROR BlitEvent(
  EventLoadOutContext *aContext,
  const EventSchema & inSchema,
  EventWriterFunct inEventWriter,
  void *inAppData,
  const EventOptions *inOptions
)

ฟังก์ชันตัวช่วยสำหรับการเขียนส่วนหัวและข้อมูลของเหตุการณ์ตามโปรโตคอลการบันทึกเหตุการณ์

รายละเอียด
พารามิเตอร์
[in,out] aContext
EventLoadOutContext ซึ่งเริ่มต้นด้วยข้อมูลแบบเก็บสถานะสำหรับบัฟเฟอร์ BlitEvent จะได้รับการอัปเดตและเก็บรักษาสถานะโดยใช้บริบทนี้
[in] inSchema
สคีมาที่ระบุความสำคัญ รหัสโปรไฟล์ และประเภทโครงสร้างของกิจกรรมนี้
[in] inEventWriter
Callback ที่จะเรียกใช้เพื่อเรียงลำดับข้อมูลเหตุการณ์
[in] inAppData
บริบทแอปพลิเคชันสำหรับการติดต่อกลับ
[in] inOptions
EventOptions ที่อธิบายการประทับเวลาและแท็กอื่นๆ ที่เกี่ยวข้องกับกิจกรรมนี้

CancelShutdownInProgress

void CancelShutdownInProgress(
  void
)

ตั้งค่าสถานะ mShutdownInProgress เป็น "เท็จ"

CheckShouldRunWDM

bool CheckShouldRunWDM(
  void
)

เลือกว่าจะลดภาระงานเหตุการณ์โดยอิงตามจำนวนไบต์ในบัฟเฟอร์เหตุการณ์ที่ไม่ได้กำหนดเวลาสำหรับการอัปโหลดหรือไม่

ลักษณะการทำงานของฟังก์ชันมีการควบคุมผ่านค่าคงที่ WEAVE_CONFIG_EVENT_LOGGING_BYTE_THRESHOLD ถ้าระบบเขียนมากกว่าจำนวนไบต์ดังกล่าวนับตั้งแต่เวลาที่มีการส่งการแจ้งเตือน WDM ครั้งล่าสุด ฟังก์ชันจะระบุว่าถึงเวลาที่จะทริกเกอร์ NotificationEngine แล้ว

รายละเอียด
ผลลัพธ์
true
ควรยกเลิกการโหลดกิจกรรม
false
ไม่เช่นนั้น

FetchEventsSince

WEAVE_ERROR FetchEventsSince(
  nl::Weave::TLV::TLVWriter & ioWriter,
  ImportanceType inImportance,
  event_id_t & ioEventID
)

ฟังก์ชันสำหรับเรียกข้อมูลเหตุการณ์ที่มีความสำคัญที่ระบุตั้งแต่รหัสเหตุการณ์ที่ระบุ

โดยใช้ nl::Weave::TLV::TLVWriter ซึ่งเป็นประเภทความสำคัญ และรหัสเหตุการณ์ ฟังก์ชันจะดึงเหตุการณ์ที่มีความสำคัญที่ระบุตั้งแต่เหตุการณ์ที่ระบุ ฟังก์ชันนี้จะยังดึงข้อมูลกิจกรรมต่อไปจนกว่าจะไม่มีพื้นที่ใน nl::Weave::TLV::TLVWriter หรือในบันทึก ฟังก์ชันนี้จะยุติการเขียนเหตุการณ์บนขอบเขตเหตุการณ์

รายละเอียด
พารามิเตอร์
[in] ioWriter
ผู้เขียนที่จะใช้สำหรับพื้นที่เก็บข้อมูลกิจกรรม
[in] inImportance
ความสำคัญของการดึงข้อมูลเหตุการณ์
[in,out] ioEventID
เมื่อป้อนข้อมูล รหัสของเหตุการณ์ที่อยู่ก่อนหน้าเหตุการณ์ที่เราดึงข้อมูล เมื่อดำเนินการเสร็จแล้ว ระบบจะดึงข้อมูลรหัสของเหตุการณ์ล่าสุด
ผลลัพธ์
WEAVE_END_OF_TLV
ฟังก์ชันนี้ถึงส่วนท้ายของรายการบันทึกที่ใช้ได้ที่ระดับความสำคัญที่ระบุแล้ว
WEAVE_ERROR_NO_MEMORY
ฟังก์ชันใน ioWriter เต็มพื้นที่ยังมีเหตุการณ์เพิ่มเติมในบันทึก
WEAVE_ERROR_BUFFER_TOO_SMALL
ฟังก์ชันใน ioWriter เต็มแล้ว ยังมีกิจกรรมเพิ่มเติมในบันทึกอยู่

GetBytesWritten

uint32_t GetBytesWritten(
  void
) const 

รับจำนวนไบต์ทั้งหมดที่เขียน (สำหรับความสำคัญของเหตุการณ์ทั้งหมด) มายังบันทึกนี้นับตั้งแต่การเริ่มต้น

รายละเอียด
การคืนสินค้า
จำนวนไบต์ที่เขียนลงในบันทึก

GetEventReader

WEAVE_ERROR GetEventReader(
  nl::Weave::TLV::TLVReader & ioReader,
  ImportanceType inImportance
)

วิธีตัวช่วยที่เป็นประโยชน์สำหรับการตรวจสอบบัฟเฟอร์บันทึกในหน่วยความจำ

รายละเอียด
พารามิเตอร์
[in,out] ioReader
การอ้างอิงไปยังเครื่องอ่านที่จะเริ่มด้วยพื้นที่เก็บข้อมูลสํารองจากบันทึกเหตุการณ์
[in] inImportance
ความสำคัญเริ่มต้นของผู้อ่าน โปรดทราบว่าในกรณีนี้ ความสำคัญเริ่มต้นนั้นค่อนข้างตรงไปตรงมา: เหตุการณ์ที่สำคัญกว่าจะแชร์บัฟเฟอร์กับเหตุการณ์ที่มีความสำคัญน้อยกว่า นอกเหนือจากบัฟเฟอร์เฉพาะของตน ดังนั้น ผู้อ่านจะข้ามผ่านข้อมูลที่น้อยที่สุดเมื่อมีการส่งความสำคัญในการแก้ไขข้อบกพร่องเข้ามา
การคืนสินค้า
WEAVE_NO_ERROR โดยไม่มีเงื่อนไข

GetFirstEventID

event_id_t GetFirstEventID(
  ImportanceType inImportance
)

ดึงข้อมูลรหัสเหตุการณ์แรกที่จัดเก็บไว้สำหรับระดับความสำคัญหนึ่งๆ ในปัจจุบัน

รายละเอียด
พารามิเตอร์
inImportance
ระดับความสำคัญ
การคืนสินค้า
event_id_t รหัสเหตุการณ์ที่จัดเก็บครั้งแรกในปัจจุบันสำหรับความสำคัญของเหตุการณ์นั้น

GetLastEventID

event_id_t GetLastEventID(
  ImportanceType inImportance
)

ดึงข้อมูลรหัสที่ใช้ล่าสุดสำหรับระดับความสำคัญหนึ่งๆ

รายละเอียด
พารามิเตอร์
inImportance
ระดับความสำคัญ
การคืนสินค้า
event_id_t รหัสเหตุการณ์ที่ vended ล่าสุดสำหรับความสำคัญของเหตุการณ์นั้น

IsShutdownInProgress

bool IsShutdownInProgress(
  void
)

ตรวจสอบแฟล็ก mShutdownInProgress

IsValid

bool IsValid(
  void
)

IsValid แสดงผลว่าอินสแตนซ์ LoggingManagement ใช้งานได้หรือไม่

รายละเอียด
ผลลัพธ์
true
อินสแตนซ์ถูกต้อง (เริ่มต้นโดยมีที่เก็บสำรองที่เหมาะสม)
false
ไม่เช่นนั้น

LoadEvents

WEAVE_ERROR LoadEvents(
  TLVReader & reader
)

โหลดเหตุการณ์ Weave ที่บันทึกไว้ก่อนหน้านี้

LogEvent

event_id_t LogEvent(
  const EventSchema & inSchema,
  EventWriterFunct inEventWriter,
  void *inAppData,
  const EventOptions *inOptions
)

บันทึกเหตุการณ์ผ่าน Callback พร้อมตัวเลือก

ฟังก์ชันนี้จะบันทึกเหตุการณ์ที่แสดงเป็น EventWriterFunct และบริบท appData เฉพาะแอป ฟังก์ชันนี้จะเขียนข้อมูลเมตาของเหตุการณ์และเรียก inEventWriter ด้วยการอ้างอิง nl::Weave::TLV::TLVWriter และบริบท inAppData เพื่อให้รหัสผู้ใช้ปล่อยข้อมูลเหตุการณ์ลงในบันทึกเหตุการณ์ได้โดยตรง การบันทึกเหตุการณ์รูปแบบนี้จะลดการใช้หน่วยความจำ เนื่องจากมีการเรียงลำดับข้อมูลเหตุการณ์ลงในบัฟเฟอร์เป้าหมายโดยตรง ข้อมูลเหตุการณ์ต้องมีแท็กบริบทเพื่อให้ตีความภายในสคีมาที่ระบุโดย inProfileID และ inEventType ระบบจะไม่สนใจแท็กขององค์ประกอบแรก ระบบบันทึกเหตุการณ์จะแทนที่ด้วยแท็ก eventData

ระบบจะบันทึกเหตุการณ์หากความสำคัญของสคีมาเกินเกณฑ์การบันทึกที่ระบุใน LoggingConfiguration หากความสำคัญของเหตุการณ์ไม่เป็นไปตามเกณฑ์ปัจจุบัน ระบบจะยกเลิกและฟังก์ชันจะแสดงผล 0 เป็นรหัสเหตุการณ์ผลลัพธ์

คำขอตัวแปรนี้อนุญาตให้ผู้โทรตั้งค่า EventOptions แบบผสมใดก็ได้

  • การประทับเวลา เมื่อ 0 เป็นค่าเริ่มต้นเป็นเวลาปัจจุบัน ณ จุดที่มีการโทร
  • "รูท" ของแหล่งที่มาของเหตุการณ์ (แหล่งที่มาของเหตุการณ์และรหัสลักษณะ) หากเป็น NULL ระบบจะใช้อุปกรณ์ปัจจุบันเป็นค่าเริ่มต้น มีการทำเครื่องหมายเหตุการณ์ว่าเกี่ยวข้องกับอุปกรณ์ที่โทรออก
  • รหัสเหตุการณ์ที่เกี่ยวข้องสำหรับการจัดกลุ่มรหัสเหตุการณ์ เมื่อรหัสเหตุการณ์ที่เกี่ยวข้องเป็น 0 ระบบจะทําเครื่องหมายเหตุการณ์ว่าไม่เกี่ยวข้องกับเหตุการณ์อื่นๆ
  • ความเร่งด่วน โดยไม่เร่งด่วนโดยค่าเริ่มต้น

รายละเอียด
พารามิเตอร์
[in] inSchema
สคีมาที่ระบุความสำคัญ รหัสโปรไฟล์ และประเภทโครงสร้างของกิจกรรมนี้
[in] inEventWriter
Callback ที่จะเรียกใช้เพื่อเรียงลำดับข้อมูลเหตุการณ์จริง
[in] inAppData
บริบทแอปพลิเคชันสำหรับการติดต่อกลับ
[in] inOptions
ตัวเลือกสำหรับข้อมูลเมตาของเหตุการณ์ อาจเป็นค่าว่าง
การคืนสินค้า
event_id_t รหัสกิจกรรมหากมีการเขียนกิจกรรมลงในบันทึก มิฉะนั้นจะเป็น 0

LoggingManagement

 LoggingManagement(
  nl::Weave::WeaveExchangeManager *inMgr,
  size_t inNumBuffers,
  const LogStorageResources *const inLogStorageResources
)

เครื่องมือสร้าง LoggingManagement

เริ่มต้น LoggingManagement ด้วยอาร์เรย์ LogStorageResources อาร์เรย์ต้องระบุทรัพยากรสำหรับระดับความสำคัญที่ถูกต้องแต่ละระดับ องค์ประกอบของอาร์เรย์ต้องอยู่ในการเพิ่มค่าตัวเลขของความสำคัญ (และลดความสำคัญ) องค์ประกอบแรกในอาร์เรย์จะสอดคล้องกับทรัพยากรที่จัดสรรไว้สำหรับเหตุการณ์ที่สำคัญที่สุด และองค์ประกอบสุดท้ายสอดคล้องกับเหตุการณ์ที่สำคัญน้อยที่สุด

รายละเอียด
พารามิเตอร์
[in] inMgr
WeaveExchangeManager เพื่อใช้กับระบบย่อยของการบันทึกนี้
[in] inNumBuffers
จำนวนองค์ประกอบในอาร์เรย์ inLogStorageResources
[in] inLogStorageResources
อาร์เรย์ของ LogStorageResources สำหรับความสำคัญแต่ละระดับ

LoggingManagement

 LoggingManagement(
  void
)

ตัวสร้างเริ่มต้น LoggingManagement

มีไว้เพื่อทำให้คอมไพเลอร์พึงพอใจเป็นหลัก

รายละเอียด
การคืนสินค้า

MarkShutdownInProgress

void MarkShutdownInProgress(
  void
)

ตั้งค่าสถานะ mShutdownInProgress เป็น true

NotifyEventsDelivered

void NotifyEventsDelivered(
  ImportanceType inImportance,
  event_id_t inLastDeliveredEventID,
  uint64_t inRecipientNodeID
)

RegisterEventCallbackForImportance

WEAVE_ERROR RegisterEventCallbackForImportance(
  ImportanceType inImportance,
  FetchExternalEventsFunct inFetchCallback,
  NotifyExternalEventsDeliveredFunct inNotifyCallback,
  NotifyExternalEventsEvictedFunct inEvictedCallback,
  size_t inNumEvents,
  event_id_t *outLastEventID
)

API สาธารณะสำหรับการลงทะเบียนชุดเหตุการณ์ที่จัดเก็บไว้ภายนอก

ลงทะเบียน Callback ของแบบฟอร์ม FetchExternalEventsFunct API นี้กำหนดให้แพลตฟอร์มทราบจำนวนกิจกรรมในการลงทะเบียน การทำงานภายในกำหนดให้ตัวเลขนี้เป็นค่าคงที่ เนื่องจาก API นี้ไม่อนุญาตให้แพลตฟอร์มลงทะเบียนรหัสเหตุการณ์ที่เฉพาะเจาะจง จึงทำให้แพลตฟอร์มไม่เก็บข้อมูลเหตุการณ์ (อย่างน้อยต้องมีรหัสเหตุการณ์ที่ไม่ซ้ำ)

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

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

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

หากออบเจ็กต์เหตุการณ์ภายนอกถูกนำออกจากบัฟเฟอร์บันทึก ผู้ให้บริการภายนอกจะได้รับการแจ้งเตือนพร้อมกับสำเนาของออบเจ็กต์เหตุการณ์ภายนอก

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

ดูรายละเอียดเกี่ยวกับสิ่งที่ Callback ต้องใช้ในเอกสารประกอบสำหรับ FetchExternalEventsFunct

รายละเอียด
พารามิเตอร์
[in] inImportance
ระดับความสำคัญ
[in] inFetchCallback
ติดต่อกลับเพื่อลงทะเบียนเพื่อดึงข้อมูลเหตุการณ์ภายนอก
[in] inNotifyCallback
ติดต่อกลับเพื่อลงทะเบียนรับการแจ้งเตือนการจัดส่ง
[in] inEvictedCallback
ติดต่อกลับเพื่อลงทะเบียนรับการแจ้งเตือนการปลดออก
[in] inNumEvents
จำนวนเหตุการณ์ในชุดนี้
[out] outLastEventID
ชี้ไปที่ event_id_t; เมื่อลงทะเบียนกิจกรรมภายนอกสำเร็จ ฟังก์ชันจะจัดเก็บรหัสเหตุการณ์ที่สอดคล้องกับรหัสเหตุการณ์สุดท้ายของบล็อกกิจกรรมภายนอก พารามิเตอร์อาจเป็น NULL
ผลลัพธ์
WEAVE_ERROR_NO_MEMORY
หากไม่มีสล็อต Callback เพิ่มเติม
WEAVE_ERROR_INVALID_ARGUMENT
ฟังก์ชัน Callback ที่เป็น Null หรือไม่มีเหตุการณ์ที่จะลงทะเบียน
WEAVE_NO_ERROR
สำเร็จแล้ว

RegisterEventCallbackForImportance

WEAVE_ERROR RegisterEventCallbackForImportance(
  ImportanceType inImportance,
  FetchExternalEventsFunct inFetchCallback,
  NotifyExternalEventsDeliveredFunct inNotifyCallback,
  size_t inNumEvents,
  event_id_t *outLastEventID
)

API สาธารณะสำหรับการลงทะเบียนชุดเหตุการณ์ที่จัดเก็บไว้ภายนอก

ลงทะเบียน Callback ของแบบฟอร์ม FetchExternalEventsFunct API นี้กำหนดให้แพลตฟอร์มทราบจำนวนกิจกรรมในการลงทะเบียน การทำงานภายในกำหนดให้ตัวเลขนี้เป็นค่าคงที่ เนื่องจาก API นี้ไม่อนุญาตให้แพลตฟอร์มลงทะเบียนรหัสเหตุการณ์ที่เฉพาะเจาะจง จึงทำให้แพลตฟอร์มไม่เก็บข้อมูลเหตุการณ์ (อย่างน้อยต้องมีรหัสเหตุการณ์ที่ไม่ซ้ำ)

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

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

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

ดูรายละเอียดเกี่ยวกับสิ่งที่ Callback ต้องใช้ในเอกสารประกอบสำหรับ FetchExternalEventsFunct

รายละเอียด
พารามิเตอร์
[in] inImportance
ระดับความสำคัญ
[in] inCallback
ติดต่อกลับเพื่อลงทะเบียนเพื่อดึงข้อมูลเหตุการณ์ภายนอก
[in] inNotifyCallback
ติดต่อกลับเพื่อลงทะเบียนรับการแจ้งเตือนการจัดส่ง
[in] inNumEvents
จำนวนเหตุการณ์ในชุดนี้
[out] outLastEventID
ชี้ไปที่ event_id_t; เมื่อลงทะเบียนกิจกรรมภายนอกสำเร็จ ฟังก์ชันจะจัดเก็บรหัสเหตุการณ์ที่สอดคล้องกับรหัสเหตุการณ์สุดท้ายของบล็อกกิจกรรมภายนอก พารามิเตอร์อาจเป็น NULL
ผลลัพธ์
WEAVE_ERROR_NO_MEMORY
หากไม่มีสล็อต Callback เพิ่มเติม
WEAVE_ERROR_INVALID_ARGUMENT
ฟังก์ชัน Callback ที่เป็น Null หรือไม่มีเหตุการณ์ที่จะลงทะเบียน
WEAVE_NO_ERROR
สำเร็จแล้ว

RegisterEventCallbackForImportance

WEAVE_ERROR RegisterEventCallbackForImportance(
  ImportanceType inImportance,
  FetchExternalEventsFunct inFetchCallback,
  size_t inNumEvents,
  event_id_t *outLastEventID
)

API สาธารณะสำหรับการลงทะเบียนชุดเหตุการณ์ที่จัดเก็บไว้ภายนอก

ลงทะเบียน Callback ของแบบฟอร์ม FetchExternalEventsFunct API นี้กำหนดให้แพลตฟอร์มทราบจำนวนกิจกรรมในการลงทะเบียน การทำงานภายในกำหนดให้ตัวเลขนี้เป็นค่าคงที่ เนื่องจาก API นี้ไม่อนุญาตให้แพลตฟอร์มลงทะเบียนรหัสเหตุการณ์ที่เฉพาะเจาะจง จึงทำให้แพลตฟอร์มไม่เก็บข้อมูลเหตุการณ์ (อย่างน้อยต้องมีรหัสเหตุการณ์ที่ไม่ซ้ำ)

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

ตัวแปรของฟังก์ชันควรใช้เมื่อผู้ให้บริการภายนอกต้องการการแจ้งเตือน ไม่ใช่เมื่อมีการส่งเหตุการณ์ภายนอกหรือเมื่อมีการนำออบเจ็กต์เหตุการณ์ภายนอกออก

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

ดูรายละเอียดเกี่ยวกับสิ่งที่ Callback ต้องใช้ในเอกสารประกอบสำหรับ FetchExternalEventsFunct

รายละเอียด
พารามิเตอร์
[in] inImportance
ระดับความสำคัญ
[in] inCallback
ติดต่อกลับเพื่อลงทะเบียนเพื่อดึงข้อมูลเหตุการณ์ภายนอก
[in] inNumEvents
จำนวนเหตุการณ์ในชุดนี้
[out] outLastEventID
ชี้ไปที่ event_id_t; เมื่อลงทะเบียนกิจกรรมภายนอกสำเร็จ ฟังก์ชันจะจัดเก็บรหัสเหตุการณ์ที่สอดคล้องกับรหัสเหตุการณ์สุดท้ายของบล็อกกิจกรรมภายนอก พารามิเตอร์อาจเป็น NULL
ผลลัพธ์
WEAVE_ERROR_NO_MEMORY
หากไม่มีสล็อต Callback เพิ่มเติม
WEAVE_ERROR_INVALID_ARGUMENT
ฟังก์ชัน Callback ที่เป็น Null หรือไม่มีเหตุการณ์ที่จะลงทะเบียน
WEAVE_NO_ERROR
สำเร็จแล้ว

ScheduleFlushIfNeeded

WEAVE_ERROR ScheduleFlushIfNeeded(
  bool inFlushRequested
)

กําหนดเวลางานยกเลิกการโหลดบันทึก

ฟังก์ชันนี้จะตัดสินใจว่าจะกำหนดเวลาขั้นตอนการลดภาระงานหรือไม่ หากใช่ ระบบจะกำหนดเวลาให้ LoggingFlushHandler ทำงานแบบไม่พร้อมกันบนเทรด Weave

การตัดสินใจกำหนดเวลาการล้างออกขึ้นอยู่กับปัจจัย 3 ประการดังนี้

คำขอที่ชัดแจ้งเพื่อล้างบัฟเฟอร์

สถานะของบัฟเฟอร์เหตุการณ์และปริมาณข้อมูลที่ยังไม่ได้ซิงค์กับผู้บริโภคเหตุการณ์

ว่ามีเหตุการณ์คำขอล้างคำขอที่รอดำเนินการอยู่แล้วหรือไม่

คำขอที่ชัดแจ้งเพื่อกำหนดเวลาการล้างออกจะส่งผ่านพารามิเตอร์อินพุต

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

สถานะรอดำเนินการของบันทึกเหตุการณ์จะระบุด้วยตัวแปร mUploadRequested เนื่องจากเทรดหลายรายการเรียกใช้ฟังก์ชันนี้ได้ จึงต้องอ่านและตั้งค่า mUploadRequested ด้วยอะตอม เพื่อหลีกเลี่ยงการตั้งเวลา LoggingFlushHandler ที่ซ้ำซ้อนก่อนที่จะส่งการแจ้งเตือน

รายละเอียด
พารามิเตอร์
inRequestFlush
ค่าบูลีนที่ระบุว่าควรกำหนดเวลาการล้างออกหรือไม่ โดยไม่คำนึงถึงนโยบายการจัดการบัฟเฟอร์ภายใน
ผลลัพธ์
WEAVE_ERROR_INCORRECT_STATE
โมดูล LoggingManagement ยังไม่ได้เริ่มต้นโดยสมบูรณ์
WEAVE_NO_ERROR
สำเร็จแล้ว

SerializeEvents

WEAVE_ERROR SerializeEvents(
  TLVWriter & writer
)

ทำให้เหตุการณ์ Weave เป็นอนุกรมของประเภทความสำคัญทั้งหมด

ทำให้เหตุการณ์ใน WeaveCircularTLVBuffer และสถานะที่เกี่ยวข้องเป็นอนุกรมลงในบัฟเฟอร์ที่ให้มา

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

SetBDXUploader

void SetBDXUploader(
  LogBDXUpload *inUploader
)

SetExchangeManager

WEAVE_ERROR SetExchangeManager(
  nl::Weave::WeaveExchangeManager *inMgr
)

ตั้งค่า WeaveExchangeManager เพื่อใช้กับระบบย่อยของการบันทึกนี้

ในบางแพลตฟอร์ม อาจต้องดำเนินการแยกต่างหากจาก CreateLoggingManagement() ด้านบน

รายละเอียด
พารามิเตอร์
[in] inMgr
WeaveExchangeManager เพื่อใช้กับระบบย่อยของการบันทึกนี้

SetLoggingEndpoint

WEAVE_ERROR SetLoggingEndpoint(
  event_id_t *inEventEndpoints,
  size_t inNumImportanceLevels,
  size_t & outLoggingPosition
)

SkipEvent

void SkipEvent(
  EventLoadOutContext *aContext
)

ฟังก์ชันตัวช่วยในการข้ามการเขียนเหตุการณ์ที่สอดคล้องกับรหัสเหตุการณ์ที่จัดสรรไว้

รายละเอียด
พารามิเตอร์
[in,out] aContext
EventLoadOutContext ซึ่งเริ่มต้นด้วยข้อมูลแบบเก็บสถานะสำหรับบัฟเฟอร์ BlitEvent จะได้รับการอัปเดตและเก็บรักษาสถานะโดยใช้บริบทนี้

ThrottleLogger

void ThrottleLogger(
  void
)

ThrottleLogger จะยกระดับการบันทึกที่มีประสิทธิภาพเป็นระดับการผลิต

UnregisterEventCallbackForImportance

void UnregisterEventCallbackForImportance(
  ImportanceType inImportance,
  event_id_t inEventID
)

API สาธารณะสำหรับการยกเลิกการลงทะเบียนชุดเหตุการณ์ที่จัดเก็บไว้ภายนอก

การยกเลิกการลงทะเบียน Callback จะป้องกันไม่ให้ LoggingManagement เรียกใช้ Callback สำหรับชุดเหตุการณ์ LoggingManagement จะไม่ส่งรหัสเหตุการณ์เหล่านั้นไปให้ผู้ติดตามอีกต่อไป

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

ฟังก์ชันนี้ทำงานสำเร็จโดยไม่มีเงื่อนไข หาก Callback ไม่เคยลงทะเบียนหรือยังไม่ได้ลงทะเบียนไปแล้ว จะไม่มีการดำเนินการ

รายละเอียด
พารามิเตอร์
[in] inImportance
ระดับความสำคัญ
[in] inEventID
รหัสเหตุการณ์ที่เกี่ยวข้องกับเหตุการณ์ใดๆ ในบล็อกเหตุการณ์ภายนอกที่จะยกเลิกการลงทะเบียน

UnthrottleLogger

void UnthrottleLogger(
  void
)

UnthrottleLogger จะคืนค่าระดับการบันทึกที่มีประสิทธิภาพเป็นระดับการบันทึกที่กำหนดค่าไว้

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

CreateLoggingManagement

void CreateLoggingManagement(
  nl::Weave::WeaveExchangeManager *inMgr,
  size_t inNumBuffers,
  const LogStorageResources *const inLogStorageResources
)

สร้างออบเจ็กต์ LoggingManagement และเริ่มต้นระบบย่อยสำหรับการจัดการการบันทึกด้วยทรัพยากรที่มีให้

เริ่มต้น LoggingManagement ด้วยอาร์เรย์ LogStorageResources อาร์เรย์ต้องระบุทรัพยากรสำหรับระดับความสำคัญที่ถูกต้องแต่ละระดับ องค์ประกอบของอาร์เรย์ต้องอยู่ในการเพิ่มค่าตัวเลขของความสำคัญ (และลดความสำคัญ) องค์ประกอบแรกในอาร์เรย์จะสอดคล้องกับทรัพยากรที่จัดสรรไว้สำหรับเหตุการณ์ที่สำคัญที่สุด และองค์ประกอบสุดท้ายสอดคล้องกับเหตุการณ์ที่สำคัญน้อยที่สุด

รายละเอียด
พารามิเตอร์
[in] inMgr
WeaveExchangeManager เพื่อใช้กับระบบย่อยของการบันทึกนี้
[in] inNumBuffers
จำนวนองค์ประกอบในอาร์เรย์ inLogStorageResources
[in] inLogStorageResources
อาร์เรย์ของ LogStorageResources สำหรับความสำคัญแต่ละระดับ

DestroyLoggingManagement

void DestroyLoggingManagement(
  void
)

ดำเนินการทุกอย่างที่จำเป็นเมื่อปิดระบบ

GetInstance

LoggingManagement & GetInstance(
  void
)