Beispiel #1
0
        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;
       }