Package com.kenai.jffi
Class ClosurePool
- java.lang.Object
-
- com.kenai.jffi.ClosurePool
-
public final class ClosurePool extends java.lang.Object
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
ClosurePool.Handle
Manages the lifecycle of a native closure.private static class
ClosurePool.Magazine
private static class
ClosurePool.MagazineHolder
(package private) static class
ClosurePool.Proxy
This is a proxy passed to the native code, to be called by the native trampoline code.
-
Field Summary
Fields Modifier and Type Field Description private CallContext
callContext
private java.util.concurrent.ConcurrentLinkedQueue<ClosurePool.Handle>
freeQueue
private java.util.Set<ClosurePool.Magazine>
magazines
private static Closure
NULL_CLOSURE
private java.util.concurrent.ConcurrentLinkedQueue<ClosurePool.Handle>
partialQueue
-
Constructor Summary
Constructors Constructor Description ClosurePool(CallContext callContext)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private ClosurePool.Handle
allocateNewHandle()
Closure.Handle
newClosureHandle(Closure closure)
(package private) void
recycle(ClosurePool.Magazine magazine)
(package private) void
recycle(ClosurePool.Magazine.Slot slot, ClosurePool.MagazineHolder holder)
private void
useMagazine(ClosurePool.Magazine m)
-
-
-
Field Detail
-
magazines
private final java.util.Set<ClosurePool.Magazine> magazines
-
freeQueue
private final java.util.concurrent.ConcurrentLinkedQueue<ClosurePool.Handle> freeQueue
-
partialQueue
private final java.util.concurrent.ConcurrentLinkedQueue<ClosurePool.Handle> partialQueue
-
callContext
private final CallContext callContext
-
NULL_CLOSURE
private static final Closure NULL_CLOSURE
-
-
Constructor Detail
-
ClosurePool
ClosurePool(CallContext callContext)
-
-
Method Detail
-
recycle
void recycle(ClosurePool.Magazine magazine)
-
recycle
void recycle(ClosurePool.Magazine.Slot slot, ClosurePool.MagazineHolder holder)
-
useMagazine
private void useMagazine(ClosurePool.Magazine m)
-
newClosureHandle
public Closure.Handle newClosureHandle(Closure closure)
-
allocateNewHandle
private ClosurePool.Handle allocateNewHandle()
-
-