diff options
Diffstat (limited to 'FuseArchive/ChunkBufferStringIO.py')
-rw-r--r-- | FuseArchive/ChunkBufferStringIO.py | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/FuseArchive/ChunkBufferStringIO.py b/FuseArchive/ChunkBufferStringIO.py new file mode 100644 index 0000000..9a27f51 --- /dev/null +++ b/FuseArchive/ChunkBufferStringIO.py @@ -0,0 +1,30 @@ +import logging +from cStringIO import StringIO + +# Handle efficient operations on a non-fixed length buffer like appending, +# replacing, reading chunks, etc +class ChunkBufferStringIO: + def __init__( self, data = '' ): + logging.debug( "Creating chunkbuffer: %s" % data ) + self.io = StringIO(); + self.len = 0 + self.append( data ) + + def append( self, s ): + self.len += len( s ) + self.io.write( s ) + + def replace( self, buf, start, end ): + self.io.seek( start ) + self.io.write( buf[ end - start: ] ) + self.io.seek( 0, os.SEEK_END ) + + def length( self ): + return self.len + + def truncate( self, l ): + self.len = l + self.io.truncate( l ) + + def string(self): + return self.io.getvalue() |