Пример #1
0
        public async Task <RoomPayload> RoomPayload(string roomId)
        {
            if (Logger.IsEnabled(LogLevel.Trace))
            {
                Logger.LogTrace($"roomPayload({roomId})");
            }
            if (string.IsNullOrWhiteSpace(roomId))
            {
                throw new ArgumentException("no id", nameof(roomId));
            }

            //1. Try to get from cache first
            var cached = RoomPayloadCache(roomId);

            if (cached != null)
            {
                return(cached);
            }

            //2. Cache not found
            var rawPayload = await RoomRawPayload(roomId);

            var payload = await RoomRawPayloadParser(rawPayload);

            CacheRoomPayload.Set(roomId, payload);
            if (Logger.IsEnabled(LogLevel.Trace))
            {
                Logger.LogTrace($"roomPayload({roomId}) cache SET");
            }

            return(payload);
        }
Пример #2
0
#pragma warning disable CS1998 // 异步方法缺少 "await" 运算符,将以同步方式运行
        public async Task RoomPayloadDirty(string roomId)
#pragma warning restore CS1998 // 异步方法缺少 "await" 运算符,将以同步方式运行
        {
            if (Logger.IsEnabled(LogLevel.Trace))
            {
                Logger.LogTrace($"roomPayloadDirty({roomId})");
            }
            _ = CacheRoomPayload.Delete(roomId);
        }
Пример #3
0
        protected RoomPayload?RoomPayloadCache(string roomId)
        {
            if (string.IsNullOrWhiteSpace(roomId))
            {
                throw new ArgumentException("no id");
            }
            var cachePlayload = CacheRoomPayload.Get(roomId);

            if (cachePlayload == null)
            {
                if (Logger.IsEnabled(LogLevel.Trace))
                {
                    Logger.LogTrace($"roomPayloadCache({roomId}) cache MISS");
                }
            }
            return(cachePlayload);
        }