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)
บันทึกเหตุการณ์ผ่านโค้ดเรียกกลับที่มีตัวเลือก
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
โค้ดเรียกกลับที่จะเรียกใช้เพื่อเรียงลำดับข้อมูลเหตุการณ์
[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 สำหรับความสำคัญของเหตุการณ์นั้น

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
)

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

ฟังก์ชันนี้จะบันทึกเหตุการณ์ที่แสดงเป็น 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

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 เป็น "จริง"

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 สาธารณะสำหรับการลงทะเบียนชุดเหตุการณ์ที่จัดเก็บไว้จากภายนอก

ลงทะเบียนการเรียกกลับของรูปแบบ 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
ความสำเร็จ

RegisterEventCallbackForImportance

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
ความสำเร็จ

RegisterEventCallbackForImportance

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
ความสำเร็จ

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 สาธารณะสำหรับการยกเลิกการลงทะเบียนชุดเหตุการณ์ที่จัดเก็บไว้จากภายนอก

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

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

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

รายละเอียด
พารามิเตอร์
[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
)