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

nl::Weave::โปรไฟล์::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)
บันทึกเหตุการณ์ผ่านโค้ดเรียกกลับพร้อมตัวเลือก
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
UnhostttleLogger จะคืนค่าระดับการบันทึกที่มีประสิทธิภาพเป็นระดับการบันทึกที่กําหนดค่าไว้

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

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

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

เหตุการณ์ Blit

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

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

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

ยกเลิกการปิดเครื่อง

void CancelShutdownInProgress(
  void
)

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

CheckShouldRunWDM

bool CheckShouldRunWDM(
  void
)

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

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

รายละเอียด
แสดงผลค่า
true
ควรยกเลิกการโหลดเหตุการณ์
false
ไม่เช่นนั้น

ดึงข้อมูลเหตุการณ์ตั้งแต่

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 ไม่มีพื้นที่เหลือแล้ว เนื่องจากมีเหตุการณ์อื่นๆ ในบันทึก

GetBytes เขียน

uint32_t GetBytesWritten(
  void
) const 

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

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

ผู้อ่าน GetEvent

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

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

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

รหัส GetFirstEvent

event_id_t GetFirstEventID(
  ImportanceType inImportance
)

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

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

รหัส GetLastEvent

event_id_t GetLastEventID(
  ImportanceType inImportance
)

ดึงข้อมูลรหัสที่แก้ไขล่าสุดสําหรับระดับความสําคัญที่ต้องการ

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

ปิดระบบกําลังดําเนินการอยู่

bool IsShutdownInProgress(
  void
)

ติดธง mShutdownInProgress

ไม่ถูกต้อง

bool IsValid(
  void
)

Isvalid จะตรวจสอบว่าอินสแตนซ์ LoggingManagement ถูกต้องหรือไม่

รายละเอียด
แสดงผลค่า
true
อินสแตนซ์ถูกต้อง (ขึ้นต้นด้วยร้านค้าที่รองรับที่เหมาะสม)
false
ไม่เช่นนั้น

การโหลดเหตุการณ์

WEAVE_ERROR LoadEvents(
  TLVReader & reader
)

การโหลดเหตุการณ์ Weave ที่เกิดขึ้นก่อนหน้านี้ก่อนหน้านี้

บันทึกเหตุการณ์

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

บันทึกเหตุการณ์ผ่านโค้ดเรียกกลับพร้อมตัวเลือก

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

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

การเรียกใช้รูปแบบนี้อนุญาตให้ผู้โทรตั้ง EventOptions ผสมกันได้ดังนี้

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

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

การจัดการการบันทึก

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

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

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

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

การจัดการการบันทึก

 LoggingManagement(
  void
)

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

มีไว้สําหรับการคอมไพเลอร์เป็นหลัก

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

ทําเครื่องหมายการปิดเครื่อง

void MarkShutdownInProgress(
  void
)

ตั้งค่าการติดธง mShutdownInProgress เป็น "จริง"

แจ้งเหตุการณ์ที่นําส่ง

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

ลงทะเบียนโค้ดเรียกกลับสําหรับเหตุการณ์

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

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

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

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

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

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

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

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

อ่านเอกสารเกี่ยวกับ FetchExternalEventsFunct สําหรับรายละเอียดเกี่ยวกับสิ่งที่ต้องมีโค้ดเรียกกลับ

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

ลงทะเบียนโค้ดเรียกกลับสําหรับเหตุการณ์

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

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

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

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

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

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

อ่านเอกสารเกี่ยวกับ FetchExternalEventsFunct สําหรับรายละเอียดเกี่ยวกับสิ่งที่ต้องมีโค้ดเรียกกลับ

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

ลงทะเบียนโค้ดเรียกกลับสําหรับเหตุการณ์

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

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

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

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

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

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

อ่านเอกสารเกี่ยวกับ FetchExternalEventsFunct สําหรับรายละเอียดเกี่ยวกับสิ่งที่ต้องมีโค้ดเรียกกลับ

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

ตั้งเวลาฟลัชหากจําเป็น

WEAVE_ERROR ScheduleFlushIfNeeded(
  bool inFlushRequested
)

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

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

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

คําขออย่างชัดแจ้งให้ล้างบัฟเฟอร์

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

มีการล้างคําขอที่รอดําเนินการอยู่หรือไม่

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

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

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

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

เหตุการณ์แบบเรียงอันดับ

WEAVE_ERROR SerializeEvents(
  TLVWriter & writer
)

ต่อเนื่องเหตุการณ์ Weave ทุกประเภทที่มีความสําคัญ

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

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

ตัวตั้งค่า SetDDX

void SetBDXUploader(
  LogBDXUpload *inUploader
)

ผู้จัดการการตั้งค่า Exchange

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

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

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

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

จุดสิ้นสุดของการบันทึก

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

ข้ามเหตุการณ์

void SkipEvent(
  EventLoadOutContext *aContext
)

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

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

ตัวควบคุมการบันทึก

void ThrottleLogger(
  void
)

ThrottleLogger ยกระดับการบันทึกอย่างมีประสิทธิภาพไปสู่ระดับเวอร์ชันที่ใช้งานจริง

ยกเลิกการลงทะเบียนเหตุการณ์การติดต่อกลับ

void UnregisterEventCallbackForImportance(
  ImportanceType inImportance,
  event_id_t inEventID
)

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

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

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

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

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

ยกเลิกการบันทึก

void UnthrottleLogger(
  void
)

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

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

สร้างการจัดการการบันทึก

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

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

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

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

การจัดการการบันทึก Destroy

void DestroyLoggingManagement(
  void
)

ดําเนินการใดๆ ที่จําเป็นในการปิด

อินสแตนซ์

LoggingManagement & GetInstance(
  void
)