Package org.postgresql.pljava.internal
Class DualState.SingleMemContextDelete<T>
java.lang.Object
java.lang.ref.Reference<T>
java.lang.ref.WeakReference<T>
org.postgresql.pljava.internal.DualState<T>
org.postgresql.pljava.internal.DualState.SingleGuardedLong<T>
org.postgresql.pljava.internal.DualState.SingleMemContextDelete<T>
public abstract static class DualState.SingleMemContextDelete<T>
extends DualState.SingleGuardedLong<T>
A
DualState subclass whose only native resource releasing action
needed is MemoryContextDelete of a single context.
This class may get called at the nativeStateReleased entry, not
only if the native state is actually being released, but if it is being
'claimed' by native code for its own purposes. The effect is the same
as far as Java is concerned; the object is no longer accessible, and the
native code is responsible for whatever happens to it next.
-
Nested Class Summary
Nested classes/interfaces inherited from class org.postgresql.pljava.internal.DualState
DualState.Key, DualState.SingleFreeErrorData<T>, DualState.SingleFreeTupleDesc<T>, DualState.SingleGuardedLong<T>, DualState.SingleHeapFreeTuple<T>, DualState.SingleMemContextDelete<T>, DualState.SinglePfree<T>, DualState.SingleSPIcursorClose<T>, DualState.SingleSPIfreeplan<T> -
Field Summary
Fields inherited from class org.postgresql.pljava.internal.DualState
m_resourceOwner -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedSingleMemContextDelete(DualState.Key cookie, T referent, long resourceOwner, long memoryContext) -
Method Summary
Modifier and TypeMethodDescriptionReturn aprintfformat string resembling"%s something(%x)"where the%xwill be the value being guarded; the "something" should indicate what the value represents, or what will be done with it when released by Java.protected voidjavaStateUnreachable(boolean nativeStateLive) When the Java state is released or unreachable, aMemoryContextDeletecall is made so the native memory is released without having to wait for release of its parent context.Methods inherited from class org.postgresql.pljava.internal.DualState.SingleGuardedLong
guardedLong, toStringMethods inherited from class org.postgresql.pljava.internal.DualState
adoptionLock, adoptionUnlock, checkCookie, clear, enqueue, get, identifierForMessage, invalidMessage, invalidSqlState, javaStateReleased, lock, nativeStateReleased, pin, pinnedByCurrentThread, pinUnlessReleased, referent, releasedMessage, releasedSqlState, releaseFromJava, toString, unlock, unlock, unpinMethods inherited from class java.lang.ref.Reference
clone, isEnqueued, reachabilityFence, refersTo
-
Constructor Details
-
SingleMemContextDelete
protected SingleMemContextDelete(DualState.Key cookie, T referent, long resourceOwner, long memoryContext)
-
-
Method Details
-
formatString
Description copied from class:DualState.SingleGuardedLongReturn aprintfformat string resembling"%s something(%x)"where the%xwill be the value being guarded; the "something" should indicate what the value represents, or what will be done with it when released by Java.- Overrides:
formatStringin classDualState.SingleGuardedLong<T>
-
javaStateUnreachable
protected void javaStateUnreachable(boolean nativeStateLive) When the Java state is released or unreachable, aMemoryContextDeletecall is made so the native memory is released without having to wait for release of its parent context.- Overrides:
javaStateUnreachablein classDualState<T>- Parameters:
nativeStateLive- true is passed if the instance's "native state" is still considered live, that is, no resource-owner callback has been invoked to stamp it invalid (nor has it been "adopted").
-