コード例 #1
0
ファイル: CacheableQueue.cs プロジェクト: ts-data/RS317.Sharp
        public Cacheable pop()
        {
            Cacheable next = head.nextCacheable;

            if (next == head)
            {
                return(null);
            }

            next.unlinkCacheable();
            return(next);
        }
コード例 #2
0
ファイル: CacheableQueue.cs プロジェクト: ts-data/RS317.Sharp
        public void push(Cacheable item)
        {
            if (item.previousCacheable != null)
            {
                item.unlinkCacheable();
            }

            item.previousCacheable = head.previousCacheable;
            item.nextCacheable     = head;
            item.previousCacheable.nextCacheable = item;
            item.nextCacheable.previousCacheable = item;
        }
コード例 #3
0
ファイル: Cache.cs プロジェクト: ts-data/RS317.Sharp
        public void clear()
        {
            while (true)
            {
                Cacheable oldest = retrievedItems.pop();

                if (oldest == null)
                {
                    available = size;
                    return;
                }

                oldest.unlink();
                oldest.unlinkCacheable();
            }
        }
コード例 #4
0
ファイル: Cache.cs プロジェクト: ts-data/RS317.Sharp
        public void put(Cacheable item, long key)
        {
            if (available == 0)
            {
                Cacheable oldest = retrievedItems.pop();
                oldest.unlink();
                oldest.unlinkCacheable();

                if (oldest == empty)
                {
                    Cacheable secondOldest = retrievedItems.pop();
                    secondOldest.unlink();
                    secondOldest.unlinkCacheable();
                }
            }
            else
            {
                available--;
            }

            hashmap.put(key, item);
            retrievedItems.push(item);
            return;
        }