BplusDotNet.LinkedFile.AllocateBuffer C# (CSharp) Method

AllocateBuffer() private method

private AllocateBuffer ( ) : long
return long
        long AllocateBuffer()
        {
            if (this.FreeListHead!=NULLBUFFERPOINTER)
            {
                // reallocate a freed buffer
                long result = this.FreeListHead;
                byte buffertype;
                long NextFree;
                byte[] dummy = this.ParseBuffer(result, out buffertype, out NextFree);
                if (buffertype!=FREE)
                {
                    throw new LinkedFileException("free head buffer not marked free");
                }
                this.FreeListHead = NextFree;
                this.headerDirty = true;
                this.RecentNewBufferNumber = NULLBUFFERPOINTER;
                return result;
            }
            else
            {
                // allocate a new buffer
                long nextbuffernumber = this.buffers.nextBufferNumber();
                if (this.RecentNewBufferNumber==nextbuffernumber)
                {
                    // the previous buffer has been allocated but not yet written.  It must be written before the following one...
                    nextbuffernumber++;
                }
                this.RecentNewBufferNumber = nextbuffernumber;
                return nextbuffernumber;
            }
        }