[squeak-dev] The Trunk: Files-nice.79.mcz

commits at source.squeak.org commits at source.squeak.org
Sat Mar 27 21:58:24 UTC 2010


Nicolas Cellier uploaded a new version of Files to project The Trunk:
http://source.squeak.org/trunk/Files-nice.79.mcz

==================== Summary ====================

Name: Files-nice.79
Author: nice
Time: 27 March 2010, 10:58:18.301 pm
UUID: 1a2f808c-0bf0-504b-abba-4607dec810b2
Ancestors: Files-ul.78

Fix an _ in comment

=============== Diff against Files-ul.78 ===============

Item was changed:
  ReadWriteStream subclass: #CompressedSourceStream
  	instanceVariableNames: 'segmentFile segmentSize nSegments segmentTable segmentIndex dirty endOfFile'
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'Files-System'!
  
+ !CompressedSourceStream commentStamp: 'nice 3/24/2010 07:36' prior: 0!
- !CompressedSourceStream commentStamp: 'di 11/3/2003 17:58' prior: 0!
  I implement a file format that compresses segment by segment to allow incremental writing and browsing.  Note that the file can only be written at the end.
  
  Structure:
  segmentFile		The actual compressed file.
  segmentSize		This is the quantum of compression.  The virtual file is sliced up
  				into segments of this size.
  nSegments		The maximum number of segments to which this file can be grown.
  endOfFile		The user's endOfFile pointer.
  segmentTable	When a file is open, this table holds the physical file positions
  				of the compressed segments.
  segmentIndex	Index of the most recently accessed segment.
  
  Inherited from ReadWriteStream...
  collection		The segment buffer, uncompressed
  position			This is the position *local* to the current segment buffer
  readLimit		ReadLimit for the current buffer
  writeLimit		WriteLimit for the current buffer
  
  Great care must be exercised to distinguish between the position relative to the segment buffer and the full file position (and, or course, the segment file position ;-).
  
  The implementation defaults to a buffer size of 20k, and a max file size of 34MB (conveniently chosen to be greater than the current 33MB limit of source code pointers).  The format of the file is as follows:
  	segmentSize		4 bytes
  	nSegments		4 bytes
  	endOfFile		4 bytes
  	segmentTable	4 bytes * (nSegments+1)
  	beginning of first compressed segment
  
  It is possible to override the default allocation by sending the message #segmentSize:nSegments: immediately after opening a new file for writing, as follows:
  
+ 	bigFile := (CompressedSourceStream on: (FileStream newFileNamed: 'biggy.stc'))
- 	bigFile _ (CompressedSourceStream on: (FileStream newFileNamed: 'biggy.stc'))
  			segmentSize: 50000 maxSize: 200000000
  
  The difference between segment table entries reveals the size of each compressed segment.  When a file is being written, it may lack the final segment, but any flush, position:, or close will force a dirty segment to be written.!




More information about the Squeak-dev mailing list