private static class ProcedureManager.WorkArea extends java.lang.Object implements Scopeable
Modifier and Type | Field and Description |
---|---|
private java.util.Deque<ProcedureManager.CalleeInfoImpl> |
calleeInfo
A stack containing the info about the next called program or internal entry.
|
private java.util.Map<java.lang.Object,java.lang.Boolean> |
deleteOnExit
Map with flags indicating if this procedure should be deleted on exit.
|
private java.lang.String |
initiatingExtProg
The 4GL program name being currently initiating.
|
private java.util.Deque<java.lang.String> |
internalEntryStack
Stack of internal entry names.
|
private java.util.Set<WrappedResource> |
pendingResources
Resources pending to registered with THIS-PROCEDURE when the next block is entered.
|
private FastSiblingDeque<java.lang.Object> |
persistentProcedures
The list of all registered persistent procedures, via RUN PERSISTENT calls.
|
private java.util.Map<java.lang.Object,ProcedureManager.ProcedureData> |
pMap
This map holds the attributes for all registered external procedures, by instance.
|
private java.lang.Object |
processedProcedure
Indicates the current external program when a scope or finalizable notification occurs.
|
private java.lang.Object |
publishSourceProcedure
Explicit referent used as SOURCE-PROCEDURE for a PUBLISH statement.
|
private java.util.Map<java.lang.Object,java.lang.String> |
relativeNames
Map of relative names (i.e.
|
private java.util.Set<java.lang.Object> |
remotePersistentProcedures
A registry of persistent procedures which were instantiated by a remote side.
|
private java.util.Map<java.lang.Object,ProcedureManager.ProcedureData> |
sessionSuperProcs
A map containing the list of super-procedures, for the session, by each instance.
|
private java.util.Deque<java.lang.Object> |
sourceProcedures
Stack of source-procedures, by instance.
|
private java.util.Deque<ProcedureManager.ProcedureData> |
sourceProceduresData
Stack of source-procedures' data.
|
private java.util.List<ProcedureManager.Subscription> |
subscriptions
The global list of subscriptions, for this context.
|
private java.util.Deque<java.lang.Object> |
targetProcedures
Stack of target-procedures, by instance.
|
private java.util.Deque<ProcedureManager.ProcedureData> |
targetProceduresData
Stack of target-procedures' data.
|
private java.util.Deque<java.lang.Object> |
thisProcedures
Stack of this-procedures, by instance.
|
Modifier | Constructor and Description |
---|---|
private |
WorkArea() |
Modifier and Type | Method and Description |
---|---|
void |
cleanup(java.lang.Object referent)
Attempt cleanup of the given external program instance.
|
void |
forceCleanup(java.lang.Object referent)
Cleanup of the given external program instance.
|
java.util.Map<java.lang.Object,ProcedureManager.ProcedureData> |
getSessionSuperProcedures()
Get the map of session's super-procedures.
|
java.util.Map<java.lang.Object,ProcedureManager.ProcedureData> |
getSuperProcedures(java.lang.Object referent)
Get the map of the super-procedures for the given referent.
|
void |
scopeDeleted()
Provides a notification that an external scope is about to be deleted.
|
void |
scopeFinished()
Handle scope notifications, to maintain proper source, target, and
this-procedure references.
|
void |
scopeStart()
Handle scope notifications, to maintain proper source, target, and
this-procedure references.
|
private boolean |
superProcForExtProc(java.lang.Object referent,
java.util.Collection<java.lang.Object> progs)
Check if the given referent is a super-procedure of one of the
procedures in the given list.
|
private FastSiblingDeque<java.lang.Object> persistentProcedures
private java.util.Map<java.lang.Object,ProcedureManager.ProcedureData> sessionSuperProcs
private java.util.Map<java.lang.Object,ProcedureManager.ProcedureData> pMap
private java.util.Deque<java.lang.Object> targetProcedures
private java.util.Deque<ProcedureManager.ProcedureData> targetProceduresData
private java.util.Deque<java.lang.Object> sourceProcedures
private java.util.Deque<ProcedureManager.ProcedureData> sourceProceduresData
private java.util.Deque<java.lang.Object> thisProcedures
private java.lang.Object publishSourceProcedure
private java.util.Deque<java.lang.String> internalEntryStack
thisProcedures
stack.private java.util.Set<WrappedResource> pendingResources
private java.util.Map<java.lang.Object,java.lang.String> relativeNames
private java.lang.Object processedProcedure
private java.util.Deque<ProcedureManager.CalleeInfoImpl> calleeInfo
private java.lang.String initiatingExtProg
private java.util.Map<java.lang.Object,java.lang.Boolean> deleteOnExit
private java.util.Set<java.lang.Object> remotePersistentProcedures
private java.util.List<ProcedureManager.Subscription> subscriptions
public void scopeStart()
scopeStart
in interface Scopeable
public void scopeFinished()
scopeFinished
in interface Scopeable
public void scopeDeleted()
This implementation is a no-op.
scopeDeleted
in interface Scopeable
public java.util.Map<java.lang.Object,ProcedureManager.ProcedureData> getSessionSuperProcedures()
public java.util.Map<java.lang.Object,ProcedureManager.ProcedureData> getSuperProcedures(java.lang.Object referent)
referent
- The external program instance for which the super-procedures
are needed.public void cleanup(java.lang.Object referent)
pMap
map.referent
- The external program instance for which needs to be cleaned
up.public void forceCleanup(java.lang.Object referent)
pMap
map.referent
- The external program instance for which needs to be cleaned
up.private boolean superProcForExtProc(java.lang.Object referent, java.util.Collection<java.lang.Object> progs)
referent
- The external program instance.progs
- The list of external programs for which their
super-procedures list will be searched for the referent.true
if it was found as a super-procedure for
one of the given procedures.