Esempio n. 1
0
        // 充值金额
        static async Task <string> RechargeNum(string time, string channelName)
        {
            if (string.IsNullOrEmpty(channelName))
            {
                DBProxyComponent    proxyComponent = Game.Scene.GetComponent <DBProxyComponent>();
                List <Log_Recharge> listData       = await proxyComponent.QueryJsonDBInfos <Log_Recharge>(time);

                int num = 0;
                for (int i = 0; i < listData.Count; i++)
                {
                    num += listData[i].Price;
                }

                return("充值金额:" + num + "\r\n");
            }
            else
            {
                DBProxyComponent    proxyComponent = Game.Scene.GetComponent <DBProxyComponent>();
                List <Log_Recharge> listData       = await proxyComponent.QueryJsonDBInfos <Log_Recharge>(time);

                int num = 0;
                for (int i = 0; i < listData.Count; i++)
                {
                    AccountInfo accountInfo = await DBCommonUtil.getAccountInfo(listData[i].Uid);

                    if (accountInfo.ChannelName.CompareTo(channelName) == 0)
                    {
                        num += listData[i].Price;
                    }
                }

                return("充值金额:" + num + "\r\n");
            }
        }
Esempio n. 2
0
        // 导入老用户
        static async Task <string> LoadOldUserCount(string time, string channelName)
        {
            if (string.IsNullOrEmpty(channelName))
            {
                DBProxyComponent       proxyComponent = Game.Scene.GetComponent <DBProxyComponent>();
                List <Log_OldUserBind> listData       = await proxyComponent.QueryJsonDBInfos <Log_OldUserBind>(time);

                return("导入老用户:" + listData.Count + "\r\n");
            }
            else
            {
                DBProxyComponent       proxyComponent = Game.Scene.GetComponent <DBProxyComponent>();
                List <Log_OldUserBind> listData       = await proxyComponent.QueryJsonDBInfos <Log_OldUserBind>(time);

                int count = 0;

                for (int i = 0; i < listData.Count; i++)
                {
                    AccountInfo accountInfo = await DBCommonUtil.getAccountInfo(listData[i].Uid);

                    if (accountInfo.ChannelName.CompareTo(channelName) == 0)
                    {
                        ++count;
                    }
                }

                return("导入老用户:" + count + "\r\n");
            }
        }
