Example #1
0
        public Index(File file, string name, BiosParameterBlock bpb, UpperCase upCase)
        {
            _file = file;
            _name = name;
            _bpb = bpb;
            _isFileIndex = name == "$I30";

            _blockCache = new ObjectCache<long, IndexBlock>();

            _root = _file.GetStream(AttributeType.IndexRoot, _name).GetContent<IndexRoot>();
            _comparer = _root.GetCollator(upCase);

            using (Stream s = _file.OpenStream(AttributeType.IndexRoot, _name, FileAccess.Read))
            {
                byte[] buffer = Utilities.ReadFully(s, (int)s.Length);
                _rootNode = new IndexNode(WriteRootNodeToDisk, 0, this, true, buffer, IndexRoot.HeaderOffset);

                // Give the attribute some room to breathe, so long as it doesn't squeeze others out
                // BROKEN, BROKEN, BROKEN - how to figure this out?  Query at the point of adding entries to the root node?
                _rootNode.TotalSpaceAvailable += _file.MftRecordFreeSpace(AttributeType.IndexRoot, _name) - 100;
            }

            if (_file.StreamExists(AttributeType.IndexAllocation, _name))
            {
                _indexStream = _file.OpenStream(AttributeType.IndexAllocation, _name, FileAccess.ReadWrite);
            }

            if (_file.StreamExists(AttributeType.Bitmap, _name))
            {
                _indexBitmap = new Bitmap(_file.OpenStream(AttributeType.Bitmap, _name, FileAccess.ReadWrite), long.MaxValue);
            }
        }
 public ReflectionOnlyAssemblyLoader(ObjectCache cache, IEnumerable<string> assemblyLocation)
 {
     this._cache = cache;
     this._locations = assemblyLocation.ToArray();
     this._loadedAssemblies = new HashSet<Assembly>();
     AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve += this.OnFailedAssemblyResolve;
 }
 public FilterContext(ObjectCache cache, CompositionContainer container, FilterState state, params IAssetFilter[] filters)
 {
     this.Container = container;
     this.Cache = cache;
     this.State = state;
     this._filters = filters;
 }
 public ChannelAdvisorServicesFactory( string developerKey, string developerPassword, ObjectCache cache, TimeSpan slidingCacheExpiration )
 {
     this._developerPassword = developerPassword;
     this._developerKey = developerKey;
     this._cache = cache;
     this._slidingCacheExpiration = slidingCacheExpiration;
 }
Example #5
0
 public FilterContext(ObjectCache cache, CompositionContainer container, IAssetResolver assetResolver, FilterState state)
 {
     this.Container = container;
     this.Cache = cache;
     this.AssetResolver = assetResolver;
     this.State = state;
 }
        public CacheUnorderedNeuralVectorProvider(IUnorderedNeuralVectorsProvider baseProvider, ObjectCache cache = null)
        {
            Contract.Requires(baseProvider != null);

            BaseProvider = baseProvider;
            this.cache = cache ?? MemoryCache.Default;
        }
 public AssetOutputManager(IHtmlBuilder htmlBuilder, IEnumerable<IProcessor> processors, IAssetManagerSettings settings)
 {
     _htmlBuilder = htmlBuilder;
     _settings = settings;
     _processors = processors ?? new List<IProcessor>();
     _cache = AssetManager.Settings.CacheFactory.GetCache();
 }
Example #8
0
        public static void RegisterCacheInfrastructure(IKernel kernel, ObjectCache cache, ICacheKeyRegistrationService cacheKeyRegistrationService)
        {
            kernel.Bind<ICacheKeyGenerationService>().To<CacheKeyGenerationService>();
            kernel.Bind<ICacheKeyRegistrationService>().ToConstant(cacheKeyRegistrationService);

            kernel.Bind<ObjectCache>().ToConstant(cache);
        }
Example #9
0
        /// <summary>
        /// Adds the Cash-specific registrations to the Autofac container builder.
        /// </summary>
        /// <param name="builder">The Autofac <see cref="ContainerBuilder"/></param>
        /// <param name="cacheProvider">The <see cref="ObjectCache"/> instance to use as a cache provider.</param>
        /// <param name="registrationService">The <see cref="ICacheKeyRegistrationService"/> that contains the registrations for this solution. </param>
        public static void RegisterCacheInfrastructure(ContainerBuilder builder, ObjectCache cacheProvider, ICacheKeyRegistrationService registrationService)
        {
            builder.Register(x => cacheProvider).As<ObjectCache>().SingleInstance();
            builder.RegisterType<CacheKeyGenerationService>().As<ICacheKeyGenerationService>().SingleInstance();
            builder.Register(x => registrationService).As<ICacheKeyRegistrationService>().SingleInstance();

            builder.Register(c => new CachingInterceptor(c.Resolve<ObjectCache>(), c.Resolve<ICacheKeyGenerationService>())).InstancePerDependency();
        }
Example #10
0
 public Template(CompositionContainer container)
 {
     this._cache = new MemoryCache("TemplateCache");
     this._fileResolver = new FileResolver();
     this._resolvers = new List<IAssetUriResolver>();
     this._resolvers.Add(this._fileResolver);
     this._resolvers.Add(new MsdnResolver());
     this._container = container;
 }
		/// <summary>
		/// full constructor
		/// </summary>
		/// <param name="region"></param>
		/// <param name="properties">cache configuration properties</param>
		/// <remarks>
		/// There are two (2) configurable parameters:
		/// <ul>
		///		<li>expiration = number of seconds to wait before expiring each item</li>
		///		<li>priority = a numeric cost of expiring each item, where 1 is a low cost, 5 is the highest, and 3 is normal. Only values 1 through 5 are valid.</li>
		/// </ul>
		/// All parameters are optional. The defaults are an expiration of 300 seconds and the default priority of 3.
		/// </remarks>
		/// <exception cref="IndexOutOfRangeException">The "priority" property is not between 1 and 5</exception>
		/// <exception cref="ArgumentException">The "expiration" property could not be parsed.</exception>
		public RtMemoryCache(string region, IDictionary<string,string> properties)
		{
			this.region = region;
			cache = MemoryCache.Default;
			Configure(properties);

			rootCacheKey = GenerateRootCacheKey();
			StoreRootCacheKey();
		}
