RazorDB.JournalReader.Enumerate C# (CSharp) Method

Enumerate() public method

public Enumerate ( ) : Value>>.IEnumerable
return Value>>.IEnumerable
        public IEnumerable<KeyValuePair<Key, Value>> Enumerate()
        {
            byte[] key = null;
            byte[] value = null;
            bool data = true;
            while (data) {
                try {
                    int keyLen = _reader.Read7BitEncodedInt();
                    if (keyLen < 0 || keyLen > Config.MaxSmallValueSize) {
                        throw new InvalidOperationException("Key length is out of range.");
                    }
                    key = _reader.ReadBytes(keyLen);
                    if (key.Length != keyLen)
                        throw new InvalidOperationException();
                    int valueLen = _reader.Read7BitEncodedInt();
                    if (valueLen <= 0)
                        throw new InvalidOperationException("Value length must be greater than 0.");
                    value = _reader.ReadBytes(valueLen);
                    if (valueLen != value.Length)
                        throw new InvalidOperationException("Value length does not match expected data length.");
                } catch (EndOfStreamException) {
                    data = false;
                } catch (InvalidOperationException) {
                    data = false;
                } catch {
                    data = false;
                }
                if (data)
                    yield return new KeyValuePair<Key, Value>(Key.FromBytes(key), Value.FromBytes(value));
            }
        }

Usage Example

示例#1
0
        public JournaledMemTable(string baseFileName, int version)
        {
            _baseFileName = baseFileName;
            _version      = version;
            _memTable     = new MemTable();

            // If the journal exists from a previous run, then load its data into the memtable
            string journalFile = Config.JournalFile(baseFileName, version);

            if (File.Exists(journalFile))
            {
                var journalReader = new JournalReader(baseFileName, version);
                try {
                    foreach (var pair in journalReader.Enumerate())
                    {
                        _memTable.Add(pair.Key, pair.Value);
                    }
                } finally {
                    journalReader.Close();
                }
                _journal = new JournalWriter(baseFileName, version, true);
            }
            else
            {
                _journal = new JournalWriter(baseFileName, version, false);
            }
        }
All Usage Examples Of RazorDB.JournalReader::Enumerate