Esempio n. 3
0
        [Get] // url-> /Login?name=11&age=1111
        public async Task <HttpResult> BuyYuanBao(int orderId, long userId, int goodsId, int goodsNum, float price, string account, string password)
        {
            Log.Info($"web请求发元宝,orderId:{orderId},userId:{userId},goodsId:{goodsId},price:{price}");
            try
            {
                if (!"admin".Equals(account) || !"jinyou123".Equals(password))
                {
                    return(Error("账号错误"));
                }

                ShopConfig config = ConfigHelp.Get <ShopConfig>(goodsId);

                if (config == null)
                {
                    return(Error("goodsId错误"));
                }

                if (price != config.Price)
                {
                    return(Error("支付的价格不正确"));
                }

                await DBCommonUtil.UserRecharge(orderId, userId, goodsId, goodsNum, price);

                return(Ok());
            }
            catch (Exception e)
            {
                Log.Error(e);
                return(Error());
            }
        }
        protected override async void Run(Session session, C2G_GetTaskReward message, Action <G2C_GetTaskReward> reply)
        {
            G2C_GetTaskReward response = new G2C_GetTaskReward();

            try
            {
                DBProxyComponent proxyComponent = Game.Scene.GetComponent <DBProxyComponent>();
                //1,任务;2,成就
                if (message.GetType == 1)
                {
                    List <TaskProgressInfo> taskProgressInfoList = await proxyComponent.QueryJson <TaskProgressInfo>($"{{UId:{message.UId},TaskId:{message.TaskInfo.Id}}}");

                    if (taskProgressInfoList.Count > 0)
                    {
                        if (!taskProgressInfoList[0].IsComplete)
                        {
                            response.Error   = ErrorCode.TaskNotComplete;
                            response.Message = "任务还未完成,不能领取奖励";
                            taskProgressInfoList[0].IsGet = false;
                            await proxyComponent.Save(taskProgressInfoList[0]);
                        }
                        else
                        {
                            taskProgressInfoList[0].IsGet = true;
                            await DBCommonUtil.ChangeWealth(message.UId, 1, message.TaskInfo.Reward, "任务奖励");

                            await proxyComponent.Save(taskProgressInfoList[0]);
                        }
                    }
                }
                else if (message.GetType == 2)
                {
                    List <ChengjiuInfo> chengjiuInfoList = await proxyComponent.QueryJson <ChengjiuInfo>($"{{UId:{message.UId},TaskId:{message.TaskInfo.Id}}}");

                    if (chengjiuInfoList.Count > 0)
                    {
                        if (!chengjiuInfoList[0].IsComplete)
                        {
                            response.Error            = ErrorCode.TaskNotComplete;
                            response.Message          = "成就任务还未完成,不能领取奖励";
                            chengjiuInfoList[0].IsGet = false;
                            await proxyComponent.Save(chengjiuInfoList[0]);
                        }
                        else
                        {
                            chengjiuInfoList[0].IsGet = true;
                            await DBCommonUtil.ChangeWealth(message.UId, 1, message.TaskInfo.Reward, "成就奖励");

                            await proxyComponent.Save(chengjiuInfoList[0]);
                        }
                    }
                }
                reply(response);
            }
            catch (Exception e)
            {
                ReplyError(response, e, reply);
            }
        }
        protected override async void Run(Session session, C2G_FriendRoomInfo message, Action <G2C_FriendRoomInfo> reply)
        {
            G2C_FriendRoomInfo response = new G2C_FriendRoomInfo();

            try
            {
                //获取房间信息
                DBProxyComponent      proxyComponent = Game.Scene.GetComponent <DBProxyComponent>();
                User                  user           = session.GetComponent <SessionUserComponent>().User;
                List <PlayerBaseInfo> playerInfoList = await proxyComponent.QueryJson <PlayerBaseInfo>($"{{_id:{message.UId}}}");

                if (playerInfoList.Count > 0)
                {
                    response.Score = playerInfoList[0].Score;
                    if (!playerInfoList[0].IsGiveFriendKey)
                    {
                        string endTime = CommonUtil.timeAddDays(CommonUtil.getCurDataNormalFormat(), 1);

                        //每天赠送好友房钥匙
                        await DBCommonUtil.AddFriendKey(message.UId, 3, endTime, "每天赠送3把好友房钥匙");

                        playerInfoList[0].IsGiveFriendKey = true;
                        response.IsGiveFriendKey          = true;
                        Log.Debug(response.IsGiveFriendKey + "bool");
                        await proxyComponent.Save(playerInfoList[0]);
                    }
                    else
                    {
                        //今天已经赠送好友房钥匙
                    }
                }

                {
                    //向map服务器发送请求
                    ConfigComponent      configCom     = Game.Scene.GetComponent <ConfigComponent>();
                    StartConfigComponent _config       = Game.Scene.GetComponent <StartConfigComponent>();
                    IPEndPoint           mapIPEndPoint = _config.MapConfigs[0].GetComponent <InnerConfig>().IPEndPoint;
                    Session mapSession = Game.Scene.GetComponent <NetInnerComponent>().Get(mapIPEndPoint);

                    M2G_FriendRoomInfo m2GFriendRoomInfo = (M2G_FriendRoomInfo)await mapSession.Call(new G2M_FriendRoomInfo()
                    {
                    });

                    response.Info = m2GFriendRoomInfo.Info;

                    int keyCount = await DBCommonUtil.GetUserFriendKeyNum(message.UId);

                    response.KeyCount = keyCount;
                }

                reply(response);
            }
            catch (Exception e)
            {
                ReplyError(response, e, reply);
            }
        }
Esempio n. 6
0
        /// <summary>
        /// 创建玩家对象
        /// </summary>
        /// <param name="playerId"></param>
        /// <param name="userId"></param>
        /// <returns></returns>
        public static async Task <Gamer> Create(long playerId, long userId, long?id = null)
        {
            Gamer gamer = ComponentFactory.CreateWithId <Gamer, long>(id ?? IdGenerater.GenerateId(), userId);

            gamer.PlayerID       = playerId;
            gamer.isOffline      = false;
            gamer.playerBaseInfo = await DBCommonUtil.getPlayerBaseInfo(userId);

            return(gamer);
        }
