public async Task <WrappedResponse <GameInfo> > Handle(GetGameInfoCommand request, CancellationToken cancellationToken) { GameInfo gameinfo = await _redisRepository.GetGameInfo(request.Id); if (gameinfo == null) { using var loker = _redisRepository.Locker(KeyGenTool.GenUserKey(request.Id, GameInfo.ClassName)); loker.Lock(); gameinfo = await _gameRepository.FindAndAdd(request.Id, new GameInfo(request.Id, 0, 0, 0)); _ = _redisRepository.SetGameInfo(gameinfo); } WrappedResponse <GameInfo> response = new WrappedResponse <GameInfo>(ResponseStatus.Success, null, gameinfo); return(response); }
public async Task<BodyResponse<GameInfo>> Handle(GetGameInfoCommand request, CancellationToken cancellationToken) { GameInfo gameinfo = await _redis.GetGameInfo(request.Id); if (gameinfo == null) { using (var loker = _redis.Locker(KeyGenHelper .GenUserKey(request.Id, GameInfo.ClassName))) { loker.Lock(); gameinfo = await _gameRepository.FindAndAdd(request.Id, new GameInfo(request.Id, 0, 0, 0)); _ = _redis.SetGameInfo(gameinfo); } } BodyResponse<GameInfo> response = new BodyResponse<GameInfo>(StatusCodeDefines.Success, null, gameinfo); return response; }