Exemplo n.º 1
0
    def __init__(self, filename, index_filename, mode, serializer=None):
        """Initialize an IndexedDatabase, writing the serializer if necessary.

    SERIALIZER is only used if MODE is DB_OPEN_NEW; otherwise the
    serializer is read from the file."""

        self.filename = filename
        self.index_filename = index_filename
        self.mode = mode
        if self.mode == DB_OPEN_NEW:
            self.f = open(self.filename, 'wb+')
        elif self.mode == DB_OPEN_WRITE:
            self.f = open(self.filename, 'rb+')
        elif self.mode == DB_OPEN_READ:
            self.f = open(self.filename, 'rb')
        else:
            raise RuntimeError('Invalid mode %r' % self.mode)

        self.index_table = RecordTable(self.index_filename, self.mode,
                                       FileOffsetPacker())

        if self.mode == DB_OPEN_NEW:
            assert serializer is not None
            self.serializer = serializer
            cPickle.dump(self.serializer, self.f, -1)
        else:
            # Read the memo from the first pickle:
            self.serializer = cPickle.load(self.f)

        # Seek to the end of the file, and record that position:
        self.f.seek(0, 2)
        self.fp = self.f.tell()
        self.eofp = self.fp
Exemplo n.º 2
0
 def __init__(self, mode):
   self.mode = mode
   if mode not in (DB_OPEN_NEW, DB_OPEN_READ):
     raise RuntimeError, "Invalid 'mode' argument to PersistenceManager"
   primer = (
       SVNInitialProjectCommit,
       SVNPrimaryCommit,
       SVNPostCommit,
       SVNBranchCommit,
       SVNTagCommit,
       )
   serializer = PrimedPickleSerializer(primer)
   self.svn_commit_db = IndexedDatabase(
       artifact_manager.get_temp_file(config.SVN_COMMITS_INDEX_TABLE),
       artifact_manager.get_temp_file(config.SVN_COMMITS_STORE),
       mode, serializer)
   self.cvs2svn_db = RecordTable(
       artifact_manager.get_temp_file(config.CVS_REVS_TO_SVN_REVNUMS),
       mode, SignedIntegerPacker(SVN_INVALID_REVNUM))
Exemplo n.º 3
0
def CVSItemToChangesetTable(filename, mode):
    if use_mmap_for_cvs_item_to_changeset_table:
        return MmapRecordTable(filename, mode, UnsignedIntegerPacker())
    else:
        return RecordTable(filename, mode, UnsignedIntegerPacker())