Esempio n. 7
0
        /// <summary>
        /// 发货接口
        /// </summary>
        /// <param name="orderId"></param>
        /// <param name="userId"></param>
        /// <param name="goodsId"></param>
        /// <param name="goodsNum"></param>
        /// <param name="price"></param>
        public static async Task UserRecharge(int orderId, long userId, int goodsId, int goodsNum, float price)
        {
            try
            {
                string           reward         = "";
                DBProxyComponent proxyComponent = Game.Scene.GetComponent <DBProxyComponent>();
                ShopConfig       config         = ConfigHelp.Get <ShopConfig>(goodsId);

                List <Log_Recharge> log_Recharge = await proxyComponent.QueryJson <Log_Recharge>($"{{Uid:{userId}}}");

                if (log_Recharge.Count == 0)
                {
                    reward = "1:120000;105:20;104:1;107:1";
                    await DBCommonUtil.changeWealthWithStr(userId, reward, "首充奖励");
                }

                reward = config.Items;

                await DBCommonUtil.changeWealthWithStr(userId, reward, "购买元宝");

                //向gate服务器发送请求
                StartConfigComponent startConfig    = Game.Scene.GetComponent <StartConfigComponent>();
                IPEndPoint           gateIPEndPoint = startConfig.GateConfigs[0].GetComponent <InnerConfig>().IPEndPoint;
                Session gateSession = Game.Scene.GetComponent <NetInnerComponent>().Get(gateIPEndPoint);

                G2H_GamerCharge g2HGamerCharge = (G2H_GamerCharge)await gateSession.Call(new H2G_GamerCharge()
                {
                    goodsId = goodsId,
                    UId     = userId
                });

//                UserComponent userComponent = Game.Scene.GetComponent<UserComponent>();
//                User user = userComponent.Get(userId);
//                //给玩家发送消息
//                user?.session?.Send(new Actor_GamerBuyYuanBao()
//                {
//                    goodsId = goodsId
//                });

                // 记录日志
                {
                    Log_Recharge log_recharge = ComponentFactory.CreateWithId <Log_Recharge>(IdGenerater.GenerateId());
                    log_recharge.Uid     = userId;
                    log_recharge.GoodsId = config.Id;
                    log_recharge.Price   = config.Price;
                    log_recharge.OrderId = orderId;
                    await proxyComponent.Save(log_recharge);
                }
            }
            catch (Exception e)
            {
                Log.Error(e);
            }
        }
Esempio n. 8
0
        protected override async void Run(Session session, C2G_GetWeekReward message, Action <G2C_GetWeekReward> reply)
        {
            G2C_GetWeekReward response = new G2C_GetWeekReward();

            try
            {
                DBProxyComponent proxyComponent = Game.Scene.GetComponent <DBProxyComponent>();
                List <WeekRank>  weeks          = await proxyComponent.QueryJson <WeekRank>($"{{UId:{message.UId}}}");

                if (weeks.Count > 0)
                {
                    if (message.type == 1)
                    {
                        if (weeks[0].IsGetGoldRank)
                        {
                            await DBCommonUtil.changeWealthWithStr(message.UId, GetReward(1, weeks[0].GoldIndex), "领取周财富榜奖励" + GetReward(1, weeks[0].GoldIndex));

                            weeks[0].IsGetGoldRank = false;
                            response.GoldReward    = int.Parse(GetReward(1, weeks[0].GoldIndex).Split(':')[1]);
                            await proxyComponent.Save(weeks[0]);
                        }
                    }
                    else if (message.type == 2)
                    {
                        if (weeks[0].IsGetGameRank)
                        {
                            await DBCommonUtil.changeWealthWithStr(message.UId, GetReward(2, weeks[0].GameIndex), "领取周战绩榜奖励" + GetReward(2, weeks[0].GameIndex));

                            weeks[0].IsGetGameRank = false;
                            response.GameReward    = int.Parse(GetReward(2, weeks[0].GameIndex).Split(':')[1]);
                            await proxyComponent.Save(weeks[0]);
                        }
                    }
                }
                else
                {
                    response.Error   = ErrorCode.ERR_Exception;
                    response.Message = "该用户不存在weekRank记录,请检查";
                }

                response.IsGetGameRank = weeks[0].IsGetGameRank;
                response.IsGetGoldRank = weeks[0].IsGetGoldRank;

                reply(response);
            }
            catch (Exception e)
            {
                ReplyError(response, e, reply);
            }
        }
