コード例 #1
0
        /// <summary>
        /// Gets the db item length (in bytes).
        /// </summary>
        /// <param name="reference">Reference to the requested db item</param>
        /// <returns>The length of requested db item</returns>
        public long GetLength(DbItemReference reference)
        {
            if (!_pageManager.PageExists(reference.PageIndex))
            {
                return(0);
            }

            IPage page = _pageManager.FetchPage(reference.PageIndex);

            var header = PageFormatter.GetPageHeader(page);

            if (header.SizeRange == SizeRange.MultiPage)
            {
                return(PageFormatter.ReadMultipageItemLength(page));
            }

            return(PageFormatter.IsFixedSizeItemAllocated(page, reference.ItemIndex)
                    ? PageFormatter.ReadFixedSizeItemLength(page, reference.ItemIndex)
                    : 0);
        }