Recover() 공개 메소드

public Recover ( Hashtable ChunksInUse, bool FixErrors ) : void
ChunksInUse System.Collections.Hashtable
FixErrors bool
리턴 void
예제 #1
0
        public void Recover(bool correctErrors)
        {
            m_tree.Recover(correctErrors);
            var    chunksInUse = new Hashtable();
            string key         = m_tree.FirstKey();

            while (key != null)
            {
                long buffernumber = m_tree[key];
                if (chunksInUse.ContainsKey(buffernumber))
                {
                    throw new BplusTreeException("buffer number " + buffernumber + " associated with more than one key '"
                                                 + key + "' and '" + chunksInUse[buffernumber] + "'");
                }
                chunksInUse[buffernumber] = key;
                key = m_tree.NextKey(key);
            }
            // also consider the un-deallocated chunks to be in use
            foreach (DictionaryEntry thing in m_freeChunksOnCommit)
            {
                var buffernumber = (long)thing.Key;
                chunksInUse[buffernumber] = "awaiting commit";
            }
            m_archive.Recover(chunksInUse, correctErrors);
        }