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 플래그를 false로 설정합니다.
|
CheckShouldRunWDM(void)
|
bool
업로드가 예약되지 않은 이벤트 버퍼의 바이트 수를 기준으로 이벤트를 오프로드할지 결정합니다.
|
FetchEventsSince(nl::Weave::TLV::TLVWriter & ioWriter, ImportanceType inImportance, event_id_t & ioEventID)
|
지정된 이벤트 ID 이후 지정된 중요도의 이벤트를 검색하는 함수입니다.
|
GetBytesWritten(void) const
|
uint32_t
인스턴스화 후 이 로그에 기록된 모든 이벤트 중요도 전체에서 총 바이트 수를 가져옵니다.
|
GetEventReader(nl::Weave::TLV::TLVReader & ioReader, ImportanceType inImportance)
|
메모리 내 로그 버퍼를 검사하는 데 유용한 도우미 메서드입니다.
|
GetFirstEventID(ImportanceType inImportance)
|
현재 특정 중요도 수준에 대해 저장된 첫 번째 이벤트 ID를 가져옵니다.
|
GetLastEventID(ImportanceType inImportance)
|
특정 중요도 수준에서 가장 최근에 판매된 ID를 가져옵니다.
|
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 플래그를 true로 설정합니다.
|
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
할당된 이벤트 ID에 해당하는 이벤트 작성을 건너뛰는 도우미 함수입니다.
|
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 )
이벤트 로깅 프로토콜에 따라 이벤트 헤더 및 데이터를 쓰는 도우미 함수입니다.
세부정보 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
CancelShutdownInProgress
void CancelShutdownInProgress( void )
mShutdownInProgress 플래그를 false로 설정합니다.
CheckShouldRunWDM
bool CheckShouldRunWDM( void )
업로드가 예약되지 않은 이벤트 버퍼의 바이트 수를 기준으로 이벤트를 오프로드할지 결정합니다.
함수의 동작은 WEAVE_CONFIG_EVENT_LOGGING_BYTE_THRESHOLD 상수를 통해 제어됩니다. WDM 알림이 마지막으로 전송된 이후 시스템에서 작성한 바이트 수가 이보다 많으면 함수는 NotificationEngine을 트리거할 때가 되었음을 나타냅니다.
세부정보 | |||||
---|---|---|---|---|---|
반환 값 |
|
FetchEventsSince
WEAVE_ERROR FetchEventsSince( nl::Weave::TLV::TLVWriter & ioWriter, ImportanceType inImportance, event_id_t & ioEventID )
지정된 이벤트 ID 이후 지정된 중요도의 이벤트를 검색하는 함수입니다.
nl::Weave::TLV::TLVWriter, 중요도 유형, 이벤트 ID가 주어지면 함수는 지정된 이벤트 이후 지정된 중요도의 이벤트를 가져옵니다. 이 함수는 nl::Weave::TLV::TLVWriter 또는 로그의 공간이 소진될 때까지 계속해서 이벤트를 가져옵니다. 이 함수는 이벤트 경계에서 이벤트 쓰기를 종료합니다.
세부정보 | |||||||
---|---|---|---|---|---|---|---|
매개변수 |
|
||||||
반환 값 |
|
GetBytesWritten
uint32_t GetBytesWritten( void ) const
인스턴스화 후 이 로그에 기록된 모든 이벤트 중요도 전체에서 총 바이트 수를 가져옵니다.
세부정보 | |
---|---|
반환 |
로그에 쓴 바이트 수입니다.
|
GetEventReader
WEAVE_ERROR GetEventReader( nl::Weave::TLV::TLVReader & ioReader, ImportanceType inImportance )
메모리 내 로그 버퍼를 검사하는 데 유용한 도우미 메서드입니다.
세부정보 | |||||
---|---|---|---|---|---|
매개변수 |
|
||||
반환 |
WEAVE_NO_ERROR. 무조건적으로.
|
GetFirstEventID
event_id_t GetFirstEventID( ImportanceType inImportance )
현재 특정 중요도 수준에 대해 저장된 첫 번째 이벤트 ID를 가져옵니다.
세부정보 | |||
---|---|---|---|
매개변수 |
|
||
반환 |
event_id_t 해당 이벤트 중요도에 대해 현재 처음 저장된 이벤트 ID
|
GetLastEventID
event_id_t GetLastEventID( ImportanceType inImportance )
특정 중요도 수준에서 가장 최근에 판매된 ID를 가져옵니다.
세부정보 | |||
---|---|---|---|
매개변수 |
|
||
반환 |
event_id_t 해당 이벤트 중요도에 대해 가장 최근에 생성된 이벤트 ID입니다.
|
IsShutdownInProgress
bool IsShutdownInProgress( void )
mShutdownInProgress 플래그를 확인합니다.
IsValid
bool IsValid( void )
IsValid는 LoggingManagement 인스턴스가 유효한지 여부를 반환합니다.
세부정보 | |||||
---|---|---|---|---|---|
반환 값 |
|
LogEvent
event_id_t LogEvent( const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions )
옵션을 사용하여 콜백을 통해 이벤트를 로깅합니다.
이 함수는 EventWriterFunct 및 앱별 appData
컨텍스트로 표시된 이벤트를 로깅합니다. 이 함수는 사용자 코드가 이벤트 데이터를 이벤트 로그에 직접 내보낼 수 있도록 이벤트 메타데이터를 작성하고 nl::Weave::TLV::TLVWriter 참조 및 inAppData
컨텍스트를 사용하여 inEventWriter
를 호출합니다. 이러한 형식의 이벤트 로깅은 이벤트 데이터가 타겟 버퍼에 직접 직렬화되기 때문에 메모리 소비를 최소화합니다. 이벤트 데이터는 inProfileID
및 inEventType
로 식별된 스키마 내에서 해석될 컨텍스트 태그를 포함해야 합니다(MUST). 첫 번째 요소의 태그는 무시됩니다. 이벤트 로깅 시스템에서 이 태그를 eventData 태그로 대체합니다.
스키마 중요도가 LoggingConfiguration에 지정된 로깅 임계값을 초과하면 이벤트가 로깅됩니다. 이벤트의 중요도가 현재 기준점을 충족하지 않는 경우 이벤트는 삭제되며 함수는 0
를 결과 이벤트 ID로 반환합니다.
이 호출 변형을 사용하면 호출자가 EventOptions
의 조합을 설정할 수 있습니다.
- 타임스탬프, 0이 호출 시점의 현재 시간이 기본값일 때,
- 'root' 이벤트 소스의 섹션 (이벤트 소스 및 트레잇 ID) NULL인 경우 현재 기기가 기본적으로 사용됩니다. 이벤트가 전화를 거는 기기와 관련된 것으로 표시됩니다.
- 이벤트 ID를 그룹화하기 위한 관련 이벤트 ID 관련 이벤트 ID가 0이면 이벤트가 다른 이벤트와 관련이 없는 것으로 표시됩니다.
- 긴박감 기본적으로 긴급하지 않습니다.
세부정보 | |||||||||
---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
||||||||
반환 |
event_id_t 이벤트가 로그에 기록된 경우 이벤트 ID, 그렇지 않은 경우 0입니다.
|
LoggingManagement
LoggingManagement( nl::Weave::WeaveExchangeManager *inMgr, size_t inNumBuffers, const LogStorageResources *const inLogStorageResources )
LoggingManagement 생성자.
LogStorageResources 배열을 사용하여 LoggingManagement를 초기화합니다. 배열은 각 유효한 중요도 수준에 대한 리소스를 제공해야 하며, 배열의 요소는 중요도가 높아지고 중요도가 낮아져야 합니다. 배열의 첫 번째 요소는 가장 중요한 이벤트에 할당된 리소스에 해당하며 마지막 요소는 가장 중요하지 않은 이벤트에 해당합니다.
세부정보 | |||||||
---|---|---|---|---|---|---|---|
매개변수 |
|
LoggingManagement
LoggingManagement( void )
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입니다.
FetchExternalEventsFunct 형식의 콜백을 등록합니다. 이 API를 사용하려면 플랫폼에서 등록 시 이벤트 수를 알아야 합니다. 내부 작업 또한 이 번호가 일정해야 합니다. 이 API는 플랫폼이 특정 이벤트 ID를 등록하도록 허용하지 않으므로, 적어도 고유 이벤트 ID를 사용하여 플랫폼에서 이벤트를 저장할 수 없습니다.
콜백은 등록 취소 전까지 구독자가 일정 범위 내에서 이벤트 ID를 가져오려고 할 때마다 호출됩니다.
이 함수 변형은 이벤트가 구독자에게 전달되었을 때와 외부 이벤트 객체가 제거되었을 때 외부 제공자가 알림을 받고자 할 때 사용해야 합니다.
이벤트가 전달되면 외부 공급자는 그 사실을 수신자의 노드 ID 및 해당 수신자에게 전달된 마지막 이벤트의 ID와 함께 알립니다. 외부 공급자는 동일한 이벤트 ID에 대해 여러 번 알림을 받을 수 있습니다. 핸들러에는 특별한 제한이 없습니다. 특히 핸들러가 외부 이벤트 ID를 등록 취소할 수 있습니다.
외부 이벤트 객체가 로그 버퍼에서 제거되면 외부 이벤트 객체의 사본과 함께 외부 제공자에게 알림이 전송됩니다.
ExternalEvents 구조체에 대한 포인터는 실패 시 NULL이며, 그렇지 않으면 콜백에 할당된 시작 및 종료 이벤트 ID로 채워집니다. 이 포인터는 이벤트 집합을 등록 취소하는 데 사용해야 합니다.
콜백이 구현해야 하는 항목에 대한 자세한 내용은 FetchExternalEventsFunct 문서를 참조하세요.
세부정보 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
||||||||||||
반환 값 |
|
RegisterEventCallbackForImportance
WEAVE_ERROR RegisterEventCallbackForImportance( ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, NotifyExternalEventsDeliveredFunct inNotifyCallback, size_t inNumEvents, event_id_t *outLastEventID )
외부에 저장된 이벤트 집합을 등록하기 위한 공개 API입니다.
FetchExternalEventsFunct 형식의 콜백을 등록합니다. 이 API를 사용하려면 플랫폼에서 등록 시 이벤트 수를 알아야 합니다. 내부 작업 또한 이 번호가 일정해야 합니다. 이 API는 플랫폼이 특정 이벤트 ID를 등록하도록 허용하지 않으므로, 적어도 고유 이벤트 ID를 사용하여 플랫폼에서 이벤트를 저장할 수 없습니다.
콜백은 등록 취소 전까지 구독자가 일정 범위 내에서 이벤트 ID를 가져오려고 할 때마다 호출됩니다.
이 함수의 변형은 외부 제공자가 이벤트가 구독자에게 전달되었을 때 알림을 받고자 할 때 사용해야 하지만, 외부 이벤트 객체가 제거되었을 때는 사용하지 않아야 합니다. 이벤트가 전달되면 외부 공급자는 그 사실을 수신자의 노드 ID 및 해당 수신자에게 전달된 마지막 이벤트의 ID와 함께 알립니다. 외부 공급자는 동일한 이벤트 ID에 대해 여러 번 알림을 받을 수 있습니다. 핸들러에는 특별한 제한이 없습니다. 특히 핸들러가 외부 이벤트 ID를 등록 취소할 수 있습니다.
ExternalEvents 구조체에 대한 포인터는 실패 시 NULL이며, 그렇지 않으면 콜백에 할당된 시작 및 종료 이벤트 ID로 채워집니다. 이 포인터는 이벤트 집합을 등록 취소하는 데 사용해야 합니다.
콜백이 구현해야 하는 항목에 대한 자세한 내용은 FetchExternalEventsFunct 문서를 참조하세요.
세부정보 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
||||||||||
반환 값 |
|
RegisterEventCallbackForImportance
WEAVE_ERROR RegisterEventCallbackForImportance( ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, size_t inNumEvents, event_id_t *outLastEventID )
외부에 저장된 이벤트 집합을 등록하기 위한 공개 API입니다.
FetchExternalEventsFunct 형식의 콜백을 등록합니다. 이 API를 사용하려면 플랫폼에서 등록 시 이벤트 수를 알아야 합니다. 내부 작업 또한 이 번호가 일정해야 합니다. 이 API는 플랫폼이 특정 이벤트 ID를 등록하도록 허용하지 않으므로, 적어도 고유 이벤트 ID를 사용하여 플랫폼에서 이벤트를 저장할 수 없습니다.
콜백은 등록 취소 전까지 구독자가 일정 범위 내에서 이벤트 ID를 가져오려고 할 때마다 호출됩니다.
이 함수의 변형은 외부 이벤트가 전달되었을 때나 외부 이벤트 객체가 제거되었을 때 외부 제공자가 알림을 원하는 경우에 사용해야 합니다.
ExternalEvents 구조체에 대한 포인터는 실패 시 NULL이며, 그렇지 않으면 콜백에 할당된 시작 및 종료 이벤트 ID로 채워집니다. 이 포인터는 이벤트 집합을 등록 취소하는 데 사용해야 합니다.
콜백이 구현해야 하는 항목에 대한 자세한 내용은 FetchExternalEventsFunct 문서를 참조하세요.
세부정보 | |||||||||
---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
||||||||
반환 값 |
|
ScheduleFlushIfNeeded
WEAVE_ERROR ScheduleFlushIfNeeded( bool inFlushRequested )
로그 오프로드 작업을 예약합니다.
함수는 작업 오프로드 프로세스를 예약할지 여부를 결정하고, 이 경우 LoggingFlushHandler
가 Weave 스레드에서 비동기식으로 실행되도록 예약합니다.
플러시 예약은 다음 세 가지 요소에 따라 결정됩니다.
버퍼를 플러시하기 위한 명시적 요청
이벤트 버퍼의 상태 및 이벤트 소비자와 아직 동기화되지 않은 데이터의 양
이미 대기 중인 요청 플러시 요청 이벤트가 있는지 여부입니다.
플러시 예약을 위한 명시적 요청은 입력 매개변수를 통해 전달됩니다.
자동 플러시는 일반적으로 이벤트 버퍼에 새 오프로드를 시작하기에 충분한 데이터가 포함될 때 예약됩니다. 오프로드 전략에 따라 오프로드 간의 최소 및 최대 시간과 같은 추가 트리거를 고려할 수도 있습니다.
이벤트 로그의 대기 중 상태는 mUploadRequested
변수로 표시됩니다. 이 함수는 여러 스레드에서 호출할 수 있으므로 알림을 전송하기 전에 중복 LoggingFlushHandler
를 예약하지 않도록 mUploadRequested
를 원자적으로 읽고 설정해야 합니다.
세부정보 | |||||
---|---|---|---|---|---|
매개변수 |
|
||||
반환 값 |
|
SerializeEvents
WEAVE_ERROR SerializeEvents( TLVWriter & writer )
모든 중요도 유형의 Weave 이벤트를 직렬화합니다.
WeaveCircularTLVBuffer의 이벤트와 관련 상태를 제공된 버퍼에 직렬화합니다.
이 메서드는 절전 모드 동안 RAM을 유지하지 않는 기기에서 사용하기 위한 것으로, 절전 모드로 전환되기 전에 이벤트를 유지하여 이벤트의 손실을 방지할 수 있습니다.
SetBDXUploader
void SetBDXUploader( LogBDXUpload *inUploader )
SetExchangeManager
WEAVE_ERROR SetExchangeManager( nl::Weave::WeaveExchangeManager *inMgr )
이 로깅 하위 시스템과 함께 사용할 WeaveExchangeManager를 설정합니다.
일부 플랫폼에서는 위의 CreateLoggingManagement()와 별도로 이 작업을 수행해야 할 수도 있습니다.
세부정보 | |||
---|---|---|---|
매개변수 |
|
SetLoggingEndpoint
WEAVE_ERROR SetLoggingEndpoint( event_id_t *inEventEndpoints, size_t inNumImportanceLevels, size_t & outLoggingPosition )
SkipEvent
void SkipEvent( EventLoadOutContext *aContext )
할당된 이벤트 ID에 해당하는 이벤트 작성을 건너뛰는 도우미 함수입니다.
세부정보 | |||
---|---|---|---|
매개변수 |
|
ThrottleLogger
void ThrottleLogger( void )
ThrottleLogger는 유효한 로깅 수준을 프로덕션 수준으로 높입니다.
UnregisterEventCallbackForImportance
void UnregisterEventCallbackForImportance( ImportanceType inImportance, event_id_t inEventID )
외부에 저장된 이벤트 집합을 등록 취소하기 위한 공개 API입니다.
콜백을 등록 취소하면 LoggingManagement에서 이벤트 집합의 콜백을 호출할 수 없습니다. LoggingManagement에서 더 이상 이러한 이벤트 ID를 구독자에게 전송하지 않습니다.
인텐트는 한 함수가 한 번에 일련의 이벤트를 처리하기 위한 것입니다. 동일한 함수를 사용하여 새 이벤트 집합을 등록해야 하는 경우 콜백을 먼저 등록 해제한 다음 다시 등록해야 합니다. 즉, 더 이상 원래 이벤트 세트를 가져올 수 없습니다.
이 함수는 무조건 성공합니다. 콜백이 등록되지 않았거나 이미 등록 취소된 경우 콜백이 작동하지 않습니다.
세부정보 | |||||
---|---|---|---|---|---|
매개변수 |
|
UnthrottleLogger
void UnthrottleLogger( void )
UnthrottleLogger는 유효한 로깅 수준을 구성된 로깅 수준으로 복원합니다.
공개 정적 함수
CreateLoggingManagement
void CreateLoggingManagement( nl::Weave::WeaveExchangeManager *inMgr, size_t inNumBuffers, const LogStorageResources *const inLogStorageResources )
LoggingManagement 객체를 만들고 제공된 리소스로 로깅 관리 하위 시스템을 초기화합니다.
LogStorageResources 배열을 사용하여 LoggingManagement를 초기화합니다. 배열은 각 유효한 중요도 수준에 대한 리소스를 제공해야 하며, 배열의 요소는 중요도가 높아지고 중요도가 낮아져야 합니다. 배열의 첫 번째 요소는 가장 중요한 이벤트에 할당된 리소스에 해당하며 마지막 요소는 가장 중요하지 않은 이벤트에 해당합니다.
세부정보 | |||||||
---|---|---|---|---|---|---|---|
매개변수 |
|
DestroyLoggingManagement
void DestroyLoggingManagement( void )
종료 시 필요한 모든 작업을 실행합니다.