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); }
#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); }
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); }