commonMain.aws.sdk.kotlin.crt.Closeable.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of aws-crt-kotlin-android Show documentation
Show all versions of aws-crt-kotlin-android Show documentation
Kotlin Multiplatform bindings for AWS SDK Common Runtime
/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0
*/
package aws.sdk.kotlin.crt
public interface Closeable {
/**
* Close this resource
*/
public fun close()
}
public inline fun C.use(block: (C) -> R): R {
var closed = false
return try {
block(this)
} catch (first: Throwable) {
try {
closed = true
close()
} catch (second: Throwable) {
// suppressed
}
throw first
} finally {
if (!closed) {
close()
}
}
}