org.abora.gold.turtle
Class AgendaItem

java.lang.Object
  |
  +--org.abora.gold.java.AboraHeaper
        |
        +--org.abora.gold.xpp.basic.Heaper
              |
              +--org.abora.gold.snarf.Abraham
                    |
                    +--org.abora.gold.turtle.AgendaItem
Direct Known Subclasses:
Agenda, GrandNodeDoubler, GrandNodeReinserter, Matcher, NorthRecorderChecker, PropChanger, RecorderTrigger, Sequencer, SouthRecorderChecker, UpdateTransitiveMemberIDs, UpdateTransitiveSuperClubIDs

public class AgendaItem
extends Abraham

A persistent representation of things that still need to be done. Can think of it like a
persistent process record. "schedule"ing me ensures that I will be stepped eventually,
and repeatedly, until step returns FALSE, even if the process should crash after I am
scheduled. Scheduling me so that I am persistent may happen inside some other consistent
block, however I will be stepped while outside of any consistent block (The FakePacker
doesn''t do this yet). Creating an AgendaItem does not imply that it is scheduled, the
client must explicitly schedule it as well. Destroying it *does* ensure that it gets
unscheduled, though it is valid & safe to destroy one which isn''t scheduled.
NOTE: Right now there are no fairness guarantees (and there may never be), so all
AgendaItems must eventually terminate in order for other things (like the ServerLoop) to
be guaranteed of eventually executing


Field Summary
 
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
AgendaItem()
          Not so special constructor for not becoming this class
AgendaItem(int hash)
          Special constructor for becoming this class
AgendaItem(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?
 void forgetYourself()
          forget is protected.
 void newShepherd()
          All AgendaItems use explicit deletion semantics.
 void rememberYourself()
          remember is protected.
 void schedule()
          Registers me with the top level Agenda, so that I will eventually get stepped.
 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())
 void unschedule()
          Unregisters me with the top level Agenda, so that I am no longer scheduled to get stepped.
Also causes me to be forgotten.
 
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
 

Constructor Detail

AgendaItem

public AgendaItem()
Not so special constructor for not becoming this class


AgendaItem

public AgendaItem(int hash)
Special constructor for becoming this class


AgendaItem

public AgendaItem(Rcvr receiver)
Method Detail

forgetYourself

public void forgetYourself()
forget is protected. This method exposes it for AgendaItems


rememberYourself

public void rememberYourself()
remember is protected. This method exposes it for AgendaItems


schedule

public void schedule()
Registers me with the top level Agenda, so that I will eventually get stepped. Also
causes me to be remembered.


step

public 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())


unschedule

public void unschedule()
Unregisters me with the top level Agenda, so that I am no longer scheduled to get stepped.
Also causes me to be forgotten.


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 Abraham

newShepherd

public void newShepherd()
All AgendaItems use explicit deletion semantics.

Overrides:
newShepherd in class Abraham

sendSelfTo

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

Overrides:
sendSelfTo in class Abraham


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