1 package leakcanary.internal
2 
3 import shark.SharkLog
4 import java.io.ByteArrayInputStream
5 import java.io.ByteArrayOutputStream
6 import java.io.ObjectInputStream
7 import java.io.ObjectOutputStream
8 import java.io.Serializable
9 
toByteArraynull10 internal fun Serializable.toByteArray(): ByteArray {
11   val outputStream = ByteArrayOutputStream()
12   ObjectOutputStream(outputStream).writeObject(this)
13   return outputStream.toByteArray()
14 }
15 
16 internal object Serializables {
17 
fromByteArraynull18   inline fun <reified T> fromByteArray(byteArray: ByteArray): T? {
19     val inputStream = ByteArrayInputStream(byteArray)
20     return try {
21       ObjectInputStream(inputStream).readObject() as? T
22     } catch (ignored: Throwable) {
23       SharkLog.d(ignored) { "Could not deserialize bytes, ignoring" }
24       null
25     }
26   }
27 }