Deveel.Data.Store.StoreBase.CropArea C# (CSharp) 메소드

CropArea() 개인적인 메소드

private CropArea ( long offset, long allocatedSize ) : void
offset long
allocatedSize long
리턴 void
        private void CropArea(long offset, long allocatedSize)
        {
            // Get the header info
            var headerInfo = new long[2];
            ReadAreaHeader(offset, headerInfo);

            var header = headerInfo[0];

            var freeAreaSize = header;
            var sizeDifference = freeAreaSize - allocatedSize;
            var isWilderness = (offset == WildernessOffset);

            // If the difference is greater than 512 bytes, add the excess space to
            // a free bin.

            if ((isWilderness && sizeDifference >= 32) || sizeDifference >= 512) {
                // Split the area into two areas.
                SplitArea(offset, allocatedSize);

                long leftOverPointer = offset + allocatedSize;
                // Add this area to the bin chain
                AddToBinChain(leftOverPointer, sizeDifference);

                // If offset is the wilderness area, set this as the new wilderness
                if (isWilderness ||
                    (leftOverPointer + sizeDifference) >= DataAreaEndOffset) {
                    WildernessOffset = leftOverPointer;
                }

            } else {
                // If offset is the wilderness area, set wilderness to -1
                if (isWilderness) {
                    WildernessOffset = -1;
                }
            }
        }