Example #12
0
 public Template(IFileProvider fileProvider)
 {
     this._cache = new MemoryCache("TemplateCache");
     this._fileProvider = fileProvider;
     this._fileResolver = new FileResolver();
     this._resolvers = new List<IAssetUriResolver>();
     this._resolvers.Add(this._fileResolver);
     this._resolvers.Add(new MsdnResolver());
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="InternalSegmentStream"/> class.
 /// </summary>
 /// <param name="objectCache">The object cache.</param>
 /// <param name="key">The key.</param>
 /// <param name="segmentSize">Size of the segment.</param>
 /// <param name="region">The region.</param>
 public InternalSegmentStream(ObjectCache objectCache, string key, int segmentSize, string region)
 {
     _segmentSize = segmentSize;
     _cache = objectCache;
     _regionKey = new RegionKey { Key = key, Region = region };
     _canRead = true;
     _canWrite = true;
     _canSeek = true;
 }
        public CSharpCodeChecker(ObjectCache compiledCustomCheckersCache)
        {
            if (compiledCustomCheckersCache == null)
            {
                throw new ArgumentNullException(nameof(compiledCustomCheckersCache));
            }

            this.compiledCustomCheckersCache = compiledCustomCheckersCache;
        }
Example #15
0
        /// <summary>
        /// Creates a new instance from a stream.
        /// </summary>
        /// <param name="stream">The stream containing the NTFS file system</param>
        public NtfsFileSystem(Stream stream)
            : base(new NtfsOptions())
        {
            _context = new NtfsContext();
            _context.RawStream = stream;
            _context.Options = NtfsOptions;

            _context.GetFileByIndex = GetFile;
            _context.GetFileByRef = GetFile;
            _context.GetDirectoryByRef = GetDirectory;
            _context.GetDirectoryByIndex = GetDirectory;
            _context.AllocateFile = AllocateFile;
            _context.ForgetFile = ForgetFile;
            _context.ReadOnly = !stream.CanWrite;

            _fileCache = new ObjectCache<long, File>();

            stream.Position = 0;
            byte[] bytes = Utilities.ReadFully(stream, 512);


            _context.BiosParameterBlock = BiosParameterBlock.FromBytes(bytes, 0);

            // Bootstrap the Master File Table
            _context.Mft = new MasterFileTable(_context);
            File mftFile = new File(_context, _context.Mft.GetBootstrapRecord());
            _fileCache[MasterFileTable.MftIndex] = mftFile;
            _context.Mft.Initialize(mftFile);

            // Initialize access to the other well-known metadata files
            _context.ClusterBitmap = new ClusterBitmap(GetFile(MasterFileTable.BitmapIndex));
            _context.AttributeDefinitions = new AttributeDefinitions(GetFile(MasterFileTable.AttrDefIndex));
            _context.UpperCase = new UpperCase(GetFile(MasterFileTable.UpCaseIndex));
            _context.SecurityDescriptors = new SecurityDescriptors(GetFile(MasterFileTable.SecureIndex));
            _context.ObjectIds = new ObjectIds(GetFile(GetDirectoryEntry(@"$Extend\$ObjId").Reference));
            _context.ReparsePoints = new ReparsePoints(GetFile(GetDirectoryEntry(@"$Extend\$Reparse").Reference));
            _context.Quotas = new Quotas(GetFile(GetDirectoryEntry(@"$Extend\$Quota").Reference));

            File volumeInfoFile = GetFile(MasterFileTable.VolumeIndex);
            _volumeInfo = volumeInfoFile.GetStream(AttributeType.VolumeInformation, null).GetContent<VolumeInformation>();

#if false
            byte[] buffer = new byte[1024];
            for (int i = 0; i < buffer.Length; ++i)
            {
                buffer[i] = 0xFF;
            }

            using (Stream s = OpenFile("$LogFile", FileMode.Open, FileAccess.ReadWrite))
            {
                while (s.Position != s.Length)
                {
                    s.Write(buffer, 0, (int)Math.Min(buffer.Length, s.Length - s.Position));
                }
            }
#endif
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="ObjectCacheAmbientContextManager" /> class.
        /// </summary>
        /// <param name="cache">The cache.</param>
        /// <exception cref="System.ArgumentNullException">Thrown when <paramref name="cache"/> is null.</exception>
        public ObjectCacheAmbientContextManager(ObjectCache cache)
        {
            if (cache == null)
            {
                throw new ArgumentNullException("cache");
            }

            _Cache = cache;
        }
Example #17
0
 public DocGenerator()
 {
     this._assemblyPaths = new List<string>();
     this._filters = new List<IAssetFilter>();
     this._enrichers = new List<IEnricher>();
     this.Enrichers.Add(new AttributeDataEnricher());
     this.AssetFilters.Add(new EnumMetadataFilter());
     this._cache = new MemoryCache("DocGeneratorCache");
 }
Example #18
0
 public AutoChartingService(ILogger logger,
                            IConfigurationService configurationService,
                            ITradeIdeasStorage tradeIdeasStorage,
                            ObjectCache cache)
 {
     _logger = logger;
     _cache = cache;
     _configurationService = configurationService;
     _tradeIdeasStorage = tradeIdeasStorage;
 }
Example #19
0
		public CachedLifetime(ObjectCache cache, CacheItemPolicy policy)
		{
			if (cache == null)
				throw new ArgumentNullException("cache");
			if (policy == null)
				throw new ArgumentNullException("policy");

			_cache = cache;
			_cachePolicy = policy;
		}
 public AuthorizationService(IRepository<User> users, IRepository<Activity> activities, 
     IRepository<Permission> permissions, IRepository<Group> groups,
     ObjectCache cache)
 {
     _users = users;
     _activities = activities;
     _permissions = permissions;
     _groups = groups;
     _cache = cache;
 }
Example #21
0
        public RoutineManager(ITransaction transaction)
        {
            if (transaction == null)
                throw new ArgumentNullException("transaction");

            routinesCache = new ObjectCache<IRoutine>();

            this.transaction = transaction;
            this.transaction.Context.RouteImmediate<TransactionEvent>(OnTransactionEnd, e => e.EventType != TransactionEventType.Begin);
        }
Example #22
0
        void Reload()
        {
            MemoryStream ms = new MemoryStream();

            Cache.Save(ms);
            ms.Position = 0;

            Cache = new ObjectCache();
            Cache.Load(ms);
        }
Example #23
0
		public RssParserService(ILogger logger,
								IConfigurationService configurationService,
								INewsStorage newsStorage,
								ObjectCache cache)
		{
			_logger = logger;
			_cache = cache;
			_configurationService = configurationService;
			_newsStorage = newsStorage;
		}
Example #24
0
 public ProcessingContext(ObjectCache cache, CompositionContainer container, IEnumerable<IAssetFilter> filters, IAssemblyLoader assemblyLoader, IAssetResolver assetResolver, XElement element, HashSet<AssetIdentifier> references, int phase)
 {
     this._filters = filters.ToArray();
     this.AssetResolver = assetResolver;
     this.Element = element;
     this._references = references;
     Container = container;
     this.Phase = phase;
     this.Cache = cache;
     this.AssemblyLoader = assemblyLoader;
 }
 public CacheEntryRemovedArguments(ObjectCache source, CacheEntryRemovedReason reason, CacheItem cacheItem) {
     if (source == null) {
         throw new ArgumentNullException("source");
     }
     if (cacheItem == null) {
         throw new ArgumentNullException("cacheItem");
     }
     _source = source;
     _reason = reason;
     _cacheItem = cacheItem;
 }
Example #26
0
        public File(INtfsContext context, FileRecord baseRecord)
        {
            _context = context;
            _mft = _context.Mft;
            _records = new List<FileRecord>();
            _records.Add(baseRecord);
            _indexCache = new ObjectCache<string, Index>();
            _attributes = new List<NtfsAttribute>();

            LoadAttributes();
        }
		public CacheEntryRemovedArguments (ObjectCache source, CacheEntryRemovedReason reason, CacheItem cacheItem)
		{
			if (source == null)
				throw new ArgumentNullException ("source");

			if (cacheItem == null)
				throw new ArgumentNullException ("cacheItem");
			
			this.CacheItem = cacheItem;
			this.RemovedReason = reason;
			this.Source = source;
		}
        public void GetByIDTest()
        {
            ObjectCache target = new ObjectCache(_DOFactory);

            Assert.Null( target.GetByID(1));

            //GetByID with a type argument should return an object and added it to the cache
            SaleDO tempSale = target.GetByID<SaleDO>(1) as SaleDO;
            Assert.NotNull(tempSale);

            Assert.NotNull(target.GetByID(1));
        }
 public CacheEntryUpdateArguments(ObjectCache source, CacheEntryRemovedReason reason, String key, String regionName) {
     if (source == null) {
         throw new ArgumentNullException("source");
     }
     if (key == null) {
         throw new ArgumentNullException("key");
     }
     _source = source;
     _reason = reason;
     _key = key;
     _regionName = regionName;
 }
 public static DefaultCacheProvider GetInstance()
 {
     lock (locker)
     {
         if (instance == null)
         {
             instance = new DefaultCacheProvider();
             cache = MemoryCache.Default;
         }
     }
     return instance;
 }
Example #31
0
 public static IAlteredPipeline <TRequest, TResponse> WithAlteredCache <TRequest, TResponse>(this IAlteredPipeline <TRequest, TResponse> f, Func <TRequest, string> getKey, CacheItemPolicy cacheItemPolicy = null, ObjectCache cache = null, AsyncLock cacheLock = null)
     where TResponse : class
 {
     cache           = cache ?? MemoryCache.Default;
     cacheItemPolicy = cacheItemPolicy ?? DefaultCacheItemPolicy;
     cacheLock       = cacheLock ?? new AsyncLock();
     return(new AlteredCache <TRequest, TResponse>(f, getKey, cacheItemPolicy, cache, cacheLock));
 }
Example #32
0
 public AlteredCache(IAlteredPipeline <TRequest, TResponse> f, Func <TRequest, string> getKey, CacheItemPolicy cacheItemPolicy, ObjectCache cache, AsyncLock cacheLock) : base(async(request) =>
 {
     var key = $"{f.GetType().GUID}:{getKey(request)}";
     using (await cacheLock.LockAsync())
     {
         var response = cache.Get(key) as TResponse;
         if (response == null)
         {
             response = await f.Execute(request);
             cache.AddOrGetExisting(key, response, cacheItemPolicy);
         }
         return(response);
     }
 })
 {
 }
Example #33
0
        private static object GetOneToOneChild <T>(this SQLiteConnection conn, T element,
                                                   PropertyInfo relationshipProperty,
                                                   bool recursive, ObjectCache objectCache)
        {
            var          type = element.GetType();
            EnclosedType enclosedType;
            var          entityType = relationshipProperty.GetEntityType(out enclosedType);

            Assert(enclosedType == EnclosedType.None, type, relationshipProperty, "OneToOne relationship cannot be of type List or Array");

            var currentEntityPrimaryKeyProperty = type.GetPrimaryKey();
            var otherEntityPrimaryKeyProperty   = entityType.GetPrimaryKey();

            Assert(currentEntityPrimaryKeyProperty != null || otherEntityPrimaryKeyProperty != null, type, relationshipProperty,
                   "At least one entity in a OneToOne relationship must have Primary Key");

            var currentEntityForeignKeyProperty = type.GetForeignKeyProperty(relationshipProperty);
            var otherEntityForeignKeyProperty   = type.GetForeignKeyProperty(relationshipProperty, inverse: true);

            Assert(currentEntityForeignKeyProperty != null || otherEntityForeignKeyProperty != null, type, relationshipProperty,
                   "At least one entity in a OneToOne relationship must have Foreign Key");

            var hasForeignKey        = otherEntityPrimaryKeyProperty != null && currentEntityForeignKeyProperty != null;
            var hasInverseForeignKey = currentEntityPrimaryKeyProperty != null && otherEntityForeignKeyProperty != null;

            Assert(hasForeignKey || hasInverseForeignKey, type, relationshipProperty,
                   "Missing either ForeignKey or PrimaryKey for a complete OneToOne relationship");

            var tableMapping = conn.GetMapping(entityType);

            Assert(tableMapping != null, type, relationshipProperty, "There's no mapping table for OneToOne relationship");

            var inverseProperty = type.GetInverseProperty(relationshipProperty);

            object value             = null;
            var    isLoadedFromCache = false;

            if (hasForeignKey)
            {
                var foreignKeyValue = currentEntityForeignKeyProperty.GetValue(element, null);
                if (foreignKeyValue != null)
                {
                    // Try to load from cache when possible
                    if (recursive)
                    {
                        value = GetObjectFromCache(entityType, foreignKeyValue, objectCache);
                    }
                    if (value == null)
                    {
                        value = conn.Find(foreignKeyValue, tableMapping);
                    }
                    else
                    {
                        isLoadedFromCache = true;
                    }
                }
            }
            else
            {
                var primaryKeyValue = currentEntityPrimaryKeyProperty.GetValue(element, null);
                if (primaryKeyValue != null)
                {
                    var query = string.Format("select * from [{0}] where [{1}] = ? limit 1", entityType.GetTableName(),
                                              otherEntityForeignKeyProperty.GetColumnName());
                    value = conn.Query(tableMapping, query, primaryKeyValue).FirstOrDefault();
                    // Its a OneToOne, take only the first
                }

                // Try to replace the loaded entity with the same object from the cache whenever possible
                value = recursive ? ReplaceWithCacheObjectIfPossible(value, otherEntityPrimaryKeyProperty, objectCache, out isLoadedFromCache) : value;
            }

            relationshipProperty.SetValue(element, value, null);

            if (value != null && inverseProperty != null)
            {
                inverseProperty.SetValue(value, element, null);
            }

            if (value != null && !isLoadedFromCache && recursive)
            {
                SaveObjectToCache(value, otherEntityPrimaryKeyProperty.GetValue(value, null), objectCache);
                conn.GetChildrenRecursive(value, true, recursive, objectCache);
            }

            return(value);
        }
Example #34
0
        /// <summary>
        /// Get the cache footprint in XML.
        /// </summary>
        /// <param name="cache">The cache.</param>
        /// <param name="expanded">Whether to show details of each entity item.</param>
        /// <param name="requestUrl">The request URL.</param>
        /// <returns></returns>
        public static XmlDocument GetCacheFootprintXml(this ObjectCache cache, bool expanded, Uri requestUrl)
        {
            var alternateLink = new Uri(requestUrl.GetLeftPart(UriPartial.Path));

            var doc            = new XmlDocument();
            var rootElement    = doc.CreateElement("CacheFootprint");
            var entityElements = new List <XmlElement>();
            var footprint      = GetCacheFootprint(cache, alternateLink);

            foreach (var entityType in footprint)
            {
                var entityElement = doc.CreateElement("Entity");
                entityElement.SetAttribute("Name", entityType.Name);
                entityElement.SetAttribute("Count", entityType.GetCount().ToString());
                entityElement.SetAttribute("Size", entityType.GetSize().ToString());

                if (expanded)
                {
                    foreach (var item in entityType.Items)
                    {
                        var itemElement = doc.CreateElement("Item");
                        itemElement.SetAttribute("LogicalName", item.Entity.LogicalName);
                        itemElement.SetAttribute("Name", item.Entity.GetAttributeValueOrDefault("adx_name", String.Empty));
                        itemElement.SetAttribute("Id", item.Entity.Id.ToString());

                        var cacheElement = doc.CreateElement("Cache");
                        cacheElement.SetAttribute("Id", item.CacheItemKey);
                        cacheElement.SetAttribute("Type", item.CacheItemType.ToString());
                        cacheElement.SetAttribute("Link", item.Link.ToString());
                        cacheElement.SetAttribute("Size", GetEntitySizeInMemory(item.Entity).ToString());

                        itemElement.AppendChild(cacheElement);
                        entityElement.AppendChild(itemElement);
                    }
                }

                entityElements.Add(entityElement);
            }

            // Sort the entities by descending size
            entityElements = entityElements.OrderByDescending(el => int.Parse(el.GetAttribute("Size"))).ToList();

            var entitiesElement = doc.CreateElement("Entities");

            foreach (var entityElement in entityElements)
            {
                entitiesElement.AppendChild(entityElement);
            }

            if (!expanded)
            {
                // Add link to the Expanded view with entity record details
                var query = System.Web.HttpUtility.ParseQueryString(requestUrl.Query);
                query[Web.Handlers.CacheFeedHandler.QueryKeys.Expanded] = Boolean.TrueString;
                var uriBuilder = new UriBuilder(requestUrl.ToString())
                {
                    Query = query.ToString()
                };
                var expandedView = doc.CreateElement("expandedView");
                expandedView.InnerText = uriBuilder.ToString();
                rootElement.AppendChild(expandedView);
            }
            rootElement.AppendChild(entitiesElement);
            doc.AppendChild(rootElement);
            return(doc);
        }
Example #35
0
 /// <summary>
 /// 初始化一个<see cref="RuntimeMemoryCache"/>类型的新实例
 /// </summary>
 public RuntimeMemoryCache(string region)
 {
     _region = region;
     _cache  = MemoryCache.Default;
 }
Example #36
0
 public static SortedList <long, TKey> History <TKey, TValue>(this ObjectCache <TKey, TValue> cache) where TKey : IEquatable <TKey> where TValue : class
 {
     return((SortedList <long, TKey>)GetField(cache, "accessHistory").GetValue(cache));
 }
Example #37
0
        private static void GetChildrenRecursive(this SQLiteConnection conn, object element, bool onlyCascadeChildren, bool recursive, ObjectCache objectCache = null)
        {
            objectCache = objectCache ?? new ObjectCache();

            foreach (var relationshipProperty in element.GetType().GetRelationshipProperties())
            {
                var relationshipAttribute = relationshipProperty.GetAttribute <RelationshipAttribute>();
                if (!onlyCascadeChildren || relationshipAttribute.IsCascadeRead)
                {
                    conn.GetChildRecursive(element, relationshipProperty, recursive, objectCache);
                }
                else if (relationshipAttribute is TextBlobAttribute)
                {
                    conn.GetChildRecursive(element, relationshipProperty, false, objectCache);
                }
            }
        }
Example #38
0
        public override DbgDotNetValueNode[] GetChildren(LanguageValueNodeFactory valueNodeFactory, DbgEvaluationInfo evalInfo, ulong index, int count, DbgValueNodeEvaluationOptions options)
        {
            var res = count == 0 ? Array.Empty <DbgDotNetValueNode>() : new DbgDotNetValueNode[count];
            DbgDotNetValueResult newValue = default;

            try {
                var output      = ObjectCache.AllocDotNetTextOutput();
                var elementType = valueInfo.Value.Type.GetElementType();
                var castType    = NeedCast(slotType, valueInfo.Value.Type) ? valueInfo.Value.Type : null;
                for (int i = 0; i < res.Length; i++)
                {
                    evalInfo.CancellationToken.ThrowIfCancellationRequested();

                    string expression;
                    uint   arrayIndex = (uint)index + (uint)i;
                    newValue = valueInfo.Value.GetArrayElementAt(arrayIndex);

                    if (dimensionInfos.Length == 1)
                    {
                        int baseIndex = (int)arrayIndex + dimensionInfos[0].BaseIndex;
                        expression = valueNodeFactory.GetExpression(valueInfo.Expression, baseIndex, castType, addParens);
                        owner.FormatArrayName(output, baseIndex);
                    }
                    else
                    {
                        uint indexLeft = arrayIndex;
                        for (int j = dimensionInfos.Length - 1; j >= 0; j--)
                        {
                            indexes[j] = (int)(indexLeft % dimensionInfos[j].Length) + dimensionInfos[j].BaseIndex;
                            indexLeft  = indexLeft / dimensionInfos[j].Length;
                        }
                        expression = valueNodeFactory.GetExpression(valueInfo.Expression, indexes, castType, addParens);
                        owner.FormatArrayName(output, indexes);
                    }

                    var name = output.CreateAndReset();
                    DbgDotNetValueNode newNode;
                    if (newValue.HasError)
                    {
                        newNode = valueNodeFactory.CreateError(evalInfo, name, newValue.ErrorMessage, expression, false);
                    }
                    else
                    {
                        newNode = null;
                        if (CSharpDynamicPropertyHelper.IsCSharpDynamicProperty(newValue.Value.Type))
                        {
                            var info = CSharpDynamicPropertyHelper.GetRealValue(evalInfo, newValue.Value);
                            if (info.name != null)
                            {
                                newValue.Value.Dispose();
                                name       = new DbgDotNetText(new DbgDotNetTextPart(BoxedTextColor.DebugViewPropertyName, info.name));
                                expression = valueNodeFactory.GetFieldExpression(expression, info.valueField.Name, null, false);
                                newNode    = valueNodeFactory.Create(evalInfo, name, info.value, null, options, expression, PredefinedDbgValueNodeImageNames.DynamicViewElement, true, false, info.valueField.FieldType, false);
                            }
                        }
                        if (newNode == null)
                        {
                            newNode = valueNodeFactory.Create(evalInfo, name, newValue.Value, null, options, expression, PredefinedDbgValueNodeImageNames.ArrayElement, false, false, elementType, false);
                        }
                    }
                    newValue = default;
                    res[i]   = newNode;
                }
                ObjectCache.Free(ref output);
            }
            catch {
                evalInfo.Context.Process.DbgManager.Close(res.Where(a => a != null));
                newValue.Value?.Dispose();
                throw;
            }
            return(res);
        }
        TypeState CreateTypeStateCore(DmdType type)
        {
            var typeExpression = GetTypeExpression(type);

            if (HasNoChildren(type) || type.IsFunctionPointer)
            {
                return(new TypeState(type, typeExpression));
            }

            MemberValueNodeInfoCollection instanceMembers, staticMembers;

            TupleField[] tupleFields;

            Debug.Assert(!type.IsByRef);
            if (type.TypeSignatureKind == DmdTypeSignatureKind.Type || type.TypeSignatureKind == DmdTypeSignatureKind.GenericInstance)
            {
                tupleFields = TryCreateTupleFields(type) ?? Array.Empty <TupleField>();

                var  instanceMembersList  = new List <MemberValueNodeInfo>();
                var  staticMembersList    = new List <MemberValueNodeInfo>();
                bool instanceHasHideRoot  = false;
                bool staticHasHideRoot    = false;
                bool instanceHasShowNever = false;
                bool staticHasShowNever   = false;

                byte    inheritanceLevel;
                DmdType currentType;

                inheritanceLevel = 0;
                currentType      = type;
                foreach (var field in type.Fields)
                {
                    var declType = field.DeclaringType;
                    while (declType != currentType)
                    {
                        Debug2.Assert(!(currentType.BaseType is null));
                        currentType = currentType.BaseType;
                        if (inheritanceLevel != byte.MaxValue)
                        {
                            inheritanceLevel++;
                        }
                    }

                    var nodeInfo = new MemberValueNodeInfo(field, inheritanceLevel);
                    if (field.IsStatic)
                    {
                        staticHasHideRoot  |= nodeInfo.HasDebuggerBrowsableState_RootHidden;
                        staticHasShowNever |= nodeInfo.HasDebuggerBrowsableState_Never;
                        staticMembersList.Add(nodeInfo);
                    }
                    else
                    {
                        instanceHasHideRoot  |= nodeInfo.HasDebuggerBrowsableState_RootHidden;
                        instanceHasShowNever |= nodeInfo.HasDebuggerBrowsableState_Never;
                        instanceMembersList.Add(nodeInfo);
                    }
                }

                inheritanceLevel = 0;
                currentType      = type;
                foreach (var property in type.Properties)
                {
                    if (property.GetMethodSignature().GetParameterTypes().Count != 0)
                    {
                        continue;
                    }
                    var declType = property.DeclaringType;
                    while (declType != currentType)
                    {
                        Debug2.Assert(!(currentType.BaseType is null));
                        currentType = currentType.BaseType;
                        if (inheritanceLevel != byte.MaxValue)
                        {
                            inheritanceLevel++;
                        }
                    }
                    var getter = property.GetGetMethod(DmdGetAccessorOptions.All);
                    if (getter is null || getter.GetMethodSignature().GetParameterTypes().Count != 0)
                    {
                        continue;
                    }
                    var nodeInfo = new MemberValueNodeInfo(property, inheritanceLevel);
                    if (getter.IsStatic)
                    {
                        staticHasHideRoot  |= nodeInfo.HasDebuggerBrowsableState_RootHidden;
                        staticHasShowNever |= nodeInfo.HasDebuggerBrowsableState_Never;
                        staticMembersList.Add(nodeInfo);
                    }
                    else
                    {
                        instanceHasHideRoot  |= nodeInfo.HasDebuggerBrowsableState_RootHidden;
                        instanceHasShowNever |= nodeInfo.HasDebuggerBrowsableState_Never;
                        instanceMembersList.Add(nodeInfo);
                    }
                }

                var instanceMembersArray = InitializeOverloadedMembers(instanceMembersList.ToArray());
                var staticMembersArray   = InitializeOverloadedMembers(staticMembersList.ToArray());

                instanceMembers = instanceMembersList.Count == 0 ? MemberValueNodeInfoCollection.Empty : new MemberValueNodeInfoCollection(instanceMembersArray, instanceHasHideRoot, instanceHasShowNever);
                staticMembers   = staticMembersList.Count == 0 ? MemberValueNodeInfoCollection.Empty : new MemberValueNodeInfoCollection(staticMembersArray, staticHasHideRoot, staticHasShowNever);

                Array.Sort(instanceMembers.Members, MemberValueNodeInfoEqualityComparer.Instance);
                Array.Sort(staticMembers.Members, MemberValueNodeInfoEqualityComparer.Instance);
                var output = ObjectCache.AllocDotNetTextOutput();
                UpdateNames(instanceMembers.Members, output);
                UpdateNames(staticMembers.Members, output);
                ObjectCache.Free(ref output);
            }
            else
            {
                staticMembers = instanceMembers = MemberValueNodeInfoCollection.Empty;
                tupleFields   = Array.Empty <TupleField>();
            }

            return(new TypeState(type, typeExpression, instanceMembers, staticMembers, tupleFields));
        }
Example #40
0
 /// <summary>
 /// Initializes a new instance of the <see cref="TradeTickSerializer"/> class.
 /// </summary>
 public TradeTickSerializer()
 {
     this.cachedSymbols = new ObjectCache <string, Symbol>(Symbol.FromString);
 }
Example #41
0
        ///<summary>
        ///Updates SNO Cache Values
        ///</summary>
        public virtual bool UpdateData(DiaObject thisObj, int raguid)
        {
            bool failureDuringUpdate = false;

            if (InternalName == null)
            {
                try
                {
                    InternalName = thisObj.Name;
                }
                catch
                {
                    Logger.Write(LogLevel.Cache, "Failure to get internal name on object, SNO {0}", SNOID);

                    return(false);
                }
            }

            if (!Actortype.HasValue)
            {
                #region ActorType
                try
                {
                    Actortype = thisObj.ActorType;
                }
                catch
                {
                    Logger.Write(LogLevel.Cache, "Failure to get actorType for object, SNO: {0}", SNOID);

                    return(false);
                }
                #endregion
            }

            //Ignored actor types..
            if (BlacklistCache.IgnoredActorTypes.Contains(Actortype.Value))            //||!LootBehaviorEnabled&&this.Actortype.Value==ActorType.Item)
            {
                BlacklistCache.IgnoreThisObject(this, raguid);
                return(false);
            }

            if (!targetType.HasValue)
            {
                #region EvaluateTargetType
                try
                {
                    //Evaluate Target Type..
                    // See if it's an avoidance first from the SNO
                    if (IsAvoidance || IsObstacle)
                    {
                        targetType = TargetType.None;

                        if (IsAvoidance)
                        {
                            if (IsProjectileAvoidance)
                            {
                                Obstacletype = ObstacleType.MovingAvoidance;
                            }
                            else
                            {
                                Obstacletype = ObstacleType.StaticAvoidance;
                            }

                            AvoidanceType AT = AvoidanceCache.FindAvoidanceUsingSNOID(SNOID);

                            //Check if avoidance is enabled or if the avoidance type is set to 0
                            if (!Bot.Settings.Avoidance.AttemptAvoidanceMovements || AT != AvoidanceType.None && AvoidanceCache.IgnoringAvoidanceType(AT))
                            {
                                BlacklistCache.AddObjectToBlacklist(raguid, BlacklistType.Temporary);
                                return(false);
                            }

                            // Avoidance isn't disabled, so set this object type to avoidance
                            targetType = TargetType.Avoidance;
                        }
                        else
                        {
                            Obstacletype = ObstacleType.ServerObject;
                        }
                    }
                    else
                    {
                        // Calculate the object type of this object
                        if (Actortype.Value == ActorType.Monster ||
                            CacheIDLookup.hashActorSNOForceTargetUnit.Contains(SNOID))
                        {
                            targetType   = TargetType.Unit;
                            Obstacletype = ObstacleType.Monster;

                            if (CacheIDLookup.hashActorSNOForceTargetUnit.Contains(SNOID))
                            {
                                //Fill in monster data?
                                Actortype = ActorType.Monster;
                            }
                        }
                        else if (Actortype.Value == ActorType.Item ||
                                 CacheIDLookup.hashForceSNOToItemList.Contains(SNOID))
                        {
                            string testname = InternalName.ToLower();
                            //Check if this item is gold/globe..
                            if (testname.StartsWith("gold"))
                            {
                                targetType = TargetType.Gold;
                            }
                            else if (testname.StartsWith("healthglobe"))
                            {
                                targetType = TargetType.Globe;
                            }
                            else if (testname.StartsWith("console_powerglobe"))
                            {
                                targetType = TargetType.PowerGlobe;
                            }
                            else
                            {
                                targetType = TargetType.Item;
                            }
                            //Gold/Globe?
                        }
                        else if (Actortype.Value == ActorType.Gizmo)
                        {
                            GizmoType thisGizmoType;
                            try
                            {
                                thisGizmoType = thisObj.ActorInfo.GizmoType;
                            }
                            catch
                            {
                                Logger.Write(LogLevel.Cache, "Failure to get actor Gizmo Type!");
                                return(false);
                            }

                            if (thisGizmoType == GizmoType.DestroyableObject || thisGizmoType == GizmoType.BreakableChest)
                            {
                                targetType = TargetType.Destructible;
                            }
                            else if (thisGizmoType == GizmoType.PowerUp || thisGizmoType == GizmoType.HealingWell || thisGizmoType == GizmoType.PoolOfReflection)
                            {
                                targetType = TargetType.Shrine;
                            }
                            else if (thisGizmoType == GizmoType.Chest)
                            {
                                targetType = TargetType.Container;
                            }
                            else if (thisGizmoType == GizmoType.BreakableDoor)
                            {
                                targetType = TargetType.Barricade;
                            }
                            else if (thisGizmoType == GizmoType.Door)
                            {
                                targetType = TargetType.Door;
                            }
                            else if (thisGizmoType == GizmoType.Waypoint || thisGizmoType == GizmoType.Portal || thisGizmoType == GizmoType.DungeonPortal || thisGizmoType == GizmoType.BossPortal)
                            {                            //Special Interactive Object -- Add to special cache!
                                targetType = TargetType.ServerInteractable;
                            }
                            else if (thisGizmoType == GizmoType.Switch)
                            {
                                targetType = TargetType.CursedShrine;
                            }
                            else
                            {                            //All other gizmos should be ignored!
                                BlacklistCache.IgnoreThisObject(this, raguid);
                                return(false);
                            }

                            if (targetType.HasValue)
                            {
                                if (targetType.Value == TargetType.Destructible || targetType.Value == TargetType.Barricade || targetType.Value == TargetType.Door)
                                {
                                    Obstacletype = ObstacleType.Destructable;
                                }
                                else if (targetType.Value == TargetType.Shrine || IsChestContainer)
                                {
                                    Obstacletype = ObstacleType.ServerObject;
                                }
                            }

                            if (!Gizmotype.HasValue)
                            {
                                Gizmotype = thisGizmoType;
                            }
                        }
                        else if (CacheIDLookup.hashSNOInteractWhitelist.Contains(SNOID))
                        {
                            targetType = TargetType.Interactable;
                        }
                        else if (Actortype.Value == ActorType.ServerProp)
                        {
                            string TestString = InternalName.ToLower();
                            //Server props with Base in name are the destructibles "remains" which is considered an obstacle!
                            if (TestString.Contains("base") || TestString.Contains("fence"))
                            {
                                //Add this to the obstacle navigation cache
                                if (!IsObstacle)
                                {
                                    CacheIDLookup.hashSNONavigationObstacles.Add(SNOID);
                                }

                                Obstacletype = ObstacleType.ServerObject;

                                //Use unknown since we lookup SNO ID for server prop related objects.
                                targetType = TargetType.None;
                            }
                            else if (TestString.StartsWith("monsteraffix_"))
                            {
                                AvoidanceType T = AvoidanceCache.FindAvoidanceUsingName(TestString);
                                if (T == AvoidanceType.Wall)
                                {
                                    //Add this to the obstacle navigation cache
                                    if (!IsObstacle)
                                    {
                                        CacheIDLookup.hashSNONavigationObstacles.Add(SNOID);
                                    }

                                    Obstacletype = ObstacleType.ServerObject;

                                    //Use unknown since we lookup SNO ID for server prop related objects.
                                    targetType = TargetType.None;
                                }
                                //else if (Bot.AvoidancesHealth.ContainsKey(T))
                                //{
                                //	 Logger.DBLog.InfoFormat("Found Avoidance not recongized by SNO! Name {0} SNO {1}", TestString, this.SNOID);
                                //	 CacheIDLookup.hashAvoidanceSNOList.Add(this.SNOID);
                                //	 this.targetType=TargetType.Avoidance;
                                //}
                                else
                                {
                                    //Blacklist all other monster affixes
                                    BlacklistCache.IgnoreThisObject(this, raguid);
                                    return(false);
                                }
                            }
                            else
                            {
                                BlacklistCache.IgnoreThisObject(this, raguid);
                                return(false);
                            }
                        }
                        else
                        {                        //Misc?? Ignore it!
                            BlacklistCache.IgnoreThisObject(this, raguid);
                            return(false);
                        }
                    }
                }
                catch
                {
                    Logger.Write(LogLevel.Cache, "Failure to get actorType for object, SNO: {0}", SNOID);
                    return(false);
                }
                #endregion
            }


            if (!Obstacletype.HasValue)
            {
                Obstacletype = ObstacleType.None;
            }


            if (ObjectCache.CheckTargetTypeFlag(targetType.Value, TargetType.Unit))
            {
                SNORecordMonster monsterInfo;
                try
                {
                    monsterInfo = thisObj.CommonData.MonsterInfo;
                }
                catch
                {
                    Logger.Write(LogLevel.Cache, "Safely Handled MonsterInfo Exception for Object {0}", InternalName);
                    return(false);
                }


                if (!Monstertype.HasValue || ShouldRefreshMonsterType)
                {
                    #region MonsterType
                    try
                    {
                        Monstertype = monsterInfo.MonsterType;
                    }
                    catch
                    {
                        Logger.Write(LogLevel.Cache, "Failure to get MonsterType for SNO: {0}", SNOID);

                        failureDuringUpdate = true;
                    }
                    #endregion
                }
                if (!Monstersize.HasValue)
                {
                    #region MonsterSize
                    try
                    {
                        Monstersize = monsterInfo.MonsterSize;
                    }
                    catch
                    {
                        Logger.Write(LogLevel.Cache, "Failure to get MonsterSize for SNO: {0}", SNOID);

                        failureDuringUpdate = true;
                    }
                    #endregion
                }
            }


            if (Actortype.HasValue && targetType.HasValue &&
                (Actortype.Value != ActorType.Item && targetType.Value != TargetType.Avoidance && targetType.Value != TargetType.ServerInteractable))
            {
                //Validate sphere info
                Sphere sphereInfo = thisObj.CollisionSphere;

                if (!CollisionRadius.HasValue)
                {
                    #region CollisionRadius
                    try
                    {
                        CollisionRadius = sphereInfo.Radius;
                    }
                    catch
                    {
                        Logger.Write(LogLevel.Cache, "Failure to get CollisionRadius for SNO: {0}", SNOID);

                        failureDuringUpdate = true;
                    }
                    #endregion

                    if (CacheIDLookup.dictFixedCollisionRadius.ContainsKey(SNOID))
                    {                    //Override The Default Collision Sphere Value
                        CollisionRadius = CacheIDLookup.dictFixedCollisionRadius[SNOID];
                    }
                }

                if (!ActorSphereRadius.HasValue)
                {
                    #region ActorSphereRadius
                    try
                    {
                        ActorSphereRadius = thisObj.ActorInfo.Sphere.Radius;
                    }
                    catch
                    {
                        Logger.Write(LogLevel.Cache, "Safely handled getting attribute Sphere radius for gizmo {0}", InternalName);
                        failureDuringUpdate = true;
                    }
                    #endregion
                }

                #region GizmoProperties
                if (ObjectCache.CheckTargetTypeFlag(targetType.Value, TargetType.Destructible | TargetType.Interactable))
                {
                    //No Loot
                    if (!DropsNoLoot.HasValue)
                    {
                        #region DropsNoLoot
                        try
                        {
                            DropsNoLoot = thisObj.CommonData.GetAttribute <float>(ActorAttributeType.DropsNoLoot) <= 0;
                        }
                        catch
                        {
                            Logger.Write(LogLevel.Cache, "Safely handled reading DropsNoLoot for gizmo {0}", InternalName);
                            failureDuringUpdate = true;
                        }
                        #endregion
                    }
                    //No XP
                    if (!GrantsNoXP.HasValue)
                    {
                        #region GrantsNoXP
                        try
                        {
                            GrantsNoXP = thisObj.CommonData.GetAttribute <float>(ActorAttributeType.GrantsNoXP) <= 0;
                        }
                        catch
                        {
                            Logger.Write(LogLevel.Cache, "Safely handled reading GrantsNoXp for gizmo {0}", InternalName);
                            failureDuringUpdate = true;
                        }
                        #endregion
                    }
                    //Barricade flag
                    if (!IsBarricade.HasValue)
                    {
                        #region Barricade
                        try
                        {
                            IsBarricade = ((DiaGizmo)thisObj).IsBarricade;
                        }
                        catch
                        {
                            Logger.Write(LogLevel.Cache, "Safely handled getting attribute IsBarricade for gizmo {0}", InternalName);
                            failureDuringUpdate = true;
                        }
                        #endregion
                    }
                }
                #endregion
            }


            return(!failureDuringUpdate);
        }
Example #42
0
 public static long CurrentAccessCount <TKey, TValue>(this ObjectCache <TKey, TValue> cache) where TKey : IEquatable <TKey> where TValue : class
 {
     return((long)GetField(cache, "currentAccessCount").GetValue(cache));
 }
Example #43
0
 public static Dictionary <TKey, TValue> Cache <TKey, TValue>(this ObjectCache <TKey, TValue> cache) where TKey : IEquatable <TKey> where TValue : class
 {
     return((Dictionary <TKey, TValue>)GetField(cache, "cache").GetValue(cache));
 }
 public RuntimeMemoryCache()
 {
     this._cache = MemoryCache.Default;
 }
Example #45
0
 public OtherService(ISessionFactory sessionFactory, IUserPermissionContext permissionContext, IEntryLinkFactory entryLinkFactory,
                     IUserIconFactory userIconFactory, EntryForApiContractFactory entryForApiContractFactory, ObjectCache cache)
     : base(sessionFactory, permissionContext, entryLinkFactory)
 {
     this.userIconFactory            = userIconFactory;
     this.entryForApiContractFactory = entryForApiContractFactory;
     this.cache = cache;
 }
Example #46
0
        private static IEnumerable GetManyToManyChildren <T>(this SQLiteConnection conn, T element,
                                                             PropertyInfo relationshipProperty,
                                                             bool recursive, ObjectCache objectCache)
        {
            var          type = element.GetType();
            EnclosedType enclosedType;
            var          entityType = relationshipProperty.GetEntityType(out enclosedType);

            var currentEntityPrimaryKeyProperty = type.GetPrimaryKey();
            var otherEntityPrimaryKeyProperty   = entityType.GetPrimaryKey();
            var manyToManyMetaInfo = type.GetManyToManyMetaInfo(relationshipProperty);
            var currentEntityForeignKeyProperty = manyToManyMetaInfo.OriginProperty;
            var otherEntityForeignKeyProperty   = manyToManyMetaInfo.DestinationProperty;
            var intermediateType = manyToManyMetaInfo.IntermediateType;
            var tableMapping     = conn.GetMapping(entityType);

            Assert(enclosedType != EnclosedType.None, type, relationshipProperty, "ManyToMany relationship must be a List or Array");
            Assert(currentEntityPrimaryKeyProperty != null, type, relationshipProperty, "ManyToMany relationship origin must have Primary Key");
            Assert(otherEntityPrimaryKeyProperty != null, type, relationshipProperty, "ManyToMany relationship destination must have Primary Key");
            Assert(intermediateType != null, type, relationshipProperty, "ManyToMany relationship intermediate type cannot be null");
            Assert(currentEntityForeignKeyProperty != null, type, relationshipProperty, "ManyToMany relationship origin must have a foreign key defined in the intermediate type");
            Assert(otherEntityForeignKeyProperty != null, type, relationshipProperty, "ManyToMany relationship destination must have a foreign key defined in the intermediate type");
            Assert(tableMapping != null, type, relationshipProperty, "There's no mapping table defined for ManyToMany relationship origin");

            IList cascadeElements = new List <object>();
            IList values          = null;
            var   primaryKeyValue = currentEntityPrimaryKeyProperty.GetValue(element, null);

            if (primaryKeyValue != null)
            {
                // Obtain the relationship keys
                var keysQuery = string.Format("select [{0}] from [{1}] where [{2}] = ?", otherEntityForeignKeyProperty.GetColumnName(),
                                              intermediateType.GetTableName(), currentEntityForeignKeyProperty.GetColumnName());

                var query = string.Format("select * from [{0}] where [{1}] in ({2})", entityType.GetTableName(),
                                          otherEntityPrimaryKeyProperty.GetColumnName(), keysQuery);

                var queryResults = conn.Query(tableMapping, query, primaryKeyValue);

                Array array = null;

                // Create a generic list of the expected type
                if (enclosedType == EnclosedType.List)
                {
                    values = (IList)Activator.CreateInstance(typeof(List <>).MakeGenericType(entityType));
                }
                else if (enclosedType == EnclosedType.ObservableCollection)
                {
                    values = (IList)Activator.CreateInstance(typeof(ObservableCollection <>).MakeGenericType(entityType));
                }
                else
                {
                    values = array = Array.CreateInstance(entityType, queryResults.Count);
                }

                int i = 0;
                foreach (var result in queryResults)
                {
                    // Replace obtained value with a cached one whenever possible
                    bool loadedFromCache = false;
                    var  value           = recursive ? ReplaceWithCacheObjectIfPossible(result, otherEntityPrimaryKeyProperty, objectCache, out loadedFromCache) : result;

                    if (array != null)
                    {
                        array.SetValue(value, i);
                    }
                    else
                    {
                        values.Add(value);
                    }

                    if (!loadedFromCache)
                    {
                        cascadeElements.Add(result);
                    }

                    i++;
                }
            }


            relationshipProperty.SetValue(element, values, null);

            if (recursive)
            {
                foreach (var child in cascadeElements)
                {
                    conn.GetChildrenRecursive(child, true, recursive, objectCache);
                }
            }

            return(values);
        }
Example #47
0
        private static int Run(string preferencesFileName)
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            Messager.Caption = "Document Converter Demo";

            // Initialize Trace
            Trace.Listeners.Add(new TextWriterTraceListener(Console.Out));

            Console.WriteLine("LEADTOOLS " + Messager.Caption);

            DocumentConverterPreferences preferences;
            ConvertRedactionOptions      convertRedactionOptions = null;

            if (!string.IsNullOrEmpty(preferencesFileName))
            {
                // Load it from the file specified by the user
                preferences = DocumentConverterPreferences.Load(preferencesFileName);
                preferences.IsSilentMode = true;
            }
            else
            {
                // Load the preferences file
                DocumentConverterPreferences.DemoName    = "Document Converter Demo";
                DocumentConverterPreferences.XmlFileName = "DocumentConverterDemo";
                preferences = DocumentConverterPreferences.Load();
                preferences.IsSilentMode = false;
            }

            if (!Support.SetLicense(preferences.IsSilentMode))
            {
                if (preferences.IsSilentMode)
                {
                    throw new Exception("Your license file is missing, invalid or expired.");
                }
                return(-1);
            }

            // Create the rendering engine
            try
            {
                if (preferences.AnnRenderingEngine == null)
                {
                    preferences.AnnRenderingEngine           = new AnnWinFormsRenderingEngine();
                    preferences.AnnRenderingEngine.Resources = Tools.LoadResources();
                }
            }
            catch { }

            if (!preferences.IsSilentMode)
            {
                // Show the OCR engine selection dialog to startup the OCR engine
                Trace.WriteLine("Starting OCR engine");
                var engineType = preferences.OCREngineType;
                using (var dlg = new OcrEngineSelectDialog(DocumentConverterPreferences.DemoName, engineType.ToString(), true))
                {
                    dlg.AllowNoOcr        = true;
                    dlg.AllowNoOcrMessage = "The demo runs without OCR functionality but you will not be able to parse text from non-document files such as TIFF or Raster PDF. Click 'Cancel' to start this demo without an OCR engine.";
                    if (dlg.ShowDialog() == DialogResult.OK)
                    {
                        preferences.OcrEngineInstance = dlg.OcrEngine;
                        preferences.OCREngineType     = dlg.OcrEngine.EngineType;
                        Trace.WriteLine(string.Format("OCR engine {0} started", preferences.OCREngineType));
                    }
                }
            }
            else
            {
                // Initialize the default OCR engine
                preferences.OcrEngineInstance = InitOcrEngine(preferences);
            }

            // Initialize the RasterCodecs instance
            var rasterCodecs = new RasterCodecs();

            rasterCodecs.Options             = DocumentFactory.RasterCodecsTemplate.Options.Clone();
            preferences.RasterCodecsInstance = rasterCodecs;

            if (!string.IsNullOrEmpty(preferences.RasterCodecsOptionsPath))
            {
                preferences.RasterCodecsInstance.LoadOptions(preferences.RasterCodecsOptionsPath);
            }

            // Initialize the DocumentWriter instance
            preferences.DocumentWriterInstance = new DocumentWriter();
            if (!string.IsNullOrEmpty(preferences.DocumentWriterOptionsPath))
            {
                preferences.DocumentWriterInstance.LoadOptions(preferences.DocumentWriterOptionsPath);
            }

            // Cache to use
            ObjectCache cache = null;

            // Initialize the cache
            if (!string.IsNullOrEmpty(preferences.CacheDirectory))
            {
                var fileCache = new FileCache();
                fileCache.CacheDirectory          = preferences.CacheDirectory;
                fileCache.DataSerializationMode   = preferences.CacheDataSerializationMode;
                fileCache.PolicySerializationMode = preferences.CachePolicySerializationMode;
                cache = fileCache;
            }

            // Do conversions
            var more = true;

            while (more)
            {
                Console.WriteLine("Obtaining conversion options");

                if (!preferences.IsSilentMode)
                {
                    // Collect the options
                    using (var dlg = new DocumentConverterDialog())
                    {
                        dlg.Preferences      = preferences.Clone();
                        dlg.RedactionOptions = convertRedactionOptions;
                        if (dlg.ShowDialog() == DialogResult.OK)
                        {
                            preferences             = dlg.Preferences.Clone();
                            convertRedactionOptions = dlg.RedactionOptions;
                        }
                        else
                        {
                            more = false;
                        }
                    }
                }

                if (more)
                {
                    try
                    {
                        // Save the preferences
                        if (!preferences.IsSilentMode)
                        {
                            preferences.Save();
                        }

                        // Run the conversion
                        if (preferences.DocumentId != null)
                        {
                            var loadFromCacheOptions = new LoadFromCacheOptions
                            {
                                Cache      = cache,
                                DocumentId = preferences.DocumentId,
                                UserToken  = preferences.DocumentUserToken
                            };
                            using (var document = DocumentFactory.LoadFromCache(loadFromCacheOptions))
                            {
                                if (document == null)
                                {
                                    throw new Exception(string.Format("Could not load document with ID '{0}' from the cache", preferences.DocumentId));
                                }

                                preferences.Run(cache, document, null, convertRedactionOptions);
                            }
                        }
                        else
                        {
                            preferences.Run(null, null, null, convertRedactionOptions);
                        }
                    }
                    catch (Exception ex)
                    {
                        if (!preferences.IsSilentMode)
                        {
                            Messager.ShowError(null, ex.Message);
                        }
                        else
                        {
                            preferences.ErrorMessage = ex.Message;
                        }
                    }
                }

                if (more)
                {
                    if (!preferences.IsSilentMode)
                    {
                        // Ask if user wants to convert another document
                        more = (Messager.ShowQuestion(null, "Convert more?", MessageBoxButtons.YesNo) == DialogResult.Yes);
                    }
                    else
                    {
                        more = false;
                    }
                }
            }

            if (preferences.OcrEngineInstance != null)
            {
                preferences.OcrEngineInstance.Dispose();
            }

            if (preferences.RasterCodecsInstance != null)
            {
                preferences.RasterCodecsInstance.Dispose();
            }

            if (preferencesFileName != null)
            {
                preferences.Save(preferencesFileName);
            }

            if (preferences.ErrorMessage != null)
            {
                return(1);
            }

            return(0);
        }
Example #48
0
 public ArtistRelationsQuery(IDatabaseContext ctx, ContentLanguagePreference languagePreference, ObjectCache cache, IAggregatedEntryImageUrlFactory entryThumbPersister)
 {
     _ctx = ctx;
     _languagePreference = languagePreference;
     _cache = cache;
     _entryThumbPersister = entryThumbPersister;
 }
Example #49
0
 public DefaultCache()
 {
     _cacheContext = MemoryCache.Default;
 }
        public void DrawMessages(SpriteBatch b)
        {
            if (Game1.chatBox != null)
            {
                ObjectCache cache = MemoryCache.Default;
                long        uniqueMultiplayerID = Game1.player.UniqueMultiplayerID;

                int startIndex = chatCommandsIsLoaded ? displayLineIndexField.GetValue() : messagesField.GetValue().Count - 1;
                int endIndex   = chatCommandsIsLoaded ? getEndDisplayIndexMethod.Invoke <int>() : 0;

                int verticalPosAcum = 0;
                for (int i = startIndex; i >= endIndex; --i)
                {
                    ChatMessage message = messagesField.GetValue()[i];
                    verticalPosAcum += message.verticalSize;

                    int messageHash = message.GetHashCode();
                    if (!(cache[$"{messageHash}_message"] is PlayerMessage cachedPlayerMessage))
                    {
#if DEBUG
                        ModEntry.ModLogger.LogToMonitor = false;
                        ModEntry.ModLogger.Log($"Message hash: {messageHash}");
                        ModEntry.ModLogger.LogToMonitor = true;
#endif

                        cachedPlayerMessage = PlayerMessageList.Find(msg => msg.MessageHash == messageHash);
                        if (cachedPlayerMessage == null)
                        {
                            string msg = string.Concat(message.message.Select(chatSnippet => chatSnippet.message));
                            cachedPlayerMessage = new PlayerMessage(Game1.player, LocalizedContentManager.CurrentLanguageCode, msg, messageHash);
                            PlayerMessageList.Add(cachedPlayerMessage);
                        }

                        // Cache message for later
                        cache[$"{messageHash}_message"] = cachedPlayerMessage;

#if DEBUG
                        ModEntry.ModLogger.LogToMonitor = false;
                        ModEntry.ModLogger.Log($"vvvvvv Cached {cache.GetCount()} elements vvvvvv");
                        foreach (var item in cache)
                        {
                            ModEntry.ModLogger.Log($"Message hash: {item}");
                        }
                        ModEntry.ModLogger.Log($"^^^^^^ Cached {cache.GetCount()} elements ^^^^^^");
                        ModEntry.ModLogger.LogToMonitor = true;
#endif
                    }

                    int x = 12;
                    int y = Game1.chatBox.yPositionOnScreen - verticalPosAcum - 8 + (Game1.chatBox.chatBox.Selected ? 0 : Game1.chatBox.chatBox.Height);

                    foreach (MessageEmoji msgEmoji in cachedPlayerMessage.MessageEmojis)
                    {
                        Vector2 position   = new Vector2(msgEmoji.HorizontalPosition + x + 1.0f, msgEmoji.VerticalPosition + y - 4.0f);
                        bool    playerLeft = Game1.getAllFarmers().Any(farmer => farmer.UniqueMultiplayerID == cachedPlayerMessage.Player.UniqueMultiplayerID);

                        if (playerLeft && Game1.chatBox.isWithinBounds((int)position.X, (int)position.Y) && msgEmoji.Index >= NumberVanillaEmoji)
                        {
                            msgEmoji.DrawEmoji(b, position, message.alpha);
                        }
                    }
                }

                // Draw the emoji menu
                if (choosingEmojiField.GetValue())
                {
                    Game1.chatBox.emojiMenu.draw(b);
                }

                // Draw the cursor on top
                if ((Game1.chatBox.isWithinBounds(Game1.getMouseX(), Game1.getMouseY()) || Game1.chatBox.isActive()) && !Game1.options.hardwareCursor)
                {
                    b.Draw(Game1.mouseCursors, new Vector2((float)Game1.getOldMouseX(), (float)Game1.getOldMouseY()), new Rectangle?(Game1.getSourceRectForStandardTileSheet(Game1.mouseCursors, Game1.options.gamepadControls ? 44 : 0, 16, 16)), Color.White, 0.0f, Vector2.Zero, (float)(4.0 + Game1.dialogueButtonScale / 150.0), SpriteEffects.None, 1f);
                }
            }
        }
Example #51
0
        private static CacheItemTelemetry GetCacheItemTelemetry(ObjectCache cache, string cacheKey, string regionName)
        {
            var itemTelemetryCacheKey = GetItemTelemetryCacheKey(cacheKey);

            return(cache.Get(itemTelemetryCacheKey, regionName) as CacheItemTelemetry);
        }
Example #52
0
        /// <summary>
        /// Increment cache item stale access count.
        /// </summary>
        /// <param name="cache">The cache.</param>
        /// <param name="cacheKey">The cache item key.</param>
        /// <param name="regionName">The cache region.</param>
        public static void IncrementStaleAccessCount(this ObjectCache cache, string cacheKey, string regionName = null)
        {
            var item = GetCacheItemTelemetry(cache, cacheKey, regionName);

            item?.IncrementStaleAccessCount();
        }
Example #53
0
        public void Initialize(IFileSystem fileSystem, IPathResolver resolver, IScriptRuntimeListener listener, IScriptLogger logger, IO.IByteBufferAllocator byteBufferAllocator)
        {
            if (logger == null)
            {
                throw new NullReferenceException(nameof(logger));
            }

            if (fileSystem == null)
            {
                throw new NullReferenceException(nameof(fileSystem));
            }

            MethodInfo bindAll = null;

            if (!isWorker)
            {
                if (listener == null)
                {
                    throw new NullReferenceException(nameof(listener));
                }

                bindAll = typeof(Values).GetMethod("BindAll", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static);
                if (bindAll == null)
                {
                    throw new Exception("generate binding code before run");
                }

                var codeGenVersionField = typeof(Values).GetField("CodeGenVersion");
                if (codeGenVersionField == null || !codeGenVersionField.IsStatic || !codeGenVersionField.IsLiteral || codeGenVersionField.FieldType != typeof(uint))
                {
                    throw new Exception("binding code version mismatch");
                }

                var codeGenVersion = (uint)codeGenVersionField.GetValue(null);
                if (codeGenVersion != ScriptEngine.VERSION)
                {
                    if (logger != null)
                    {
                        logger.Write(LogLevel.Warn, "CodeGenVersion: {0} != {1}", codeGenVersion, ScriptEngine.VERSION);
                    }
                }
            }

            _isValid   = true;
            _isRunning = true;
            // _rwlock = new ReaderWriterLockSlim();
            _rt = JSApi.JS_NewRuntime();
            JSApi.JS_SetHostPromiseRejectionTracker(_rt, JSApi.PromiseRejectionTracker, IntPtr.Zero);
            JSApi.JS_SetRuntimeOpaque(_rt, (IntPtr)_runtimeId);
            JSApi.JS_SetModuleLoaderFunc(_rt, module_normalize, module_loader, IntPtr.Zero);
            CreateContext();
            JSApi.JS_NewClass(_rt, JSApi.JSB_GetBridgeClassID(), "CSharpClass", JSApi.class_finalizer);

            _listener            = listener;
            _pathResolver        = resolver;
            _byteBufferAllocator = byteBufferAllocator;
            _autorelease         = new Utils.AutoReleasePool();
            _fileSystem          = fileSystem;
            _logger       = logger;
            _objectCache  = new ObjectCache(_logger);
            _timerManager = new TimerManager(_logger);
            _typeDB       = new TypeDB(this, _mainContext);
            listener.OnCreate(this);

            var register = new TypeRegister(this, _mainContext);

            register.RegisterType(typeof(Unity.JSBehaviour));
#if UNITY_EDITOR
            register.RegisterType(typeof(Unity.JSEditorWindow));
#endif
            // await Task.Run(() => runner.OnBind(this, register));
            if (bindAll != null)
            {
                bindAll.Invoke(null, new object[] { register });
            }
            listener.OnBind(this, register);
            if (!_isWorker)
            {
                JSWorker.Bind(register);
            }
            TimerManager.Bind(register);
            ScriptContext.Bind(register);
            register.Finish();
            listener.OnComplete(this);
        }
Example #54
0
        bool TryFormatTuple(DbgDotNetValue value, int tupleArity)
        {
            Debug.Assert(TypeFormatterUtils.GetTupleArity(value.Type) == tupleArity && tupleArity > 0);
            OutputWrite(TupleTypeOpenParen, BoxedTextColor.Punctuation);

            var values  = ObjectCache.AllocDotNetValueList();
            var runtime = evalInfo.Runtime.GetDotNetRuntime();
            int index   = 0;

            foreach (var info in TupleTypeUtils.GetTupleFields(value.Type, tupleArity))
            {
                if (index++ > 0)
                {
                    OutputWrite(",", BoxedTextColor.Punctuation);
                    WriteSpace();
                }
                if (info.tupleIndex < 0)
                {
                    OutputWrite("???", BoxedTextColor.Error);
                    break;
                }
                else
                {
                    var objValue = value;
                    DbgDotNetValueResult valueResult = default;
                    try {
                        foreach (var field in info.fields)
                        {
                            valueResult = runtime.LoadField(evalInfo, objValue, field);
                            if (valueResult.Value != null)
                            {
                                values.Add(valueResult.Value);
                            }
                            if (valueResult.HasError || valueResult.ValueIsException)
                            {
                                objValue = null;
                                break;
                            }
                            objValue = valueResult.Value;
                        }
                        valueResult = default;
                        if (objValue == null)
                        {
                            OutputWrite("???", BoxedTextColor.Error);
                            break;
                        }
                        Format(objValue);
                    }
                    finally {
                        valueResult.Value?.Dispose();
                        foreach (var v in values)
                        {
                            v?.Dispose();
                        }
                        values.Clear();
                    }
                }
            }
            ObjectCache.Free(ref values);

            OutputWrite(TupleTypeCloseParen, BoxedTextColor.Punctuation);
            return(true);
        }
Example #55
0
        public static Tuple <bool, string, int, int, IList> where < T > (
            T[] items, string s_key, string s_select, string s_where, string s_order_by, string s_distinct, int page_number, int page_size)
        {
            string s_tab = typeof(T).FullName;

            string key_cache = s_tab + "|" +
                               s_key + "|" +
                               s_select + "|" + s_where + "|" + Guid.NewGuid().ToString() +
                               s_order_by + "|" + s_distinct;


            int rs_total = items.Length;
            int rs_count = 0;
            try
            {
                IList dy;

                ObjectCache cache = MemoryCache.Default;
                if (cache[key_cache] == null)
                {
                    #region // query ...

                    T[] a = new T[] { };
                    if (!string.IsNullOrEmpty(s_where))
                    {
                        a = items.Where(s_where).Cast <T>().ToArray();
                    }
                    else
                    {
                        a = items;
                    }

                    IList ls = new List <dynamic>()
                    {
                    };
                    IList dt = new List <dynamic>()
                    {
                    };
                    if (!string.IsNullOrEmpty(s_distinct))
                    {
                        string[] adis         = s_distinct.Split(',').Select(x => "Key." + x.Trim()).ToArray();
                        string   s_dis_select = string.Join(",", adis);

                        s_select = "";
                        if (string.IsNullOrEmpty(s_order_by))
                        {
                            ls = a.AsQueryable().GroupBy("new(" + s_distinct + ")").Select("new(" + s_dis_select + ")").ToListDynamic();
                        }
                        else
                        {
                            //var ls =
                            //ls = a.SortMultiple(s_order_by).AsQueryable().GroupBy("new(" + s_distinct + ")").Select("new(" + s_dis_select + ")").ToListDynamic();
                            ls = a.AsQueryable().GroupBy("new(" + s_distinct + ")").Select("new(" + s_dis_select + ")").ToListDynamic();
                        }
                    }
                    else
                    {
                        if (string.IsNullOrEmpty(s_order_by))
                        {
                            ls = a;
                        }
                        else
                        {
                            ls = a.SortMultiple(s_order_by).ToArray();
                        }
                    }

                    rs_count = ls.Count;
                    //ObjectCache cache = MemoryCache.Default;
                    CacheItemPolicy policy = new CacheItemPolicy();
                    policy.Priority           = System.Runtime.Caching.CacheItemPriority.Default;
                    policy.AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(30);
                    //Muốn tạo sự kiện thì tạo ở đây còn k thì hoy
                    //(MyCacheItemPriority == MyCachePriority.Default) ? CacheItemPriority.Default : CacheItemPriority.NotRemovable;
                    ///Globals.policy.RemovedCallback = callback;
                    cache.Set(key_cache, ls, policy, null);

                    dbCache.dicKeys.AddDistinct(s_tab, key_cache);

                    if (rs_count <= page_size)
                    {
                        dt = ls;
                    }
                    else
                    {
                        int startRowIndex = page_size * (page_number - 1);
                        dt = ls.Cast <dynamic>().Skip(startRowIndex).Take(page_size).ToArray();
                    }

                    //IList dy = dt;
                    dy = dt;
                    if (!string.IsNullOrEmpty(s_select))
                    {
                        dy = ls.Select("new(" + s_select + ")").ToListDynamic();
                    }
                    //string json = JsonConvert.SerializeObject(dy);

                    #endregion
                }
                else
                {
                    dy       = cache[key_cache] as IList;
                    rs_count = dy.Count;

                    if (rs_count <= page_size)
                    {
                    }
                    else
                    {
                        int startRowIndex = page_size * (page_number - 1);
                        dy = dy.Cast <dynamic>().Skip(startRowIndex).Take(page_size).ToArray();
                    }

                    if (!string.IsNullOrEmpty(s_select))
                    {
                        dy = dy.Select("new(" + s_select + ")").ToListDynamic();
                    }
                }

                return(new Tuple <bool, string, int, int, IList>(true, "", rs_total, rs_count, dy));
            }
            catch (Exception ex)
            {
                return(new Tuple <bool, string, int, int, IList>(false, ex.Message, rs_total, 0, null));
            }
        }
Example #56
0
        private static void GetChildRecursive(this SQLiteConnection conn, object element, PropertyInfo relationshipProperty, bool recursive, ObjectCache objectCache)
        {
            var relationshipAttribute = relationshipProperty.GetAttribute <RelationshipAttribute>();

            if (relationshipAttribute is OneToOneAttribute)
            {
                conn.GetOneToOneChild(element, relationshipProperty, recursive, objectCache);
            }
            else if (relationshipAttribute is OneToManyAttribute)
            {
                conn.GetOneToManyChildren(element, relationshipProperty, recursive, objectCache);
            }
            else if (relationshipAttribute is ManyToOneAttribute)
            {
                conn.GetManyToOneChild(element, relationshipProperty, recursive, objectCache);
            }
            else if (relationshipAttribute is ManyToManyAttribute)
            {
                conn.GetManyToManyChildren(element, relationshipProperty, recursive, objectCache);
            }
            else if (relationshipAttribute is TextBlobAttribute)
            {
                TextBlobOperations.GetTextBlobChild(element, relationshipProperty);
            }
        }
Example #57
0
        /// <summary>
        /// Removes site from cache
        /// </summary>
        /// <param name="id"></param>
        public static void Flush(int id)
        {
            ObjectCache cache = MemoryCache.Default;

            cache.Remove(Site.CacheKey(id));
        }
Example #58
0
 public EmpresaServicio()
 {
     this.servicioWeb = new ServicioWebEmpresas.ServicioWebEmpresas();
     this.cache       = MemoryCache.Default;
 }
Example #59
0
        static object ReplaceWithCacheObjectIfPossible(object element, PropertyInfo primaryKeyProperty, ObjectCache objectCache, out bool isLoadedFromCache)
        {
            isLoadedFromCache = false;
            if (element == null || primaryKeyProperty == null || objectCache == null)
            {
                return(element);
            }

            object primaryKey = null;

            primaryKey = primaryKeyProperty.GetValue(element, null);

            if (primaryKey == null)
            {
                return(element);
            }

            var    cachedElement = GetObjectFromCache(element.GetType(), primaryKey, objectCache);
            object result;

            if (cachedElement != null)
            {
                result            = cachedElement;
                isLoadedFromCache = true;
            }
            else
            {
                result = element;
                SaveObjectToCache(element, primaryKey, objectCache);
            }

            return(result);
        }
Example #60
0
        /// <summary>
        /// Get the cache footprint in the form of a JSON-serializable object.
        /// </summary>
        /// <param name="cache">The cache.</param>
        /// <param name="expanded">Whether to show details of each entity item.</param>
        /// <param name="requestUrl">The request URL.</param>
        /// <returns></returns>
        public static Dictionary <string, object> GetCacheFootprintJson(this ObjectCache cache, bool expanded, Uri requestUrl)
        {
            var alternateLink = new Uri(requestUrl.GetLeftPart(UriPartial.Path));

            var entities = new List <Dictionary <string, object> >();

            var footprint = GetCacheFootprint(cache, alternateLink);

            foreach (var entityType in footprint)
            {
                var entity = new Dictionary <string, object>
                {
                    { "Name", entityType.Name },
                    { "Count", entityType.GetCount() },
                    { "Size", entityType.GetSize() }
                };

                if (expanded)
                {
                    var records = new Collection <Dictionary <string, object> >();
                    foreach (var item in entityType.Items)
                    {
                        var record = new Dictionary <string, object>
                        {
                            { "LogicalName", item.Entity.LogicalName },
                            { "Name", item.Entity.GetAttributeValueOrDefault("adx_name", string.Empty) },
                            { "Id", item.Entity.Id }
                        };

                        var recordCache = new Dictionary <string, object>
                        {
                            { "Id", item.CacheItemKey },
                            { "Type", item.CacheItemType },
                            { "Link", item.Link.ToString() },
                            { "Size", GetEntitySizeInMemory(item.Entity) }
                        };

                        record.Add("Cache", recordCache);
                        records.Add(record);
                    }
                    entity.Add("Items", records);
                }

                entities.Add(entity);
            }

            var entitiesWrapper = new Dictionary <string, object>();

            if (!expanded)
            {
                // Add link to the Expanded view with entity record details
                var query = System.Web.HttpUtility.ParseQueryString(requestUrl.Query);
                query[Web.Handlers.CacheFeedHandler.QueryKeys.Expanded] = bool.TrueString;
                var uriBuilder = new UriBuilder(requestUrl.ToString())
                {
                    Query = query.ToString()
                };
                entitiesWrapper.Add("ExpandedView", uriBuilder.ToString());
            }
            entitiesWrapper.Add("Entities", entities.OrderByDescending(e => e["Size"]));
            var retval = new Dictionary <string, object> {
                { "CacheFootprint", entitiesWrapper }
            };

            return(retval);
        }