Esempio n. 9
0
        protected override async void Run(Session session, C2G_ChangeWealth message, Action <G2C_ChangeWealth> reply)
        {
            G2C_ChangeWealth response = new G2C_ChangeWealth();

            try
            {
                await DBCommonUtil.ChangeWealth(message.UId, message.propId, message.propNum, "C2G_ChangeWealthHandler调用");

                reply(response);
            }
            catch (Exception e)
            {
                ReplyError(response, e, reply);
            }
        }
Esempio n. 10
0
        protected override async void Run(Session session, C2G_RealName message, Action <G2C_RealName> reply)
        {
            G2C_RealName response = new G2C_RealName();

            try
            {
                DBProxyComponent proxyComponent = Game.Scene.GetComponent <DBProxyComponent>();
                List <RealName>  dailySigns     = await proxyComponent.QueryJson <RealName>($"{{Uid:{message.Uid}}}");

                if (dailySigns.Count > 0)
                {
                    // 已经实名过
                    response.Error   = ErrorCode.TodayHasSign;
                    response.Message = "您已实名认证,请勿重复认证";
                    reply(response);

                    return;
                }
                else
                {
                    reply(response);

                    RealName realName = ComponentFactory.CreateWithId <RealName>(IdGenerater.GenerateId());
                    realName.Uid      = message.Uid;
                    realName.Name     = message.Name;
                    realName.IDNumber = message.IDNumber;
                    await proxyComponent.Save(realName);

                    List <PlayerBaseInfo> playerBaseInfos = await proxyComponent.QueryJson <PlayerBaseInfo>($"{{_id:{message.Uid}}}");

                    if (playerBaseInfos.Count > 0)
                    {
                        playerBaseInfos[0].IsRealName = true;
                        await proxyComponent.Save(playerBaseInfos[0]);

                        // 发放实名奖励
                        {
                            await DBCommonUtil.changeWealthWithStr(message.Uid, "1:3000", "实名认证奖励");
                        }
                    }
                }
            }
            catch (Exception e)
            {
                ReplyError(response, e, reply);
            }
        }
Esempio n. 11
0
        /// <summary>
        /// 记录玩家数据
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="totalSeconds"></param>
        /// <returns></returns>
        public static async Task RecordGamerInfo(long userId, int totalSeconds)
        {
            DBProxyComponent proxyComponent  = Game.Scene.GetComponent <DBProxyComponent>();
            ConfigComponent  configComponent = Game.Scene.GetComponent <ConfigComponent>();

            List <GamerInfoDB> gamerInfos = await proxyComponent.QueryJson <GamerInfoDB>($"{{UId:{userId}}}");

            GamerInfoDB gamerInfo;

            if (gamerInfos.Count == 0)
            {
                gamerInfo = ComponentFactory.CreateWithId <GamerInfoDB>(IdGenerater.GenerateId());
            }
            else
            {
                gamerInfo = gamerInfos[0];
            }

            gamerInfo.UId              = userId;
            gamerInfo.DailyOnlineTime += totalSeconds;
            gamerInfo.TotalOnlineTime += totalSeconds;

            TreasureConfig treasureConfig =
                configComponent.Get(typeof(TreasureConfig), ++gamerInfo.DailyTreasureCount) as TreasureConfig;

//            Log.Debug(gamerInfo.DailyTreasureCount + "");
//            Log.Debug(JsonHelper.ToJson(treasureConfig));


            if (gamerInfo.DailyOnlineTime > treasureConfig?.TotalTime)
            {
                gamerInfo.DailyOnlineTime = treasureConfig.TotalTime;
            }

            --gamerInfo.DailyTreasureCount;

            await proxyComponent.Save(gamerInfo);

            //记录玩家在线时长
            await DBCommonUtil.UpdateChengjiu(userId, 107, totalSeconds);

            await DBCommonUtil.UpdateChengjiu(userId, 108, totalSeconds);

            await DBCommonUtil.UpdateChengjiu(userId, 109, totalSeconds);
        }
