Пример #1
0
        private static VssRecord CreateRecord(
            RecordHeader recordHeader, BufferReader recordReader)
        {
            VssRecord record = null;

            switch (recordHeader.Signature)
            {
            case RevisionRecord.SIGNATURE:
                record = CreateRevisionRecord(recordHeader, recordReader);
                break;

            case CommentRecord.SIGNATURE:
                record = new CommentRecord();
                break;

            case CheckoutRecord.SIGNATURE:
                record = new CheckoutRecord();
                break;

            case ProjectRecord.SIGNATURE:
                record = new ProjectRecord();
                break;

            case BranchRecord.SIGNATURE:
                record = new BranchRecord();
                break;

            case DeltaRecord.SIGNATURE:
                record = new DeltaRecord();
                break;
            }
            return(record);
        }
Пример #2
0
        public bool ReadNextRecord(VssRecord record)
        {
            while (reader.Remaining > RecordHeader.LENGTH)
            {
                try
                {
                    var recordHeader = new RecordHeader();
                    recordHeader.Read(reader);

                    var recordReader = reader.Extract(recordHeader.Length);

                    // comment records always seem to have a zero CRC
                    if (recordHeader.Signature != CommentRecord.SIGNATURE)
                    {
                        recordHeader.CheckCrc();
                    }

                    if (recordHeader.Signature == record.Signature)
                    {
                        record.Read(recordReader, recordHeader);
                        return(true);
                    }
                }
                catch (EndOfBufferException e)
                {
                    throw new RecordTruncatedException(e.Message);
                }
            }
            return(false);
        }
Пример #3
0
        public void ReadRecord(VssRecord record)
        {
            try
            {
                var recordHeader = new RecordHeader();
                recordHeader.Read(reader);

                var recordReader = reader.Extract(recordHeader.Length);

                // comment records always seem to have a zero CRC
                if (recordHeader.Signature != CommentRecord.SIGNATURE)
                {
                    recordHeader.CheckCrc();
                }

                recordHeader.CheckSignature(record.Signature);

                record.Read(recordReader, recordHeader);
            }
            catch (EndOfBufferException e)
            {
                throw new RecordTruncatedException(e.Message);
            }
        }
Пример #4
0
 public void ReadRecord(VssRecord record, int offset)
 {
     reader.Offset = offset;
     ReadRecord(record);
 }