Beispiel #1
0
        public void Put(VolumePagePtr pPage, PageInfo info, ArraySegment <byte> content)
        {
            EnsureObjectNotDisposed();
            if (!Enabled)
            {
                return;
            }

            var tbl  = getVolumeTable(pPage.VolumeId);
            var item = new _entry
            {
                Info = info,
                Data = new byte[content.Count]
            };

            Array.Copy(content.Array, content.Offset, item.Data, 0, content.Count);

            int?maxAge = LifeTimeSec;

            if (maxAge.Value <= 0)
            {
                maxAge = null;
            }

            //since pageId can not be less than 1 we use negative pageIds for storing PageInfo without the byte array
            tbl.Put(pPage.PageId, item, maxAge);  //store the full item
            tbl.Put(-pPage.PageId, info, maxAge); //store just the pageInfo with reverse index
        }
            private _entry[] makeEntriesArray(int capacity)
            {
                var array = new _entry[capacity];

                for (var i = 0; i < array.Length; i++)
                {
                    array[i].DataPointer = PilePointer.Invalid;
                }
                return(array);
            }
Beispiel #3
0
 private set => SetProperty(ref _entry, value);
Beispiel #4
0
 private _entry[] makeEntriesArray(int capacity)
 {
   var array = new _entry[capacity];
   for(var i=0; i<array.Length; i++)
    array[i].DataPointer = PilePointer.Invalid;
   return array;
 }