Esempio n. 12
0
        private static async Task UpdateTask(Room room)
        {
            GameControllerComponent controllerComponent = room.GetComponent <GameControllerComponent>();
            var dbProxyComponent = Game.Scene.GetComponent <DBProxyComponent>();

            foreach (var gamer in room.GetAll())
            {
                if (gamer == null)
                {
                    continue;
                }
//                Log.Debug(str_list.Count + "");
                //胜利
                if (gamer.UserID == room.huPaiUid)
                {
                    if (controllerComponent.RoomName == RoomName.ChuJi)
                    {
//                        Log.Debug("新手场SHENGLI");
                        //	102	新手场	在新手场赢得10场胜利	1000	10
                        await DBCommonUtil.UpdateTask(gamer.UserID, 102, 1);
                    }
                    else if (controllerComponent.RoomName == RoomName.JingYing)
                    {
//                        Log.Debug("精英场SHENGLI");
                        //	103	精英场	在精英场赢得30场胜利	100000	30
                        await DBCommonUtil.UpdateTask(gamer.UserID, 103, 1);
                    }

//                    Log.Debug("	连赢5场");
                    //	104	游戏高手	连赢5场	10000	5
                    await DBCommonUtil.UpdateTask(gamer.UserID, 104, 1);
                }
                //输了
                else
                {
//                    Log.Debug("SHULE");
                    //	104	游戏高手	连赢5场	10000	5
                    await DBCommonUtil.UpdateTask(gamer.UserID, 104, -1);
                }

                //101  新的征程	完成一局游戏	100	1
                await DBCommonUtil.UpdateTask(gamer.UserID, 101, 1);
            }
        }
Esempio n. 13
0
        protected override async void Run(Session session, C2G_BagOperation message, Action <G2C_BagOperation> reply)
        {
            G2C_BagOperation response = new G2C_BagOperation();

            try
            {
                DBProxyComponent proxyComponent = Game.Scene.GetComponent <DBProxyComponent>();
                List <UserBag>   bagInfoList    = await proxyComponent.QueryJson <UserBag>($"{{UId:{message.UId}}}");

                response.ItemList = new List <Bag>();
                List <Bag> itemList = new List <Bag>();
                for (int i = 0; i < bagInfoList.Count; ++i)
                {
                    if (bagInfoList[i].Count <= 0)
                    {
                        continue;
                    }
                    Bag item = new Bag();
                    item.ItemId = bagInfoList[i].BagId;
                    item.Count  = bagInfoList[i].Count;
                    itemList.Add(item);
                }


                int fKeyCount = await DBCommonUtil.GetUserFriendKeyNum(message.UId);

                if (fKeyCount > 0)
                {
                    Bag keyItem = new Bag();
                    keyItem.ItemId = 112;
                    keyItem.Count  = fKeyCount;
                    itemList.Add(keyItem);
                }

                response.ItemList = itemList;
                reply(response);
            }
            catch (Exception e)
            {
                ReplyError(response, e, reply);
            }
        }
Esempio n. 14
0
        private static async Task UpdatePlayerInfo(Room room, int huaCount)
        {
            foreach (var gamer in room.GetAll())
            {
                if (gamer == null)
                {
                    continue;
                }
                //胜利
                if (gamer.UserID == room.huPaiUid)
                {
//                    Log.Debug("玩家:" + gamer.UserID + "胜利");
                    await DBCommonUtil.UpdatePlayerInfo(gamer.UserID, huaCount, true);
                }
                else
                {
//                    Log.Debug("玩家:" + gamer.UserID + "失败");
                    await DBCommonUtil.UpdatePlayerInfo(gamer.UserID, 0);
                }
            }
        }
Esempio n. 15
0
        private static async void UpdateTask(Gamer gamer, int amount)
        {
            //	105	赚钱高手	当日累计赢取10000金币	10000	10000
            await DBCommonUtil.UpdateTask(gamer.UserID, 105, amount);

            // 110 小试身手 单局赢取10000金币满 100局
            if (amount >= 10000)
            {
                await DBCommonUtil.UpdateChengjiu(gamer.UserID, 110, 1);
            }
            // 111 来者不拒 单局赢取100万金币满 100局
            if (amount >= 1000000)
            {
                await DBCommonUtil.UpdateChengjiu(gamer.UserID, 111, 1);
            }
            // 112 富豪克星 单局赢取一亿金币满 100局
            if (amount >= 100000000)
            {
                await DBCommonUtil.UpdateChengjiu(gamer.UserID, 112, 1);
            }
        }
