org.abora.gold.turtle
Class SouthRecorderChecker

java.lang.Object
  |
  +--org.abora.gold.java.AboraHeaper
        |
        +--org.abora.gold.xpp.basic.Heaper
              |
              +--org.abora.gold.snarf.Abraham
                    |
                    +--org.abora.gold.turtle.AgendaItem
                          |
                          +--org.abora.gold.turtle.SouthRecorderChecker

public class SouthRecorderChecker
extends AgendaItem

This is a one-shot agenda item.
When changing the prop(ertie)s of a Stamp, we need to first take care of the future
backFollow requests (by updating the Bert Canopy so the filtered HTree walk will find this
Stamp) before taking care of the past (the Recorders that were looking for this Stamp in
their future). This AgendaItem is to remember to take care of the past (by doing a
southwards o-walk filtered by the Sensor Canopy) after the future is properly dealt with.
The RecorderHoister assumes that this southward walk is done in a single-step, so it is
free to make changes in a way that, if it were interleaved with an incremental southward
walk by a RecorderChecker looking for the recorder(s) being hoisted, might cause the
hoisted recorder to be missed.
This is also used recursively by this very o-walk to schedule a further o-walk on
appropriate sub-Stamps.
Keeping track of whether persistent objects are garbage-on-disk during AgendaItem
processing only remains open for Stamps, except here where it also arises for an OrglRoot.
The OrglRoot is itself held by a persistent Stamp, from which it can be easily obtained,
so we should probably just hold onto two Stamps instead of a Stamp and an OrglRoot (so I
only have to solve the "how to keep it around" problem for Stamps).


Field Summary
protected  PropFinder myFinder
           
protected  OrglRoot myORoot
           
protected  SensorCrum mySCrum
           
 
Fields inherited from class org.abora.gold.snarf.Abraham
DismantleStatistics, myHash, myInfo, myToken, TheTokenSource
 
Fields inherited from class org.abora.gold.xpp.basic.Heaper
AllBlasts, BecomeMap, GarbageCount, InGC, InitializedClasses, InitializingClasses, LastMemory, NextClientRequestNumber, NotOneElementSignal, PackageTable, PromiseNameTable, StringHashSBoxes
 
Fields inherited from class org.abora.gold.java.AboraHeaper
ActiveClubs, CurrentAuthor, CurrentBertCanopyCache, CurrentBertCrum, CurrentChunk, CurrentGrandMap, CurrentKeyMaster, CurrentPacker, CurrentSensorCanopyCache, CurrentServer, CurrentSession, CurrentSessions, CurrentTrace, InitialEditClub, InitialOwner, InitialReadClub, InitialSponsor, InsideTransactionFlag
 
Constructor Summary
SouthRecorderChecker(OrglRoot oroot, PropFinder finder, SensorCrum scrum)
           
SouthRecorderChecker(Rcvr receiver)
           
 
Method Summary
 void dismantle()
          Disconnect me from the universe and throw me off the disk.
For GC safety, we keep a strongptr to ourself -- is this still necessary?
static Heaper make(OrglRoot oroot, BeEdition stamp, PropFinder finder, SensorCrum scrum)
           
static Heaper make(OrglRoot oroot, PropFinder finder, SensorCrum scrum)
           
 void sendSelfTo(Xmtr xmtr)
          do nothing
 boolean step()
          Return FALSE when there's nothing left to do (at which time I should usually be
unregistered and destroyed, but see Agenda::step())
 
Methods inherited from class org.abora.gold.turtle.AgendaItem
forgetYourself, newShepherd, rememberYourself, schedule, unschedule
 
Methods inherited from class org.abora.gold.snarf.Abraham
actualHashForEqual, becomeStub, cleanupGarbage, contentsHash, destroy, destruct, diskUpdate, dismantleStatistics, fetchInfo, fetchShepherd, flockInfo, forget, getInfo, getShepherdStubCategory, initTimeNonInherited, isConstructed, isDestructed, isEqual, isKindOf, isPurgeable, isShepherd, isStub, isUnlocked, linkTimeNonInherited, remember, restartAbraham, restartAbraham, returnToken, staticTimeNonInherited, token
 
