Index - All Packages - All Categories - All Classes
Class SnarfRecord
Manage retrieval, refitting, and rewriting of existing flocks.  Assign indices for new flocks.  
SnarfRecords can go away after their contents have been flushed.  We might keep it around if we expect to be assigning new flocks to the snarf again, just to keep myOccupied.  The snarfRecord will be recreated when another object is read in.
Package: Udanax-Gold
All Superclasses: Object Heaper 
Protocols: Object
Categories: Xanadu-Snarf
Class Methodsmake: snarfID with: packer with: spaceLeft 
Instance MethodsactualHashForEqual 
allocate: size with: shep 
Shep is being newly added to this snarf.  Allocate enough space for it and return the newly assigned index for it.
allocateIndex 
Return the first unoccupied index in the snarf.  Compute the lowest
	 element >= 0 that is not already in the occupied region by subtracting 
	 the occupied region from the region >= 0.
changedFlock: index with: shep 
Remember that the flock at index must be written to the snarf on the next update.
create: snarfID with: packer with: spaceLeft 
destruct 
Destroy all objects imaged from this snarf.
Overrides: Heaper
dismantleFlock: info 
Remove the flock from the disk.  Replace it with a Pumpkin so that the 
	 routine that flushes to disk knows to remove whatever's there already.
fetchForward: index 
If the location specified by info has been forwarded, return a flockInfo
	 describing its new location.
flushChanges 
Rewrite all flocks that have changed in this snarf.
forgottenFlocks 
Return the set of indices to locations that are forgotten.
getWriteHandler 
Get the handler for my snarf so that I can send or receive data from it.
isEqual: other 
isForgotten: index 
Return true if the flock at that location is forgotten. Higher level routines 
	should make sure this doesn't get done very often because it requires bringing 
	in the snarf if it's not already there.
isPurgeable 
Return true if everything in this snarfRecord is purged. 
	 If so, then this snarfRecord can be thrown away.
makeReal: index with: stub 
We know that the object wasn't imaged.  Read the real shepherd into
	 the memory occupied by stub.  If the location is a forwarder, then 
	 register a new flockInfo with the stub and just return.
originateFlock: index 
This will get a flock that we know the location of
	 without a stub.  The flock must not already be imaged,
	 and it must not be forwarded.
printOn: oo 
Overrides: Object
readOccupied 
Create an array with the sizes of every flock in the snarf.
refitFlocks 
Recompute size information for all changed shepherds and see if they still fit.
	 Any that don't get handed to the SnarfPacker to treat as new flocks.   The 
	 old space changed and dismantled flocks has been returned to the pool.  
	 Reallocate space for the changed flocks out of the pool.  Any that don't fit 
	 are handed back to myPacker to go in other snarfs.
setSpaceLeft: spaceLeft 
spaceLeft 
Return the amount of space currently left in the snarf.
wipeBelowHighest: highest with: handler 
Index - All Packages - All Categories - All Classes