Esempio n. 16
0
        private static async Task UpdateChengjiu(Room room)
        {
//            Log.Debug("更新成就:房间ID为:" + room.Id);
            foreach (var gamer in room.GetAll())
            {
                if (gamer == null)
                {
                    Log.Error("更新成就的时候game为null");
                    continue;
                }

                //胜利
                if (gamer.UserID == room.huPaiUid)
                {
//                    Log.Debug("成就胜利");
                    //赢得10局游戏
                    await DBCommonUtil.UpdateChengjiu(gamer.UserID, 104, 1);

                    //赢得100局游戏
                    await DBCommonUtil.UpdateChengjiu(gamer.UserID, 105, 1);

                    //赢得1000局游戏
                    await DBCommonUtil.UpdateChengjiu(gamer.UserID, 106, 1);
                }

                //新手上路 完后10局游戏
                await DBCommonUtil.UpdateChengjiu(gamer.UserID, 101, 1);

//                Log.Debug("不论输赢都会加一" + gamer.UserID + "任务" + 101);
                //已有小成 完成100局游戏
                await DBCommonUtil.UpdateChengjiu(gamer.UserID, 102, 1);

//                Log.Debug("不论输赢都会加一" + gamer.UserID + "任务" + 102);
                //完成1000局游戏
                await DBCommonUtil.UpdateChengjiu(gamer.UserID, 103, 1);

//                Log.Debug("不论输赢都会加一" + gamer.UserID + "任务" + 103);
            }
        }
Esempio n. 17
0
        protected override async void Run(Session session, C2G_CreateFriendRoom message, Action <G2C_CreateFriendRoom> reply)
        {
            G2C_CreateFriendRoom response = new G2C_CreateFriendRoom();

            try
            {
                User user     = session.GetComponent <SessionUserComponent>().User;
                int  keyCount = await DBCommonUtil.GetUserFriendKeyNum(user.UserID);

                if (keyCount < message.FriendRoomInfo.KeyCount)
                {
                    response.Error   = ErrorCode.ERR_Common;
                    response.Message = "钥匙数量不够!";
                    reply(response);
                    return;
                }
                //向map服务器发送请求
                StartConfigComponent config        = Game.Scene.GetComponent <StartConfigComponent>();
                IPEndPoint           mapIPEndPoint = config.MapConfigs[0].GetComponent <InnerConfig>().IPEndPoint;
                Session mapSession = Game.Scene.GetComponent <NetInnerComponent>().Get(mapIPEndPoint);

                M2G_CreateFriendRoom m2G_CreateFriendRoom = (M2G_CreateFriendRoom)await mapSession.Call(new G2M_CreateFriendRoom()
                {
                    UserId         = message.UserId,
                    FriendRoomInfo = message.FriendRoomInfo
                });

                response.RoomId  = m2G_CreateFriendRoom.RoomId;
                response.Error   = m2G_CreateFriendRoom.Error;
                response.Message = m2G_CreateFriendRoom.Message;
                reply(response);
            }
            catch (Exception e)
            {
                ReplyError(response, e, reply);
            }

            await Task.CompletedTask;
        }
Esempio n. 18
0
        protected override async void Run(Session session, C2G_UseItem message, Action <G2C_UseItem> reply)
        {
            G2C_UseItem response = new G2C_UseItem();

            try
            {
                DBProxyComponent proxyComponent = Game.Scene.GetComponent <DBProxyComponent>();
                List <UserBag>   itemInfos      = await proxyComponent.QueryJson <UserBag>($"{{UId:{message.UId},BagId:{message.ItemId}}}");

                if (itemInfos.Count <= 0)
                {
                    response.Message = "您的道具数量不足";
                    response.result  = 0;
                }
                else
                {
                    if (itemInfos[0].Count > 0)
                    {
                        await DBCommonUtil.ChangeWealth(message.UId, itemInfos[0].BagId, -1, "使用背包道具");

                        response.result = 1;
                        await useProp(response, message.UId, message.ItemId);
                    }
                    else
                    {
                        response.Message = "您的道具数量不足";
                        response.result  = 0;
                    }
                }

                reply(response);
            }
            catch (Exception e)
            {
                ReplyError(response, e, reply);
            }
        }