public static void SetCachedDefinition(string key, GrasshopperDefinition definition, string data)
        {
            CachedDefinition cachedef = new CachedDefinition
            {
                Definition = definition,
                WatchedFileRuntimeSerialNumber = GrasshopperDefinition.WatchedFileRuntimeSerialNumber
            };

            System.Runtime.Caching.MemoryCache.Default.Set(key, cachedef, CachePolicy);

            if (!string.IsNullOrWhiteSpace(data))
            {
                string filename = DefinitionCacheFileName(key);
                if (filename != null && !System.IO.File.Exists(filename))
                {
                    try
                    {
                        if (!System.IO.Directory.Exists(DefinitionCacheDirectory))
                        {
                            System.IO.Directory.CreateDirectory(DefinitionCacheDirectory);
                        }

                        System.IO.File.WriteAllText(filename, data);
                        System.Threading.Tasks.Task.Run(() => DataCache.CGCacheDirectory());
                    }
                    catch (Exception ex)
                    {
                        Serilog.Log.Error($"Unable to write cache file: {filename}");
                        Serilog.Log.Error(ex, "File error exception");
                    }
                }
            }
        }
示例#2
0
        public static void SetCachedDefinition(string key, GrasshopperDefinition definition)
        {
            CachedDefinition cachedef = new CachedDefinition
            {
                Definition = definition,
                WatchedFileRuntimeSerialNumber = GrasshopperDefinition.WatchedFileRuntimeSerialNumber
            };

            System.Runtime.Caching.MemoryCache.Default.Set(key, cachedef, CachePolicy);
        }
示例#3
0
        public IDictionary <int, CachedDefinition> Cache(Format.Loaded.LoadedDefinition[] definitions)
        {
            IDictionary <int, CachedDefinition> positions = new Dictionary <int, CachedDefinition>();

            foreach (Format.Loaded.LoadedDefinition def in definitions)
            {
                if (!def.ArtisanGood.TryLoad(out int artisanGoodId))
                {
                    def.ArtisanGood.LoadErrorMessage(this.monitor, "artisan good");
                    continue;
                }
                positions[artisanGoodId] = new CachedDefinition(this.monitor, def.Texture, def.SourceItems);
            }

            return(positions);
        }