Methods inherited from class org.abora.gold.xpp.basic.Heaper
abstractDeclarationFor, abstractTypeFor, addMethodAttributeToInOf, addPackage, addPackageCategory, allClientProtocolOn, argumentTypesFor, arrow, blast, blast, BLAST, cachePromiseNameTable, cachePromiseNameTableIn, canYouBecome, cast, cleanPromiseClasses, clientClassesDo, clientFunctionsOn, clientMethodsOn, clientProtocol, clientProtocolDo, clientProtocolOn, clientProtocolOn, collectibleClasses, compare, compileClientSubclasses, compileConstantPromiseMethods, compileCreateFromRcvr, compileEQ, compileGeneratedClassMethod, compileGeneratedMethod, compileHook, compilePromise, compilePromiseDefaultMethods, compilePromiseFluidDeclarations, compilePromiseHandlers, compilePromiseMethods, compileRequestCreateMsgInArguments, compileRequestEvaluateMsgInReturningArguments, compileRPCSpecialistEvaluateMsgForReturningArguments, compileSendSelfTo, compileSendSelfToSendHook, compileStubbleMethods, compileSubclassStubbleMethods, computeMangle, computePreorder, constantTypeValue, convert, convertCopyDeclarations, convertDeferredDeclarations, convertProxyDeclarations, convertSubclassCopyDeclarations, convertSubclassDeferredDeclarations, convertSubclassProxyDeclarations, copyReferencesToType, create, create, create, create, create, create, create, create, create, create, createRequestClassArguments, definesProxyMethods, delete, deref, destructor, enum, enumFlags, equals, exportName, fetchAttribute, fetchPackage, fetchSuperCategory, fileOutClientProtocol, findCategory, findSenderAndReceiverMethods, findTailInto, flushPromiseNameTable, foo, freezeClientClasses, freezeClientProtocol, freezeStProtocol, frozenClasses, garbageCollect, garbageCollectFrom, gcOpportunity, gcOpportunity, generatedCategory, generatePromiseNames, getCategory, getOrMakePackage, getSuperCategory, handlerSignaturesFrom, hash, hashForEqual, hasProxyMethods, info_clientClasses, info_clientSideClasses, info_promiseClasses, info_stProtocol, inGC, initializedClasses, initializingClasses, initPackages, initStringHashSBoxes, inspectPieces, instanceSize, IntegerVar, isByProxy, isConstructed, isDestructed, isEqualOrSubclassOf, isGenerated, isIntType, isKindOf, isRawType, make, makeClassTable, makeFillTable, makeRequestTable, mangle, markChildren, markCount, markInstances, mayBecome, mayBecomeAnySubclassOf, new1, newX, nonCopyVariables, notWorking, pack, packageClasses, packagingCategory, parseExportName, passe, pointerToStaticMember, pointerToStaticMember, pointerToVirtualMember, preorderMax, preorderNumber, printOn, PROBLEM, problems, promiseClass, promiseDefaultValue, promiseName, promiseNameTable, promiseToAbstract, registerPackageCategory, removeGeneratedCode, removeStubbleMethods, removeSubclassGeneratedCode, removeSubclassStubbleMethods, requestProcedure, requestProceduresFrom, returnTypeFor, rootName, scheduleTermination, sendProxyTo, serverNameFor, setGC, signal, signals, smalltalkSelector, stClientProtocol, stubbleSelectorTokenReturnsArguments, subclassNonCopyVariables, takeOop, togglePromiseName, togglePromiseOfParse, unimplemented, unmangle, verifyFreeze, wipeStubble
 
Methods inherited from class org.abora.gold.java.AboraHeaper
asOop, basicInspect, displayString, error, hack, halt, inspect, knownBug, mightNotImplement, REQUIRES, shouldImplement, shouldNotImplement, stubbleForSubclassResponsibility, thingToDo, willNotImplement
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

myORoot

protected OrglRoot myORoot

myFinder

protected PropFinder myFinder

mySCrum

protected SensorCrum mySCrum
Constructor Detail

SouthRecorderChecker

public SouthRecorderChecker(OrglRoot oroot,
                            PropFinder finder,
                            SensorCrum scrum)

SouthRecorderChecker

public SouthRecorderChecker(Rcvr receiver)
Method Detail

dismantle

public void dismantle()
Description copied from class: Abraham
Disconnect me from the universe and throw me off the disk.
For GC safety, we keep a strongptr to ourself -- is this still necessary?

Overrides:
dismantle in class AgendaItem

step

public boolean step()
Description copied from class: AgendaItem
Return FALSE when there's nothing left to do (at which time I should usually be
unregistered and destroyed, but see Agenda::step())

Overrides:
step in class AgendaItem

sendSelfTo

public void sendSelfTo(Xmtr xmtr)
Description copied from class: Heaper
do nothing

Overrides:
sendSelfTo in class AgendaItem

make

public static Heaper make(OrglRoot oroot,
                          PropFinder finder,
                          SensorCrum scrum)

make

public static Heaper make(OrglRoot oroot,
                          BeEdition stamp,
                          PropFinder finder,
                          SensorCrum scrum)


Translation - Copyright © 2003 David G Jones. All Rights Reserved.
Original Udanax-Gold - Copyright © 1979-1999 Udanax.com. All rights reserved.