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 はデフォルトで呼び出し時点の現在時刻に設定され、
- 「root」イベントソースのセクション(イベントソースとトレイト ID)NULL の場合は、デフォルトで現在のデバイスが使用されます。イベントが、呼び出し元のデバイスに関連しているとマークされます。
- イベント ID をグループ化するための関連イベント ID関連イベント ID が 0 の場合、そのイベントは他のイベントと無関係としてマークされます。
- 緊急性デフォルトは「non-urgent」です。
詳細 | |||||||||
---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
||||||||
戻り値 |
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 )
シャットダウン時に必要なアクションを実行します。