Beispiel #1
0
 /// <summary>
 /// This constructor allows the creation of a feature but will automatically
 /// add the feature to the parent featureset.
 /// </summary>
 /// <param name="geometry">The IBasicGeometry to use for this feature</param>
 /// <param name="parent">The IFeatureSet to add this feature to.</param>
 public Feature(IBasicGeometry geometry, IFeatureSet parent)
 {
     _basicGeometry = geometry;
     _dataRow       = parent.DataTable.NewRow();
     _envelopSource = CacheTypes.Dynamic;
     parent.Features.Add(this);
 }
Beispiel #2
0
        public static string GetProviderGroupCacheKey(this object item, CacheTypes cacheType)
        {
            if (item == null)
            {
                throw new ArgumentNullException();
            }

            IProviderGroupId providerGroupIdItem = item as IProviderGroupId;

            if (providerGroupIdItem == null)
            {
                throw new InvalidOperationException($"Type [{item.GetType().Name}] does not implement IProviderGroupId");
            }

            string result = string.Empty;

            switch (cacheType)
            {
            case CacheTypes.Item:
                result = $"mc_{item.GetType().Name}_{providerGroupIdItem.ProviderGroupId}_{providerGroupIdItem.Id}";
                break;

            case CacheTypes.ItemList:
                result = $"mc_{item.GetType().Name}_{providerGroupIdItem.ProviderGroupId}";
                break;
            }

            return(result);
        }
Beispiel #3
0
        public object Get(CacheTypes t)
        {
            ObjectCache cache = MemoryCache.Default;
            var         data  = cache.Get(t.ToString());

            return(data);
        }
Beispiel #4
0
        /// <summary>
        /// Creates a new instance of a feature, by specifying the feature type enumeration and a
        /// set of coordinates that can be either a list or an array as long as it is enumerable.
        /// </summary>
        /// <param name="featureType">The feature type</param>
        /// <param name="coordinates">The coordinates to pass</param>
        public Feature(FeatureType featureType, IEnumerable <Coordinate> coordinates)
        {
            switch (featureType)
            {
            case FeatureType.Line:
                _dataRow       = null;
                _basicGeometry = new LineString(coordinates);
                _envelopSource = CacheTypes.Dynamic;
                break;

            case FeatureType.MultiPoint:
                _dataRow       = null;
                _basicGeometry = new MultiPoint(coordinates);
                _envelopSource = CacheTypes.Dynamic;
                break;

            case FeatureType.Point:
                _dataRow       = null;
                _basicGeometry = new Point(coordinates.First());
                _envelopSource = CacheTypes.Dynamic;
                break;

            case FeatureType.Polygon:
                _dataRow       = null;
                _basicGeometry = new Polygon(coordinates);
                _envelopSource = CacheTypes.Dynamic;
                break;
            }
        }
Beispiel #5
0
        public void Add(CacheTypes t, object o)
        {
            ObjectCache     cache  = MemoryCache.Default;
            CacheItemPolicy policy = new CacheItemPolicy {
                AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(30)
            };

            cache.Add(t.ToString(), o, policy);
        }
        /// <summary>
        /// Возвращает конфигуратор
        /// </summary>
        /// <param name="p_CacheType">тип кэша</param>
        /// <returns></returns>
        public static CacheConfigurator GetConfigurationForType(CacheTypes p_CacheType)
        {
            DataRow[] dr = Config.Select(string.Format("{0} = '{1}'", CacheConfigurator.TypeNameColumnName,
                Enum.GetName(typeof(CacheTypes), p_CacheType)));

            if (dr != null && dr.Length > 0)
                return new CacheConfigurator(dr[0]);
            else
                throw AssistLogger.Log<ExceptionHolder>(new CacheConfigurationNotFoundException(), AssistLogger.Category.Database);
        }
Beispiel #7
0
        public static string GetProviderCacheKey(this object item, CacheTypes cacheType)
        {
            if (item == null)
            {
                throw new ArgumentNullException();
            }

            string result = string.Empty;

            switch (cacheType)
            {
            case CacheTypes.Item:
                result = $"mc_{item.GetType().Name}_{item.GetProviderId()}_{item.GetId()}";
                break;

            case CacheTypes.ItemList:
                result = $"mc_{item.GetType().Name}_{item.GetProviderId()}";
                break;
            }

            return(result);
        }
