CloseOnce

class CloseOnce(label: String, onClose: () -> Unit) : CheckableAutoCloseable

Utility to make CheckableAutoCloseable idempotent.

If everything required for disposal is available from the constructor, you can implement via delegation: class Foo(...) : CheckableAutoCloseable by CloseOnce({ ... }). Otherwise, use as a member variable, e.g.: private val closer = CloseOnce { ... }, and forward close and closed to it.

Thread-safe, performing a no-op after the first close.

Parameters

onClose

The function to invoke on the first call to close.

Constructors

Link copied to clipboard
constructor(label: String, onClose: () -> Unit)

Properties

Link copied to clipboard
open override val closed: Boolean

Whether this resource has been closed.

Functions

Link copied to clipboard
open override fun close()

Closes this resource, releasing any underlying resources.