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
で識別されるスキーマ内で解釈されるコンテキスト タグが含まれなければなりません。最初の要素のタグは無視されます。イベントログ システムが eventData タグに置き換えます。
スキーマの重要度が LoggingConfiguration で指定されたロギングしきい値を超えると、イベントがログに記録されます。イベントの重要度が現在のしきい値に達していない場合、そのイベントは破棄され、関数は結果のイベント ID として 0
を返します。
この呼び出しバリアントでは、呼び出し元が EventOptions
の任意の組み合わせを設定できます。
- 0 の場合、デフォルトは呼び出し時点の現在時刻
- イベントソース(イベントソースとトレイト ID)の「root」セクション。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 と終了イベント 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 と終了イベント 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 と終了イベント ID が入力されます。このポインタは、イベントセットの登録を解除するために使用します。
コールバックの実装内容について詳しくは、FetchExternalEventsFunct のドキュメントをご覧ください。
詳細 | |||||||||
---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
||||||||
戻り値 |
|
ScheduleFlushIfNeeded
WEAVE_ERROR ScheduleFlushIfNeeded( bool inFlushRequested )
ログのオフロード タスクのスケジュールを設定します。
この関数はタスクのオフロード プロセスをスケジュールするかどうかを決定し、スケジュールされると、Weave スレッドで非同期に LoggingFlushHandler
が実行されるようにスケジュールします。
フラッシュをスケジュール設定するかどうかは、次の 3 つの要素によって決まります。
明示的にバッファをフラッシュする
イベント バッファの状態と、イベント コンシューマとまだ同期されていないデータの量
すでに保留中のリクエスト フラッシュ リクエスト イベントがあるかどうかを判定します。
フラッシュをスケジュールする明示的なリクエストは、入力パラメータを介して渡されます。
自動フラッシュは通常、新しいオフロードを開始するのに十分なデータがイベント バッファに格納されるとスケジュールされます。オフロード戦略によっては、オフロード間の最小時間や最大時間などの追加のトリガーも考慮される場合があります。
イベントログの保留状態は、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 をサブスクライバーに送信しなくなります。
その目的は、1 つの関数で一連のイベントを一度に処理することです。同じ関数を使用して新しい一連のイベントを登録する必要がある場合は、まずコールバックの登録を解除してから再登録する必要があります。つまり、元のイベントのセットは取得できなくなります。
この関数は無条件に成功します。コールバックが一度も登録されていないか、すでに登録解除されていた場合は、何も起こりません。
詳細 | |||||
---|---|---|---|---|---|
パラメータ |
|
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 )
シャットダウン時に必要なアクションを実行する。