Package com.kenai.jffi
Class ClosureManager
java.lang.Object
com.kenai.jffi.ClosureManager
Allocates and manages the lifecycle of native closures (aka callbacks)
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static final class
Holder class to do lazy allocation of the ClosureManager instance -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final Map<CallContext,
Reference<ClosurePool>> ClosurePool instances are linked via a SoftReference in the lookup map, so when all closure instances that that were allocated from the ClosurePool have been reclaimed, and there is memory pressure, the native closure pool can be freed. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionfinal ClosurePool
getClosurePool
(CallContext callContext) static ClosureManager
Gets the global instance of theClosureManager
final Closure.Handle
newClosure
(Closure closure, CallContext callContext) Wraps a java object that implements theClosure
interface in a native closure.final Closure.Handle
newClosure
(Closure closure, Type returnType, Type[] parameterTypes, CallingConvention convention) Wraps a java object that implements theClosure
interface in a native closure.newClosureMagazine
(CallContext callContext, Method method)
-
Field Details
-
poolMap
ClosurePool instances are linked via a SoftReference in the lookup map, so when all closure instances that that were allocated from the ClosurePool have been reclaimed, and there is memory pressure, the native closure pool can be freed. This will allow the CallContext instance to also be collected if it is not strongly referenced elsewhere, and ejected from theCallContextCache
-
-
Constructor Details
-
ClosureManager
private ClosureManager()Constructs a ClosureManager
-
-
Method Details
-
getInstance
Gets the global instance of theClosureManager
- Returns:
- An instance of a
ClosureManager
-
newClosure
public final Closure.Handle newClosure(Closure closure, Type returnType, Type[] parameterTypes, CallingConvention convention) Wraps a java object that implements theClosure
interface in a native closure.- Parameters:
closure
- The java object to be called when the native closure is invoked.returnType
- The return type of the closure.parameterTypes
- The parameter types of the closure.convention
- The calling convention of the closure.- Returns:
- A new
Closure.Handle
instance.
-
newClosure
Wraps a java object that implements theClosure
interface in a native closure.- Parameters:
closure
- The java object to be called when the native closure is invoked.callContext
- The call context (return type, param types, convention) of the Closure- Returns:
- A new
Closure.Handle
instance.
-
getClosurePool
-
newClosureMagazine
-