Ejemplo n.º 1
0
        private async Task <IEnumerable <MediaSourceInfo> > GetChannelItemMediaSourcesInternal(IRequiresMediaInfoCallback channel, string id, CancellationToken cancellationToken)
        {
            if (_memoryCache.TryGetValue(id, out List <MediaSourceInfo> cachedInfo))
            {
                return(cachedInfo);
            }

            var mediaInfo = await channel.GetChannelItemMediaInfo(id, cancellationToken)
                            .ConfigureAwait(false);

            var list = mediaInfo.ToList();

            _memoryCache.Set(id, list, DateTimeOffset.UtcNow.AddMinutes(5));

            return(list);
        }
Ejemplo n.º 2
0
        private async Task <IEnumerable <MediaSourceInfo> > GetChannelItemMediaSourcesInternal(IRequiresMediaInfoCallback channel, string id, CancellationToken cancellationToken)
        {
            if (_channelItemMediaInfo.TryGetValue(id, out Tuple <DateTime, List <MediaSourceInfo> > cachedInfo))
            {
                if ((DateTime.UtcNow - cachedInfo.Item1).TotalMinutes < 5)
                {
                    return(cachedInfo.Item2);
                }
            }

            var mediaInfo = await channel.GetChannelItemMediaInfo(id, cancellationToken)
                            .ConfigureAwait(false);

            var list = mediaInfo.ToList();

            var item2 = new Tuple <DateTime, List <MediaSourceInfo> >(DateTime.UtcNow, list);

            _channelItemMediaInfo.AddOrUpdate(id, item2, (key, oldValue) => item2);

            return(list);
        }
Ejemplo n.º 3
0
        private async Task<IEnumerable<ChannelMediaInfo>> GetChannelItemMediaSourcesInternal(IRequiresMediaInfoCallback channel, string id, CancellationToken cancellationToken)
        {
            Tuple<DateTime, List<ChannelMediaInfo>> cachedInfo;

            if (_channelItemMediaInfo.TryGetValue(id, out cachedInfo))
            {
                if ((DateTime.UtcNow - cachedInfo.Item1).TotalMinutes < 5)
                {
                    return cachedInfo.Item2;
                }
            }

            var mediaInfo = await channel.GetChannelItemMediaInfo(id, cancellationToken)
                   .ConfigureAwait(false);
            var list = mediaInfo.ToList();

            var item2 = new Tuple<DateTime, List<ChannelMediaInfo>>(DateTime.UtcNow, list);
            _channelItemMediaInfo.AddOrUpdate(id, item2, (key, oldValue) => item2);

            return list;
        }