diff options
| author | Dmitri Plotnikov <dplotnikov@google.com> | 2020-05-12 18:02:03 -0700 |
|---|---|---|
| committer | Dmitri Plotnikov <dplotnikov@google.com> | 2020-05-14 20:29:18 +0000 |
| commit | 81bc3bd90ee81f288146c30538126c7568d6f0c2 (patch) | |
| tree | 35d8b9dff7577a9bcef8134889f73bbb9d99e497 /core/java/android/util/SystemConfigFileCommitEventLogger.java | |
| parent | bda69cf1b1bf49ce3a2fbd8115fe825610c525a5 (diff) | |
Add SystemApi(MODULE_LIBRARIES) to AtomicFile API
Cleaning up the API in the process
Test: atest android.jobscheduler.cts
Bug: 142281756
Change-Id: Ia52dc6fda867f3015ecbf068a0a69cc0f17cd92a
Diffstat (limited to 'core/java/android/util/SystemConfigFileCommitEventLogger.java')
| -rw-r--r-- | core/java/android/util/SystemConfigFileCommitEventLogger.java | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/core/java/android/util/SystemConfigFileCommitEventLogger.java b/core/java/android/util/SystemConfigFileCommitEventLogger.java new file mode 100644 index 000000000000..04d72fb7a255 --- /dev/null +++ b/core/java/android/util/SystemConfigFileCommitEventLogger.java @@ -0,0 +1,73 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.util; + +import android.annotation.NonNull; +import android.annotation.SystemApi; +import android.annotation.UptimeMillisLong; +import android.os.SystemClock; + +/** + * Writes an EventLog event capturing the performance of system config file writes. + * The event log entry is formatted like this: + * <code>525000 commit_sys_config_file (name|3),(time|2|3)</code>, where <code>name</code> is + * a short unique name representing the type of configuration file and <code>time</code> is + * duration in the {@link SystemClock#uptimeMillis()} time base. + * + * @hide + */ +@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) +public class SystemConfigFileCommitEventLogger { + private final String mName; + private long mStartTime; + + /** + * @param name The short name of the config file that is included in the event log event, + * e.g. "jobs", "appops", "uri-grants" etc. + */ + public SystemConfigFileCommitEventLogger(@NonNull String name) { + mName = name; + } + + /** + * Override the start timestamp. Use this method when it's desired to include the time + * taken by the preparation of the configuration data in the overall duration of the + * "commitSysConfigFile" event. + * + * @param startTime Overridden start time, in system uptime milliseconds + */ + public void setStartTime(@UptimeMillisLong long startTime) { + mStartTime = startTime; + } + + /** + * Invoked just before the configuration file writing begins. + */ + void onStartWrite() { + if (mStartTime == 0) { + mStartTime = SystemClock.uptimeMillis(); + } + } + + /** + * Invoked just after the configuration file writing ends. + */ + void onFinishWrite() { + com.android.internal.logging.EventLogTags.writeCommitSysConfigFile(mName, + SystemClock.uptimeMillis() - mStartTime); + } +} |
