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  * Recyclable implementation of [LogMessage].
21  */
22 data class LogMessageImpl(
23     override var level: LogLevel,
24     override var tag: String,
25     override var timestamp: Long,
26     override var printer: LogMessage.() -> String,
27     override var str1: String?,
28     override var str2: String?,
29     override var str3: String?,
30     override var int1: Int,
31     override var int2: Int,
32     override var long1: Long,
33     override var long2: Long,
34     override var double1: Double,
35     override var bool1: Boolean,
36     override var bool2: Boolean,
37     override var bool3: Boolean,
38     override var bool4: Boolean
39 ) : LogMessage {
40 
resetnull41     fun reset(
42         tag: String,
43         level: LogLevel,
44         timestamp: Long,
45         renderer: LogMessage.() -> String
46     ) {
47         this.level = level
48         this.tag = tag
49         this.timestamp = timestamp
50         this.printer = renderer
51         str1 = null
52         str2 = null
53         str3 = null
54         int1 = 0
55         int2 = 0
56         long1 = 0
57         long2 = 0
58         double1 = 0.0
59         bool1 = false
60         bool2 = false
61         bool3 = false
62         bool4 = false
63     }
64 
65     companion object Factory {
createnull66         fun create(): LogMessageImpl {
67             return LogMessageImpl(
68                     LogLevel.DEBUG,
69                     DEFAULT_TAG,
70                     0,
71                     DEFAULT_RENDERER,
72                     null,
73                     null,
74                     null,
75                     0,
76                     0,
77                     0,
78                     0,
79                     0.0,
80                     false,
81                     false,
82                     false,
83                     false)
84         }
85     }
86 }
87 
88 private const val DEFAULT_TAG = "UnknownTag"
<lambda>null89 private val DEFAULT_RENDERER: LogMessage.() -> String = { "Unknown message: $this" }
90