• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2020 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.systemui.log
18 
19 /**
20  * Generic data class for storing messages logged to a [LogBuffer]
21  *
22  * Each LogMessage has a few standard fields ([level], [tag], and [timestamp]). The rest are generic
23  * data slots that may or may not be used, depending on the nature of the specific message being
24  * logged.
25  *
26  * When a message is logged, the code doing the logging stores data in one or more of the generic
27  * fields ([str1], [int1], etc). When it comes time to dump the message to logcat/bugreport/etc, the
28  * [printer] function reads the data stored in the generic fields and converts that to a human-
29  * readable string. Thus, for every log type there must be a specialized initializer function that
30  * stores data specific to that log type and a specialized printer function that prints that data.
31  *
32  * See [LogBuffer.log] for more information.
33  */
34 interface LogMessage {
35     val level: LogLevel
36     val tag: String
37     val timestamp: Long
38     val printer: LogMessage.() -> String
39 
40     var str1: String?
41     var str2: String?
42     var str3: String?
43     var int1: Int
44     var int2: Int
45     var long1: Long
46     var long2: Long
47     var double1: Double
48     var bool1: Boolean
49     var bool2: Boolean
50     var bool3: Boolean
51     var bool4: Boolean
52 }
53