# HG changeset patch # User Paul Boddie # Date 1253128337 -7200 # Node ID c5a5954934c636efae2cb4aded431962299c19ad # Parent b52d9f014413ca2a55557d22456238893d16150f Switched the write caches in FileWriter instances to StringIO instances. diff -r b52d9f014413 -r c5a5954934c6 iixr/files.py --- a/iixr/files.py Wed Sep 16 21:02:35 2009 +0200 +++ b/iixr/files.py Wed Sep 16 21:12:17 2009 +0200 @@ -19,6 +19,7 @@ """ from iixr.data import vint +from cStringIO import StringIO import bz2, zlib # Constants. @@ -72,7 +73,7 @@ def __init__(self, f): File.__init__(self, f) - self.cache = [] + self.cache = StringIO() self.cache_length = 0 def write_number(self, number): @@ -118,18 +119,17 @@ # Cache-affected methods. def write(self, s): - self.cache.append(s) - self.cache_length += len(s) - if self.cache_length >= WRITE_CACHE_SIZE: + self.cache.write(s) + if self.cache.tell() >= WRITE_CACHE_SIZE: self.flush() def tell(self): - return self.f.tell() + self.cache_length + return self.f.tell() + self.cache.tell() def flush(self): - self.f.write("".join(self.cache)) - self.cache = [] - self.cache_length = 0 + self.cache.seek(0) + self.f.write(self.cache.read()) + self.cache = StringIO() class FileReader(File):