Beispiel #8
0
        /// <summary>
        /// </summary>
        /// <param name="client"></param>
        /// <param name="ctype">The type of Cache system to use for images.</param>
        /// <param name="directory">The directory to use for disk based caching.</param>
        private void Init(SecondLife client, CacheTypes ctype, string directory)
        {
            slClient = client;

            // Setup Image Caching
            CacheType = ctype;
            if (ctype == CacheTypes.Disk)
            {
                if (directory != null)
                {
                    CacheDirectory = directory;
                }

                try
                {
                    if (!Directory.Exists(CacheDirectory))
                    {
                        Directory.CreateDirectory(CacheDirectory);
                    }
                }
                catch (Exception e)
                {
                    slClient.Log("Disk Cache directory could not be established, defaulting to Memory Cache: " + Environment.NewLine +
                                 e.ToString(), Helpers.LogLevel.Warning);

                    CacheType = CacheTypes.Memory;
                }
            }

            // Image Packet Helpers
            ImagePacketHelper = new ImagePacketHelpers(client);

            // Image Callbacks
            slClient.Network.RegisterCallback(PacketType.ImageData, new NetworkManager.PacketCallback(ImageDataCallbackHandler));
            slClient.Network.RegisterCallback(PacketType.ImagePacket, new NetworkManager.PacketCallback(ImagePacketCallbackHandler));
            slClient.Network.RegisterCallback(PacketType.ImageNotInDatabase, new NetworkManager.PacketCallback(ImageNotInDatabaseCallbackHandler));
        }
        /// <summary>
        /// </summary>
        /// <param name="client"></param>
        /// <param name="ctype">The type of Cache system to use for images.</param>
        /// <param name="directory">The directory to use for disk based caching.</param>
        private void Init(SecondLife client, CacheTypes ctype, string directory)
        {
            slClient = client;

            // Setup Image Caching
            CacheType = ctype;
            if (ctype == CacheTypes.Disk)
            {
                if (directory != null)
                {
                    CacheDirectory = directory;
                }

                try
                {
                    if (!Directory.Exists(CacheDirectory))
                    {
                        Directory.CreateDirectory(CacheDirectory);
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine("ERROR: Disk Cache directory could not be established, defaulting to Memory Cache.");
                    Console.WriteLine(e.Message);

                    CacheType = CacheTypes.Memory;
                }
            }

            // Image Packet Helpers
            ImagePacketHelper = new ImagePacketHelpers(client);

            // Image Callbacks
            slClient.Network.RegisterCallback(PacketType.ImageData, new PacketCallback(ImageDataCallbackHandler));
            slClient.Network.RegisterCallback(PacketType.ImagePacket, new PacketCallback(ImagePacketCallbackHandler));
            slClient.Network.RegisterCallback(PacketType.ImageNotInDatabase, new PacketCallback(ImageNotInDatabaseCallbackHandler));
        }
Beispiel #10
0
        public async Task Invoke(HttpContext context)
        {
            //remove header set by end user directly.
            context.Request.Headers.Remove("Cache-Enabled");

            var originalBodyStream = context.Response.Body;

            using (var memStream = new MemoryStream())
            {
                context.Response.Body = memStream;
                await _next(context);

                memStream.Position = 0;

                var cacheEnabled = context.Request.Headers["Cache-Enabled"];
                if (cacheEnabled == "true")
                {
                    int minutes = 0;
                    int.TryParse(context.Request.Headers["Cache-Time-Minutes"], out minutes);
                    CacheTypes cacheType = (CacheTypes)Enum.Parse(typeof(CacheTypes), context.Request.Headers["Cache-Type"]);

                    var cacheProvider    = context.RequestServices.GetService(typeof(IDistributedCache)) as IDistributedCache;
                    var cacheKeyProvider = context.RequestServices.GetService(typeof(ICacheKeyProvider)) as ICacheKeyProvider;

                    var key       = cacheKeyProvider.CreateKey();
                    var cacheData = cacheProvider.Get(key);

                    if (cacheData == null)
                    {
                        var    response     = context.Response;
                        string responseBody = new StreamReader(memStream).ReadToEnd();
                        memStream.Position = 0;

                        var cacheItem = new CacheItem
                        {
                            ContentType    = context.Response.ContentType,
                            Body           = System.Text.ASCIIEncoding.ASCII.GetBytes(responseBody),
                            Headers        = context.Response.Headers.ToDictionary(h => h.Key, v => v.Value.ToString()),
                            LastModifiedOn = DateTime.Now
                        };

                        switch (cacheType)
                        {
                        case CacheTypes.Absolute:
                            cacheProvider.Set(key, cacheKeyProvider.ToByteArray <CacheItem>(cacheItem), new DistributedCacheEntryOptions {
                                AbsoluteExpiration = System.DateTimeOffset.UtcNow.AddMinutes(minutes)
                            });
                            break;

                        case CacheTypes.Sliding:
                            cacheProvider.Set(key, cacheKeyProvider.ToByteArray <CacheItem>(cacheItem), new DistributedCacheEntryOptions {
                                SlidingExpiration = System.TimeSpan.FromMinutes(minutes)
                            });
                            break;

                        default:
                            break;
                        }
                    }
                }

                await memStream.CopyToAsync(originalBodyStream);
            }
        }
 /// <summary>
 /// </summary>
 /// <param name="client"></param>
 /// <param name="ctype">The type of Cache system to use for images.</param>
 /// <param name="directory">The directory to use for disk based caching.</param>
 public ImageManager(SecondLife client, CacheTypes ctype, String directory)
 {
     Init(client, ctype, directory);
 }
        /// <summary>
        /// </summary>
        /// <param name="client"></param>
        /// <param name="ctype">The type of Cache system to use for images.</param>
        /// <param name="directory">The directory to use for disk based caching.</param>
        private void Init(SecondLife client, CacheTypes ctype, string directory)
        {
            slClient = client;

            // Setup Image Caching
            CacheType = ctype;
            if (ctype == CacheTypes.Disk)
            {
                if (directory != null)
                {
                    CacheDirectory = directory;
                }

                try
                {
                    if (!Directory.Exists(CacheDirectory))
                    {
                        Directory.CreateDirectory(CacheDirectory);
                    }
                }
                catch (Exception e)
                {
                    slClient.Log("Disk Cache directory could not be established, defaulting to Memory Cache: " + Environment.NewLine +
                        e.ToString(), Helpers.LogLevel.Warning);

                    CacheType = CacheTypes.Memory;
                }
            }

            // Image Packet Helpers
            ImagePacketHelper = new ImagePacketHelpers(client);

            // Image Callbacks
            slClient.Network.RegisterCallback(PacketType.ImageData, new NetworkManager.PacketCallback(ImageDataCallbackHandler));
            slClient.Network.RegisterCallback(PacketType.ImagePacket, new NetworkManager.PacketCallback(ImagePacketCallbackHandler));
            slClient.Network.RegisterCallback(PacketType.ImageNotInDatabase, new NetworkManager.PacketCallback(ImageNotInDatabaseCallbackHandler));
        }
        /// <summary>
        /// </summary>
        /// <param name="client"></param>
        /// <param name="ctype">The type of Cache system to use for images.</param>
        /// <param name="directory">The directory to use for disk based caching.</param>
        private void Init(SecondLife client, CacheTypes ctype, string directory)
        {
            slClient = client;

            // Setup Image Caching
            CacheType = ctype;
            if (ctype == CacheTypes.Disk)
            {
                if (directory != null)
                {
                    CacheDirectory = directory;
                }

                try
                {
                    if (!Directory.Exists(CacheDirectory))
                    {
                        Directory.CreateDirectory(CacheDirectory);
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine("ERROR: Disk Cache directory could not be established, defaulting to Memory Cache.");
                    Console.WriteLine(e.Message);

                    CacheType = CacheTypes.Memory;
                }

            }

            // Image Packet Helpers
            ImagePacketHelper = new ImagePacketHelpers(client);

            // Image Callbacks
            slClient.Network.RegisterCallback(PacketType.ImageData, new PacketCallback(ImageDataCallbackHandler));
            slClient.Network.RegisterCallback(PacketType.ImagePacket, new PacketCallback(ImagePacketCallbackHandler));
            slClient.Network.RegisterCallback(PacketType.ImageNotInDatabase, new PacketCallback(ImageNotInDatabaseCallbackHandler));
        }
Beispiel #14
0
 /// <summary>
 /// </summary>
 /// <param name="client"></param>
 /// <param name="ctype">The type of Cache system to use for images.</param>
 public ImageManager(SecondLife client, CacheTypes ctype)
 {
     Init(client, ctype, null);
 }
Beispiel #15
0
 /// <summary>
 /// </summary>
 /// <param name="client"></param>
 /// <param name="ctype">The type of Cache system to use for images.</param>
 /// <param name="directory">The directory to use for disk based caching.</param>
 public ImageManager(SecondLife client, CacheTypes ctype, String directory)
 {
     Init(client, ctype, directory);
 }
Beispiel #16
0
 /// <summary>
 /// Constructs a new Feature
 /// </summary>
 public Feature()
 {
     _dataRow       = null;
     _basicGeometry = null;
     _envelopSource = CacheTypes.Cached;
 }
 /// <summary>
 /// </summary>
 /// <param name="client"></param>
 /// <param name="ctype">The type of Cache system to use for images.</param>
 public ImageManager(SecondLife client, CacheTypes ctype)
 {
     Init(client, ctype, null);
 }
Beispiel #18
0
 public ICacheSettings GetCacheSettings(CacheTypes cacheType, string cacheEntry)
 {
     return(new CacheSettings());
 }