~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/knit.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2006-09-06 16:21:16 UTC
  • mfrom: (1955.3.30 transport_bytes)
  • Revision ID: pqm@pqm.ubuntu.com-20060906162116-90b02cf97bcc11e8
(jam) create Transport.*_{file,bytes}

Show diffs side-by-side

added added

removed removed

Lines of Context:
403
403
        """See VersionedFile.copy_to()."""
404
404
        # copy the current index to a temp index to avoid racing with local
405
405
        # writes
406
 
        transport.put(name + INDEX_SUFFIX + '.tmp', self.transport.get(self._index._filename),)
 
406
        transport.put_file_non_atomic(name + INDEX_SUFFIX + '.tmp',
 
407
                self.transport.get(self._index._filename))
407
408
        # copy the data file
408
409
        f = self._data._open_file()
409
410
        try:
410
 
            transport.put(name + DATA_SUFFIX, f)
 
411
            transport.put_file(name + DATA_SUFFIX, f)
411
412
        finally:
412
413
            f.close()
413
414
        # move the copied index into place
414
415
        transport.move(name + INDEX_SUFFIX + '.tmp', name + INDEX_SUFFIX)
415
416
 
416
417
    def create_empty(self, name, transport, mode=None):
417
 
        return KnitVersionedFile(name, transport, factory=self.factory, delta=self.delta, create=True)
 
418
        return KnitVersionedFile(name, transport, factory=self.factory,
 
419
                                 delta=self.delta, create=True)
418
420
    
419
421
    def _fix_parents(self, version, new_parents):
420
422
        """Fix the parents list for version.
953
955
        self._file_mode=file_mode
954
956
 
955
957
    def write_header(self):
956
 
        if self._transport.append(self._filename, StringIO(self.HEADER),
957
 
            mode=self._file_mode):
 
958
        if self._transport.put_bytes_non_atomic(self._filename, self.HEADER,
 
959
                mode=self._file_mode):
958
960
            raise KnitCorrupt(self._filename, 'misaligned after writing header')
959
961
 
960
962
    def check_header(self, fp):
1245
1247
            assert isinstance(line, str), \
1246
1248
                'content must be utf-8 encoded: %r' % (line,)
1247
1249
            lines.append(line)
1248
 
        self._transport.append(self._filename, StringIO(''.join(lines)))
 
1250
        self._transport.append_bytes(self._filename, ''.join(lines))
1249
1251
        # cache after writing, so that a failed write leads to missing cache
1250
1252
        # entries not extra ones. XXX TODO: RBC 20060502 in the event of a 
1251
1253
        # failure, reload the index or flush it or some such, to prevent
1308
1310
        self._cache = {}
1309
1311
        self._do_cache = False
1310
1312
        if create:
1311
 
            self._transport.put(self._filename, StringIO(''), mode=file_mode)
 
1313
            self._transport.put_bytes_non_atomic(self._filename, '',
 
1314
                                                 mode=file_mode)
1312
1315
 
1313
1316
    def enable_cache(self):
1314
1317
        """Enable caching of reads."""
1353
1356
        :return: the offset in the data file raw_data was written.
1354
1357
        """
1355
1358
        assert isinstance(raw_data, str), 'data must be plain bytes'
1356
 
        return self._transport.append(self._filename, StringIO(raw_data))
 
1359
        return self._transport.append_bytes(self._filename, raw_data)
1357
1360
        
1358
1361
    def add_record(self, version_id, digest, lines):
1359
1362
        """Write new text record to disk.  Returns the position in the
1360
1363
        file where it was written."""
1361
1364
        size, sio = self._record_to_data(version_id, digest, lines)
1362
1365
        # write to disk
1363
 
        start_pos = self._transport.append(self._filename, sio)
 
1366
        start_pos = self._transport.append_file(self._filename, sio)
1364
1367
        if self._do_cache:
1365
1368
            self._cache[version_id] = sio.getvalue()
1366
1369
        return start_pos, size