Exemplo n.º 1
0
        public TItem Set <TItem>(CacheEntryInfo info, TItem value, TimeSpan?timeToLive = null)
        {
            _current.CacheService.Set(info, value, _current.Options.TimeToLive);
            _next?.Set(info, value, _current.Options.TimeToLive);

            return(value);
        }
Exemplo n.º 2
0
        public TItem Set <TItem>(CacheEntryInfo info, TItem value, TimeSpan?timeToLive = null)
        {
            Log(info, $"Set:Begin");
            var result = _innerCacheService.Set(info, value, timeToLive);

            Log(info, $"Set:End");

            return(result);
        }
Exemplo n.º 3
0
 public TItem GetOrCreate <TItem>(CacheEntryInfo info, Func <TItem> factory, TimeSpan?timeToLive = null)
 {
     return(_current.CacheService.GetOrCreate(
                info,
                _next is null
             ? factory
             : () => _next.GetOrCreate(info, factory, timeToLive),
                timeToLive ?? _current.Options.TimeToLive));
 }
Exemplo n.º 4
0
 public async Task <TItem> GetOrCreateAsync <TItem>(CacheEntryInfo info, Func <Task <TItem> > factory, TimeSpan?timeToLive = null)
 {
     return(await _current.CacheService.GetOrCreateAsync(
                info,
                _next is null
                ?factory
                : async() => await _next.GetOrCreateAsync(info, factory, timeToLive),
                timeToLive ?? _current.Options.TimeToLive));
 }
Exemplo n.º 5
0
        public void Remove(CacheEntryInfo info)
        {
            Log(info, $"Remove:Source:{info.SourceObject.GetType().Name}");
            Log(info, $"Remove:Info:{JsonSerializer.Serialize(info)}");

            if (info.NoCache)
            {
                Log(info, $"GetOrCreateAsync:NoCache");
            }

            Log(info, $"GetOrCreate:Remove");
        }
Exemplo n.º 6
0
        public TItem Set <TItem>(CacheEntryInfo info, TItem value, TimeSpan?timeToLive = null)
        {
            Log(info, $"Set:Source:{info.SourceObject.GetType().Name}");
            Log(info, $"Set:Info:{JsonSerializer.Serialize(info)}");

            if (info.NoCache)
            {
                Log(info, $"GetOrCreateAsync:NoCache");
            }

            Log(info, $"GetOrCreate:Set");
            return(value);
        }
Exemplo n.º 7
0
        public TItem GetOrCreate <TItem>(CacheEntryInfo info, Func <TItem> factory, TimeSpan?timeToLive = null)
        {
            Log(info, $"GetOrCreate:Source:{info.SourceObject.GetType().Name}");
            Log(info, $"GetOrCreate:Info:{JsonSerializer.Serialize(info)}");

            if (info.NoCache)
            {
                Log(info, $"GetOrCreateAsync:NoCache");
            }

            var item = factory.Invoke();

            Log(info, $"GetOrCreate:End");
            return(item);
        }
Exemplo n.º 8
0
        public TItem GetOrCreate <TItem>(CacheEntryInfo info, Func <TItem> factory, TimeSpan?timeToLive = null)
        {
            var cacheHit = true;

            Log(info, $"GetOrCreate:Begin");
            var result = _innerCacheService.GetOrCreate(info, () =>
            {
                cacheHit = false;
                Log(info, $"GetOrCreate:FactoryInvoke");
                return(factory.Invoke());
            }, timeToLive);

            if (cacheHit)
            {
                Log(info, $"GetOrCreate:>>HIT<<");
            }

            Log(info, $"GetOrCreate:End");

            return(result);
        }
Exemplo n.º 9
0
 private void Log(CacheEntryInfo info, string logMessage)
 {
     _logger.LogDebug($"{info.Key}:{_cacheServiceName}:{logMessage}");
 }
Exemplo n.º 10
0
 public async Task <TItem> GetOrCreateAsync <TItem>(CacheEntryInfo info, Func <Task <TItem> > factory, TimeSpan?timeToLive = null)
 {
     if (info.NoCache)
     {
         return(default);
Exemplo n.º 11
0
 public void Remove(CacheEntryInfo info)
 {
     Log(info, $"Remove:Begin");
     _innerCacheService.Remove(info);
     Log(info, $"Remove:End");
 }
Exemplo n.º 12
0
 public void Remove(CacheEntryInfo info)
 {
     Log(info, $"Remove:EndOfPipeline");
 }
Exemplo n.º 13
0
 public TItem Set <TItem>(CacheEntryInfo info, TItem value, TimeSpan?timeToLive = null)
 {
     Log(info, $"Set:EndOfPipeline");
     return(value);
 }
Exemplo n.º 14
0
 public TItem GetOrCreate <TItem>(CacheEntryInfo info, Func <TItem> factory, TimeSpan?timeToLive = null)
 {
     Log(info, $"GetOrCreate:>>MISS<<");
     Log(info, $"GetOrCreate:EndOfPipeline");
     return(factory.Invoke());
 }
Exemplo n.º 15
0
 public async Task <TItem> GetOrCreateAsync <TItem>(CacheEntryInfo info, Func <Task <TItem> > factory, TimeSpan?timeToLive = null)
 {
     Log(info, $"GetOrCreateAsync:>>CacheMiss<<");
     Log(info, $"GetOrCreateAsync:EndOfPipeline");
     return(await factory.Invoke());
 }
Exemplo n.º 16
0
 public void Remove(CacheEntryInfo info)
 {
     _current.CacheService.Remove(info);
     _next?.Remove(info);
 }