Deveel.Data.Store.StoreBase.RemoveFromBinChain C# (CSharp) Method

RemoveFromBinChain() private method

private RemoveFromBinChain ( long offset, long size ) : void
offset long
size long
return void
        private void RemoveFromBinChain(long offset, long size)
        {
            // What bin index should we be looking input?
            int binChainIndex = MinimumBinSizeIndex(size);

            var prevOffset = -1L;
            var curOffset = freeBinList[binChainIndex];

            // Search this bin for the offset
            // NOTE: This is an iterative search through the bin chain
            while (offset != curOffset) {
                if (curOffset == -1)
                    throw new IOException("Area not found input bin chain.");

                // Move to the next input the chain
                var headerInfo = new long[2];
                ReadAreaHeader(curOffset, headerInfo);

                prevOffset = curOffset;
                curOffset = headerInfo[1];
            }

            // Found the offset, so remove it,
            if (prevOffset == -1) {
                var headerInfo = new long[2];

                ReadAreaHeader(offset, headerInfo);
                freeBinList[binChainIndex] = headerInfo[1];
                WriteBinIndex(binChainIndex);
            } else {
                var headerInfo = new long[2];
                var headerInfo2 = new long[2];

                ReadAreaHeader(prevOffset, headerInfo2);
                ReadAreaHeader(offset, headerInfo);
                headerInfo2[1] = headerInfo[1];
                ReboundArea(prevOffset, headerInfo2, false);
            }
        }