/
OnAnalysisProgressListener.kt
49 lines (43 loc) · 1.19 KB
/
OnAnalysisProgressListener.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package shark
/**
* Reports progress from the [HeapAnalyzer] as they occur, as [Step] values.
*/
interface OnAnalysisProgressListener {
// These steps are defined in the order in which they occur.
enum class Step {
PARSING_HEAP_DUMP,
EXTRACTING_METADATA,
FINDING_LEAKING_INSTANCES,
FINDING_PATHS_TO_LEAKING_OBJECTS,
FINDING_DOMINATORS,
COMPUTING_NATIVE_RETAINED_SIZE,
COMPUTING_RETAINED_SIZE,
BUILDING_LEAK_TRACES,
REPORTING_HEAP_ANALYSIS
}
fun onAnalysisProgress(step: Step)
companion object {
/**
* A no-op [OnAnalysisProgressListener]
*/
val NO_OP = OnAnalysisProgressListener {}
/**
* Utility function to create a [OnAnalysisProgressListener] from the passed in [block] lambda
* instead of using the anonymous `object : OnAnalysisProgressListener` syntax.
*
* Usage:
*
* ```kotlin
* val listener = OnAnalysisProgressListener {
*
* }
* ```
*/
inline operator fun invoke(crossinline block: (Step) -> Unit): OnAnalysisProgressListener =
object : OnAnalysisProgressListener {
override fun onAnalysisProgress(step: Step) {
block(step)
}
}
}
}