Exemplo n.º 1
0
        /// <summary>
        /// Load store state and data from persistent medium.
        /// </summary>
        void IPersistentCacheStorage.LoadStorageState()
        {
            try
            {
                lock (_itemDict.SyncRoot)
                {
                    _itemDict.Clear();
                    for (IEnumerator i = _internalStore.GetEnumerator(); i.MoveNext();)
                    {
                        MemArena arena = (MemArena)i.Current;
                        if (!arena.IsFree)
                        {
                            byte[]    data = arena.GetMemContents();
                            StoreItem item = StoreItem.FromBinary(data, CacheContext);

                            _itemDict.Add(item.Key, new MmfObjectPtr(arena.View, arena));
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Trace.error("MmfStorageProvider.IPersistentCacheStorage()", e.ToString());
            }
        }
Exemplo n.º 2
0
            public static MemArena Create()
            {
                var arena = new MemArena();

                arena.arenas = PtrBuffer.Create();
                arena.ptr    = (byte *)Marshal.AllocHGlobal(ARENA_BLOCK_SIZE);
                assert(arena.ptr == ALIGN_DOWN_PTR(arena.ptr, ARENA_ALIGNMENT));
                arena.end = arena.ptr + ARENA_BLOCK_SIZE;
                arena.arenas->Add(arena.ptr);
                return(arena);
            }
Exemplo n.º 3
0
 public void SetMemArena(object key, MemArena arenaTmp)
 {
     _itemDict[key] = arenaTmp;
 }
Exemplo n.º 4
0
 public MmfObjectPtr(View v, MemArena block)
 {
     View  = v;
     Arena = block;
 }