Class ProxyDestructor

  • All Implemented Interfaces:
    CleanAction<Class<?>>

    public final class ProxyDestructor
    extends Object
    implements CleanAction<Class<?>>
    ProxyDestructor is a clean action that destroys a native proxy and closes its native handle.

    Native proxies do not implement any interface (e.g., CloseableNativeProxy) and use this class so that there is no public #close method available in the interface of the proxy, making the risk of misuse smaller.

    All method parameters are non-null by default.

    This class is not thread-safe.

    • Constructor Detail

      • ProxyDestructor

        public ProxyDestructor​(NativeHandle nativeHandle,
                               Class<?> proxyClass,
                               LongConsumer destructorFunction)
        Creates a new destructor of a native proxy.
        Parameters:
        nativeHandle - a handle to the native object
        proxyClass - a class of the proxy
        destructorFunction - a clean function to perform
    • Method Detail

      • newRegistered

        @CanIgnoreReturnValue
        public static ProxyDestructor newRegistered​(Cleaner cleaner,
                                                    NativeHandle nativeHandle,
                                                    Class<?> proxyClass,
                                                    LongConsumer destructorFunction)
        Creates a new destructor of a native proxy, registered in the given cleaner.
        Parameters:
        cleaner - a cleaner to register the destructor in
        nativeHandle - a handle to the native object
        proxyClass - a class of proxy
        destructorFunction - a clean function to perform
      • clean

        public void clean()
        Closes the native handle, so that it can no longer be accessed, and performs a clean action, passing the native handle value.

        If native handle is not valid, does nothing.

        This method is idempotent.

        Specified by:
        clean in interface CleanAction<Class<?>>