BplusDotNet.LinkedFile.ReleaseBuffers C# (CSharp) 메소드

ReleaseBuffers() 공개 메소드

public ReleaseBuffers ( long HeadBufferNumber ) : void
HeadBufferNumber long
리턴 void
        public void ReleaseBuffers(long HeadBufferNumber)
        {
            // KISS
            //System.Diagnostics.Debug.WriteLine(" deallocating chunk starting at "+HeadBufferNumber);
            long thisbuffernumber = HeadBufferNumber;
            long nextbuffernumber;
            byte buffertype;
            byte[] dummy = this.ParseBuffer(HeadBufferNumber, out buffertype, out nextbuffernumber);
            if (buffertype!=HEAD)
            {
                throw new LinkedFileException("head buffer not marked HEAD");
            }
            this.DeallocateBuffer(HeadBufferNumber);
            while (nextbuffernumber!=NULLBUFFERPOINTER)
            {
                thisbuffernumber = nextbuffernumber;
                dummy = this.ParseBuffer(thisbuffernumber, out buffertype, out nextbuffernumber);
                if (buffertype!=BODY)
                {
                    throw new LinkedFileException("body buffer not marked BODY");
                }
                this.DeallocateBuffer(thisbuffernumber);
            }
        }

Usage Example

예제 #1
0
        public void RemoveKey(string key)
        {
            long map = m_tree[key];

            //this.archive.ReleaseBuffers(map);
            //this.FreeChunksOnCommit.Add(map);
            if (m_freeChunksOnAbort.ContainsKey(map))
            {
                // free it now
                m_freeChunksOnAbort.Remove(map);
                m_archive.ReleaseBuffers(map);
            }
            else
            {
                // free when committed
                m_freeChunksOnCommit[map] = map;
            }
            m_tree.RemoveKey(key);
        }