1 private fun UniffiCleaner.Companion.create(): UniffiCleaner =
3 // For safety's sake: if the library hasn't been run in android_cleaner = true
4 // mode, but is being run on Android, then we still need to think about
5 // Android API versions.
6 // So we check if java.lang.ref.Cleaner is there, and use that…
7 java.lang.Class.forName("java.lang.ref.Cleaner")
9 } catch (e: ClassNotFoundException) {
10 // … otherwise, fallback to the JNA cleaner.
14 private class JavaLangRefCleaner : UniffiCleaner {
15 val cleaner = java.lang.ref.Cleaner.create()
17 override fun register(value: Any, cleanUpTask: Runnable): UniffiCleaner.Cleanable =
18 JavaLangRefCleanable(cleaner.register(value, cleanUpTask))
21 private class JavaLangRefCleanable(
22 val cleanable: java.lang.ref.Cleaner.Cleanable
23 ) : UniffiCleaner.Cleanable {
24 override fun clean() = cleanable.clean()