Example #1
0
        public DistributedCacheAccessor(IDistributedCache distributedCache, IFusionCacheSerializer serializer, FusionCacheOptions options, ILogger?logger)
        {
            if (distributedCache == null)
            {
                throw new ArgumentNullException(nameof(distributedCache));
            }

            if (serializer == null)
            {
                throw new ArgumentNullException(nameof(serializer));
            }

            _cache      = distributedCache;
            _serializer = serializer;

            _options            = options;
            _breakDuration      = distributedCache is null ? TimeSpan.Zero : options.DistributedCacheCircuitBreakerDuration;
            _breakDurationTicks = _breakDuration.Ticks;
            _gatewayTicks       = DateTimeOffset.MinValue.Ticks;

            _logger = logger;
        }
        /// <inheritdoc/>
        public IFusionCache SetupDistributedCache(IDistributedCache distributedCache, IFusionCacheSerializer serializer)
        {
            if (distributedCache is null)
            {
                throw new ArgumentNullException(nameof(distributedCache));
            }

            if (serializer is null)
            {
                throw new ArgumentNullException(nameof(serializer));
            }

            _dca = new DistributedCacheAccessor(distributedCache, serializer, _options, _logger);

            if (_logger?.IsEnabled(LogLevel.Debug) ?? false)
            {
                _logger.LogDebug("FUSION: setup distributed cache (CACHE={DistributedCacheType} SERIALIZER={SerializerType})", distributedCache.GetType().FullName, serializer.GetType().FullName);
            }

            return(this);
        }
 private async Task <T> LoopDeLoopAsync <T>(IFusionCacheSerializer serializer, T obj)
 {
     return(await serializer.DeserializeAsync <T>(await serializer.SerializeAsync(obj)));
 }
 private T LoopDeLoop <T>(IFusionCacheSerializer serializer, T obj)
 {
     return(serializer.Deserialize <T>(serializer.Serialize(obj)));
 }