/
MetadataExtractor.kt
39 lines (33 loc) · 1.02 KB
/
MetadataExtractor.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
package shark
import shark.MetadataExtractor.Companion.invoke
import shark.ObjectInspector.Companion.invoke
/**
* Extracts metadata from a hprof to be reported in [HeapAnalysisSuccess.metadata].
*
* You can create a [MetadataExtractor] from a lambda by calling [invoke].
*/
interface MetadataExtractor {
fun extractMetadata(graph: HeapGraph): Map<String, String>
companion object {
/**
* A no-op [MetadataExtractor]
*/
val NO_OP = MetadataExtractor { emptyMap() }
/**
* Utility function to create a [MetadataExtractor] from the passed in [block] lambda instead of
* using the anonymous `object : MetadataExtractor` syntax.
*
* Usage:
*
* ```kotlin
* val inspector = MetadataExtractor { graph ->
*
* }
* ```
*/
inline operator fun invoke(crossinline block: (HeapGraph) -> Map<String, String>): MetadataExtractor =
object : MetadataExtractor {
override fun extractMetadata(graph: HeapGraph): Map<String, String> = block(graph)
}
}
}