Package com.kenai.jffi
Class ClosurePool.Handle
- java.lang.Object
-
- com.kenai.jffi.ClosurePool.Handle
-
- All Implemented Interfaces:
Closure.Handle
- Enclosing class:
- ClosurePool
private static final class ClosurePool.Handle extends java.lang.Object implements Closure.Handle
Manages the lifecycle of a native closure. ImplementsClosure.Handle
interface.
-
-
Field Summary
Fields Modifier and Type Field Description private boolean
disposed
(package private) ClosurePool.MagazineHolder
holder
Keep references to the closure pool so it does not get garbage collected until all closures using it do.(package private) ClosurePool.Magazine.Slot
slot
-
Constructor Summary
Constructors Constructor Description Handle(ClosurePool.Magazine.Slot slot, ClosurePool.MagazineHolder holder)
Creates a new Handle to lifecycle manager the native closure.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description void
dispose()
Releases the closure memory back to the operating system.void
free()
Deprecated.long
getAddress()
Gets the native code address of the closure.void
setAutoRelease(boolean autorelease)
Sets whether the closure memory should be released when theHandle
is garbage collected or not.
-
-
-
Field Detail
-
holder
final ClosurePool.MagazineHolder holder
Keep references to the closure pool so it does not get garbage collected until all closures using it do.
-
slot
final ClosurePool.Magazine.Slot slot
-
disposed
private volatile boolean disposed
-
-
Constructor Detail
-
Handle
Handle(ClosurePool.Magazine.Slot slot, ClosurePool.MagazineHolder holder)
Creates a new Handle to lifecycle manager the native closure.- Parameters:
slot
- THe magazine slot this handle belongs toholder
- The magazine holder containing this handle
-
-
Method Detail
-
getAddress
public long getAddress()
Description copied from interface:Closure.Handle
Gets the native code address of the closure. This can be passed into a native function that takes a function pointer.- Specified by:
getAddress
in interfaceClosure.Handle
- Returns:
- The native address of the closure code.
-
setAutoRelease
public void setAutoRelease(boolean autorelease)
Description copied from interface:Closure.Handle
Sets whether the closure memory should be released when theHandle
is garbage collected or not.- Specified by:
setAutoRelease
in interfaceClosure.Handle
- Parameters:
autorelease
- If true, the closure memory is automatically managed, else the closure memory must be explicitly freed.
-
free
@Deprecated public void free()
Deprecated.- Specified by:
free
in interfaceClosure.Handle
-
dispose
public void dispose()
Description copied from interface:Closure.Handle
Releases the closure memory back to the operating system. Although the closure trampoline memory will normally be released when theHandle
is garbage collected, this may not happen for some time, and is non-deterministic. This allows explicit control over memory reclamation.- Specified by:
dispose
in interfaceClosure.Handle
-
-