package handler import ( "github.com/oylshe1314/framework/client/rpc" "github.com/oylshe1314/framework/server" ) type InnerHandler struct { *Handler httpRpcClient rpc.HttpRpcClient } func NewInnerHandler(srv server.Server, httpRpcClient rpc.HttpRpcClient) *InnerHandler { return &InnerHandler{Handler: newHandler(srv), httpRpcClient: httpRpcClient} } // //func (this *InnerHandler) ServerDetect(msg *http.Message) { // var req = new(old.MsgServerDetectReq) // var err = msg.Read(req) // if err != nil { // this.logger.Error("Read message error, ", err) // _ = msg.Reply(proto.ErrMessageError) // return // } // // if this.logger.IsDebugEnabled() { // this.logger.Debugf("[%s] <- ServerDetect, req: %s", msg.R.RemoteAddr, util.ToJsonString(req)) // } // // var list []*old.ServerDetectData // for _, serverDetect := range req.List { // var detectAck = new(message.MsgServerDetectAck) // reply, err := this.httpRpcClient.AppIdGet(serverDetect.Name, serverDetect.AppId, "/server/detect", nil, detectAck) // if err != nil { // this.logger.Warnf("[%s:%d] -> Server detect error, %v", serverDetect.Name, serverDetect.AppId, err) // continue // } // // if reply.Status != errors.StatusSuccessful { // this.logger.Warnf("[%s:%d] -> Server detect failed, %v", serverDetect.Name, serverDetect.AppId, reply.Message) // continue // } // // var detectData = &old.ServerDetectData{ // ServerDetect: old.ServerDetect{ // Name: serverDetect.Name, // AppId: serverDetect.AppId, // }, // ProgramHash: detectAck.ProgramHash, // DataHash: detectAck.DataHash, // ConfigHash: detectAck.ConfigHash, // Pid: detectAck.Pid, // CPU: detectAck.CPU, // Memory: detectAck.Memory, // Coroutine: uint32(detectAck.Coroutine), // Info: detectAck.Info, // } // // if serverDetect.Name == "game_1" { // var onlineAck = new(old.MsgServerOnlineAck) // reply, err = this.httpRpcClient.AppIdGet(serverDetect.Name, serverDetect.AppId, "/server/online", nil, onlineAck) // if err != nil { // this.logger.Warnf("[%s:%d:/server/online] -> Get server online error, %v", serverDetect.Name, serverDetect.AppId, err) // } else { // if reply.Status != errors.StatusSuccessful { // this.logger.Warnf("[%s:%d] -> Get server online failed, %v", serverDetect.Name, serverDetect.AppId, reply.Message) // } else { // detectData.Online = onlineAck.Online // } // } // } // // list = append(list, detectData) // } // // var ack = &old.MsgServerDetectAck{List: list} // // if this.logger.IsDebugEnabled() { // this.logger.Debugf("[%s] -> ServerDetect, ack: %s", msg.R.RemoteAddr, util.ToJsonString(ack)) // } // // _ = msg.Reply(ack) //} // //func (this *InnerHandler) GateSettingGet(msg *http.Message) { // if this.logger.IsDebugEnabled() { // this.logger.Debugf("[%s] <- GateSettingGet, req: %s", msg.R.RemoteAddr, util.ToJsonString(nil)) // } // // var ack = new(old.MsgGateSettingGetAck) // reply, err := this.httpRpcClient.RandGet("gate", "/setting/get", nil, ack) // if err != nil { // this.logger.Error("[gate:0] -> Get setting error, ", err) // _ = msg.Reply(proto.RawErrInternalError) // return // } // // if reply.Status != errors.StatusSuccessful { // this.logger.Error("[gate:0] -> Get setting error, ", reply.Message) // _ = msg.Reply(proto.RawErrInternalError) // return // } // // if this.logger.IsDebugEnabled() { // this.logger.Debugf("[%s] -> GateSettingGet, ack: %s", msg.R.RemoteAddr, util.ToJsonString(ack)) // } // // _ = msg.Reply(ack) //} // //func (this *InnerHandler) GateSettingSave(msg *http.Message) { // var req = new(old.MsgGateSettingSaveReq) // var err = msg.Read(req) // if err != nil { // this.logger.Error("Read message error, ", err) // _ = msg.Reply(proto.RawErrMessageError) // return // } // // if this.logger.IsDebugEnabled() { // this.logger.Debugf("[%s] <- GateSettingGet, req: %s", msg.R.RemoteAddr, util.ToJsonString(req)) // } // // reply, err := this.httpRpcClient.RandPost("gate", "/setting/save", nil, req, nil) // if err != nil { // this.logger.Error("[gate:0] -> Save setting error, ", err) // _ = msg.Reply(proto.RawErrInternalError) // return // } // // if reply.Status != errors.StatusSuccessful { // this.logger.Error("[gate:0] -> Save setting error, ", reply.Message) // _ = msg.Reply(proto.RawErrInternalError) // return // } // // if this.logger.IsDebugEnabled() { // this.logger.Debugf("[%s] -> GateSettingGet, ack: %s", msg.R.RemoteAddr, util.ToJsonString(nil)) // } // // _ = msg.Reply(nil) //} // //func (this *InnerHandler) GateUserQuery(msg *http.Message) { // var req = new(old.MsgUserQueryReq) // var err = msg.Read(req) // if err != nil { // this.logger.Error("Read message error, ", err) // _ = msg.Reply(proto.RawErrMessageError) // return // } // // if this.logger.IsDebugEnabled() { // this.logger.Debugf("[%s] <- GateUserQuery, req: %s", msg.R.RemoteAddr, util.ToJsonString(req)) // } // // var query = url.Values{} // query.Add("pageNo", util.IntegerToString(req.PageNo)) // query.Add("pageSize", util.IntegerToString(req.PageSize)) // if req.Channel != 0 { // query.Add("channel", util.IntegerToString(req.Channel)) // } // if req.UserId > 0 { // query.Add("userId", util.IntegerToString(req.UserId)) // } // // reply, err := this.httpRpcClient.RandGet("gate", "/user/query", query, new(old.MsgUserQueryAck)) // if err != nil { // this.logger.Error("Gate get cdkey error, ", err) // _ = msg.Reply(proto.RawErrInternalError) // return // } // // if this.logger.IsDebugEnabled() { // this.logger.Debugf("[%s] -> GateUserQuery, reply: %s", msg.R.RemoteAddr, util.ToJsonString(reply)) // } // // _ = msg.Reply(reply) //} // //func (this *InnerHandler) GateUserOperate(msg *http.Message) { // var req = new(old.MsgUserOperateReq) // var err = msg.Read(req) // if err != nil { // this.logger.Error("Read message error, ", err) // _ = msg.Reply(proto.RawErrMessageError) // return // } // // if this.logger.IsDebugEnabled() { // this.logger.Debugf("[%s] <- GateUserOperate, req: %s", msg.R.RemoteAddr, util.ToJsonString(req)) // } // // reply, err := this.httpRpcClient.RandPost("gate", "/user/operate", nil, req, new(old.MsgUserQueryAck)) // if err != nil { // this.logger.Error("Gate get cdkey error, ", err) // _ = msg.Reply(proto.RawErrInternalError) // return // } // // if this.logger.IsDebugEnabled() { // this.logger.Debugf("[%s] -> GateUserOperate, reply: %s", msg.R.RemoteAddr, util.ToJsonString(reply)) // } // // _ = msg.Reply(reply) //} // //func (this *InnerHandler) GateCdkeyGet(msg *http.Message) { // var req = new(old.MsgCdkeyGetReq) // var err = msg.Read(req) // if err != nil { // this.logger.Error("Read message error, ", err) // _ = msg.Reply(proto.RawErrMessageError) // return // } // // if this.logger.IsDebugEnabled() { // this.logger.Debugf("[%s] <- GateCdkeyGet, req: %s", msg.R.RemoteAddr, util.ToJsonString(req)) // } // // var query = url.Values{} // query.Add("key", req.Key) // // var ack = new(old.MsgCdkeyGetAck) // reply, err := this.httpRpcClient.RandGet("gate", "/cdkey/get", query, ack) // if err != nil { // this.logger.Error("Gate get cdkey error, ", err) // _ = msg.Reply(proto.RawErrInternalError) // return // } // // if this.logger.IsDebugEnabled() { // this.logger.Debugf("[%s] -> GateCdkeyGet, reply: %s", msg.R.RemoteAddr, util.ToJsonString(reply)) // } // // _ = msg.Reply(reply) //} // //func (this *InnerHandler) GateCdkeyList(msg *http.Message) { // var req = new(old.MsgCdkeyListReq) // var err = msg.Read(req) // if err != nil { // this.logger.Error("Read message error, ", err) // _ = msg.Reply(proto.RawErrMessageError) // return // } // // if this.logger.IsDebugEnabled() { // this.logger.Debugf("[%s] <- GateCdkeyList, req: %s", msg.R.RemoteAddr, util.ToJsonString(req)) // } // // var query = url.Values{} // query.Add("pageNo", util.IntegerToString(req.PageNo)) // query.Add("pageSize", util.IntegerToString(req.PageSize)) // if req.Channel != 0 { // query.Add("channel", util.IntegerToString(req.Channel)) // } // // reply, err := this.httpRpcClient.RandGet("gate", "/cdkey/list", query, new(old.MsgCdkeyListAck)) // if err != nil { // this.logger.Error("Gate get cdkey error, ", err) // _ = msg.Reply(proto.RawErrInternalError) // return // } // // if this.logger.IsDebugEnabled() { // this.logger.Debugf("[%s] -> GateCdkeyList, reply: %s", msg.R.RemoteAddr, util.ToJsonString(reply)) // } // // _ = msg.Reply(reply) //} // //func (this *InnerHandler) GateCdkeyAdd(msg *http.Message) { // var req = new(old.MsgCdkeyAddReq) // var err = msg.Read(req) // if err != nil { // this.logger.Error("Read message error, ", err) // _ = msg.Reply(proto.RawErrMessageError) // return // } // // if this.logger.IsDebugEnabled() { // this.logger.Debugf("[%s] <- GateCdkeyAdd, req: %s", msg.R.RemoteAddr, util.ToJsonString(req)) // } // // reply, err := this.httpRpcClient.RandPost("gate", "/cdkey/add", nil, req, new(old.MsgCdkeyAddAck)) // if err != nil { // this.logger.Error("Gate get cdkey error, ", err) // _ = msg.Reply(proto.RawErrInternalError) // return // } // // if this.logger.IsDebugEnabled() { // this.logger.Debugf("[%s] -> GateCdkeyAdd, reply: %s", msg.R.RemoteAddr, util.ToJsonString(reply)) // } // // _ = msg.Reply(reply) //} // //func (this *InnerHandler) GateCdkeyGenerate(msg *http.Message) { // var req = new(old.MsgCdkeyGenerateReq) // var err = msg.Read(req) // if err != nil { // this.logger.Error("Read message error, ", err) // _ = msg.Reply(proto.RawErrMessageError) // return // } // // if this.logger.IsDebugEnabled() { // this.logger.Debugf("[%s] <- GateCdkeyAdd, req: %s", msg.R.RemoteAddr, util.ToJsonString(req)) // } // // reply, err := this.httpRpcClient.RandPost("gate", "/cdkey/generate", nil, req, new(old.MsgCdkeyGenerateAck)) // if err != nil { // this.logger.Error("Gate get cdkey error, ", err) // _ = msg.Reply(proto.RawErrInternalError) // return // } // // if this.logger.IsDebugEnabled() { // this.logger.Debugf("[%s] -> GateCdkeyAdd, reply: %s", msg.R.RemoteAddr, util.ToJsonString(reply)) // } // // _ = msg.Reply(reply) //} // //func (this *InnerHandler) GateCdkeyDelete(msg *http.Message) { // var req = new(old.MsgCdkeyDeleteReq) // var err = msg.Read(req) // if err != nil { // this.logger.Error("Read message error, ", err) // _ = msg.Reply(proto.RawErrMessageError) // return // } // // if this.logger.IsDebugEnabled() { // this.logger.Debugf("[%s] <- GateCdkeyAdd, req: %s", msg.R.RemoteAddr, util.ToJsonString(req)) // } // // reply, err := this.httpRpcClient.RandPost("gate", "/cdkey/delete", nil, req, nil) // if err != nil { // this.logger.Error("Gate get cdkey error, ", err) // _ = msg.Reply(proto.RawErrInternalError) // return // } // // if this.logger.IsDebugEnabled() { // this.logger.Debugf("[%s] -> GateCdkeyDelete, reply: %s", msg.R.RemoteAddr, util.ToJsonString(reply)) // } // // _ = msg.Reply(reply) //} // //func (this *InnerHandler) GameDataReload(msg *http.Message) { // var serverReplies []*old.ServerReply // ar, err := this.httpRpcClient.AllPost("game_1", "/server/data/reload", nil, nil, nil) // if err != nil { // this.logger.Errorf("Http get error, error: %v", err) // _ = msg.Reply(proto.RawErrInternalError) // return // } // // for appId, result := range ar { // if result.Err != nil { // this.logger.Errorf("Http post error, appId: %d, error: %v", appId, result.Err) // serverReplies = append(serverReplies, &old.ServerReply{AppId: appId, Status: -1, Message: result.Err.Error()}) // } else { // if result.Res.Status != errors.StatusSuccessful { // this.logger.Errorf("Http post failed, appId: %d, message: %s", appId, result.Res.Message) // } // serverReplies = append(serverReplies, &old.ServerReply{AppId: appId, Status: 0, Message: result.Res.Message}) // } // } // // var ack = &old.MsgGameDataReloadAck{ServerReplies: serverReplies} // // if this.logger.IsDebugEnabled() { // this.logger.Debugf("[%s] -> GameDataReload, ack: %s", msg.R.RemoteAddr, util.ToJsonString(ack)) // } // // _ = msg.Reply(ack) //} // //func (this *InnerHandler) GameMailList(msg *http.Message) { // var req = new(old.MsgGameMailListReq) // var err = msg.Read(req) // if err != nil { // this.logger.Error("Read message error, ", err) // _ = msg.Reply(proto.RawErrMessageError) // return // } // // if this.logger.IsDebugEnabled() { // this.logger.Debugf("[%s] <- GameMailList, req: %s", msg.R.RemoteAddr, util.ToJsonString(req)) // } // // var serverReplies []*old.ServerMailList // if req.AppId == 0 { // ar, err := this.httpRpcClient.AllGet("game_1", "/server/mail/list", nil, new(old.MsgRegionMailListAck)) // if err != nil { // this.logger.Errorf("Http get error, error: %v", err) // _ = msg.Reply(proto.RawErrInternalError) // return // } // // for appId, result := range ar { // if result.Err != nil { // this.logger.Errorf("Http get error, appId: %d, error: %v", appId, err) // serverReplies = append(serverReplies, &old.ServerMailList{ServerReply: old.ServerReply{AppId: appId, Status: -1, Message: result.Err.Error()}}) // continue // } // // if result.Res.Status != errors.StatusSuccessful { // this.logger.Errorf("Http get failed, appId: %d, message: %s", appId, result.Res.Message) // serverReplies = append(serverReplies, &old.ServerMailList{ServerReply: old.ServerReply{AppId: appId, Status: result.Res.Status, Message: result.Res.Message}}) // continue // } // // serverReplies = append(serverReplies, &old.ServerMailList{ // ServerReply: old.ServerReply{AppId: appId, Status: 0, Message: result.Res.Message}, // MailList: result.Res.Data.(*old.MsgRegionMailListAck).List, // }) // } // } else { // reply, err := this.httpRpcClient.AppIdGet("game_1", req.AppId, "/server/mail/list", nil, new(old.MsgRegionMailListAck)) // if err != nil { // this.logger.Errorf("Http get error, appId: %d, error: %v", req.AppId, err) // _ = msg.Reply(proto.RawErrInternalError) // return // } else { // if reply.Status != errors.StatusSuccessful { // this.logger.Errorf("Http get failed, appId: %d, message: %s", req.AppId, reply.Message) // serverReplies = append(serverReplies, &old.ServerMailList{ServerReply: old.ServerReply{AppId: req.AppId, Status: reply.Status, Message: reply.Message}}) // } else { // serverReplies = append(serverReplies, &old.ServerMailList{ // ServerReply: old.ServerReply{AppId: req.AppId, Status: 0, Message: reply.Message}, // MailList: reply.Data.(*old.MsgRegionMailListAck).List, // }) // } // } // } // // var ack = &old.MsgGameMailListAck{ServerReplies: serverReplies} // // if this.logger.IsDebugEnabled() { // this.logger.Debugf("[%s] -> GameMailList, ack: %s", msg.R.RemoteAddr, util.ToJsonString(ack)) // } // // _ = msg.Reply(ack) //} // //func (this *InnerHandler) GameMailSend(msg *http.Message) { // var req = new(old.MsgGameMailSendReq) // var err = msg.Read(req) // if err != nil { // this.logger.Error("Read message error, ", err) // _ = msg.Reply(err) // return // } // // if this.logger.IsDebugEnabled() { // this.logger.Debugf("[%s] <- GameMailSend, req: %s", msg.R.RemoteAddr, util.ToJsonString(req)) // } // // var serverReplies []*old.ServerReply // if len(req.PlayerIds) == 0 { //没有玩家ID发全服邮件 // if len(req.AppIds) == 0 { // ar, err := this.httpRpcClient.AllPost("game_1", "/server/mail/send", nil, &old.MsgRegionMailSendReq{BackMail: req.BackMail}, new(old.MsgRegionMailSendAck)) // if err != nil { // this.logger.Errorf("Http get error, error: %v", err) // _ = msg.Reply(proto.RawErrInternalError) // return // } // // for appId, result := range ar { // if result.Err != nil { // this.logger.Errorf("Http post error, appId: %d, error: %v", appId, result.Err) // serverReplies = append(serverReplies, &old.ServerReply{AppId: appId, Status: -1, Message: result.Err.Error()}) // } else { // if result.Res.Status != errors.StatusSuccessful { // this.logger.Errorf("Http post failed, appId: %d, message: %s", appId, result.Res.Message) // } // serverReplies = append(serverReplies, &old.ServerReply{AppId: appId, Status: 0, Message: result.Res.Message}) // } // } // } else { // for _, appId := range req.AppIds { // reply, err := this.httpRpcClient.AppIdPost("game_1", appId, "/server/mail/send", nil, &old.MsgRegionMailSendReq{BackMail: req.BackMail}, nil) // if err != nil { // this.logger.Errorf("Http post error, appId: %d, error: %v", appId, err) // serverReplies = append(serverReplies, &old.ServerReply{AppId: appId, Status: -1, Message: err.Error()}) // return // } else { // if reply.Status != errors.StatusSuccessful { // this.logger.Errorf("Http post failed, appId: %d, message: %s", appId, reply.Message) // } // // serverReplies = append(serverReplies, &old.ServerReply{AppId: appId, Status: 0, Message: reply.Message}) // } // } // } // } else { //发送玩家邮件 // if len(req.AppIds) == 0 { // this.logger.Error("Parameter error, len(req.AppIds) == 0") // _ = msg.Reply(proto.RawErrParameterError) // return // } // // var header = client.HttpHeader{} // for _, playerId := range req.PlayerIds { // header.Add("PlayerId", util.IntegerToString(playerId)) // } // // for _, appId := range req.AppIds { // reply, err := this.httpRpcClient.AppIdPost("game_1", appId, "/player/mail/send", nil, &old.MsgRegionMailSendReq{BackMail: req.BackMail}, nil, header) // if err != nil { // this.logger.Errorf("Http post error, appId: %d, error: %v", appId, err) // serverReplies = append(serverReplies, &old.ServerReply{AppId: appId, Status: -1, Message: err.Error()}) // return // } else { // if reply.Status != errors.StatusSuccessful { // this.logger.Errorf("Http post failed, appId: %d, message: %s", appId, reply.Message) // } // // serverReplies = append(serverReplies, &old.ServerReply{AppId: appId, Status: reply.Status, Message: reply.Message}) // } // } // } // // var ack = &old.MsgGameMailSendAck{ServerReplies: serverReplies} // // if this.logger.IsDebugEnabled() { // this.logger.Debugf("[%s] -> GameMailSend, ack: %s", msg.R.RemoteAddr, util.ToJsonString(ack)) // } // // _ = msg.Reply(ack) //} // //func (this *InnerHandler) GameMailDelete(msg *http.Message) { // var req = new(old.MsgGameMailDeleteReq) // var err = msg.Read(req) // if err != nil { // this.logger.Error("Read message error, ", err) // _ = msg.Reply(err) // return // } // // if this.logger.IsDebugEnabled() { // this.logger.Debugf("[%s] <- GameMailDelete, req: %s", msg.R.RemoteAddr, util.ToJsonString(req)) // } // // var serverReplies []*old.ServerReply // for _, selectedIds := range req.SelectedLists { // reply, err := this.httpRpcClient.AppIdPost("game_1", selectedIds.AppId, "/server/mail/delete", nil, &old.MsgRegionMailDeleteReq{Ids: selectedIds.Ids}, nil) // if err != nil { // this.logger.Errorf("Http post error, appId: %d, error: %v", selectedIds.AppId, err) // serverReplies = append(serverReplies, &old.ServerReply{AppId: selectedIds.AppId, Status: -1, Message: err.Error()}) // return // } else { // if reply.Status != errors.StatusSuccessful { // this.logger.Errorf("Http post failed, appId: %d, message: %s", selectedIds.AppId, reply.Message) // } // // serverReplies = append(serverReplies, &old.ServerReply{AppId: selectedIds.AppId, Status: reply.Status, Message: reply.Message}) // } // } // // var ack = &old.MsgGameMailDeleteAck{ServerReplies: serverReplies} // // if this.logger.IsDebugEnabled() { // this.logger.Debugf("[%s] -> GameMailDelete, ack: %s", msg.R.RemoteAddr, util.ToJsonString(ack)) // } // // _ = msg.Reply(ack) //} // //func (this *InnerHandler) GamePlayerQuery(msg *http.Message) { // var req = new(old.MsgGamePlayerQueryReq) // var err = msg.Read(req) // if err != nil { // this.logger.Error("Read message error, ", err) // _ = msg.Reply(proto.RawErrMessageError) // return // } // // if this.logger.IsDebugEnabled() { // this.logger.Debug("[%s] <- ServerPlayerQuery, req: ", msg.R.RemoteAddr, util.ToJsonString(req)) // } // // if req.AppId == 0 || req.PlayerId == 0 { // this.logger.Error("Parameter error, req.AppId == 0 || req.PlayerId == 0") // _ = msg.Reply(proto.RawErrParameterError) // return // } // // var query = url.Values{} // query.Add("playerId", util.IntegerToString(req.PlayerId)) // // reply, err := this.httpRpcClient.AppIdGet("game_1", req.AppId, "/server/player/query", query, new(old.MsgPlayerQueryAck)) // if err != nil { // this.logger.Error("Game player query error, ", err) // _ = msg.Reply(proto.RawErrInternalError) // return // } // // if this.logger.IsDebugEnabled() { // this.logger.Debugf("[%s] -> ServerPlayerQuery, reply: %s", msg.R.RemoteAddr, util.ToJsonString(reply)) // } // // _ = msg.Reply(reply) //} // //func (this *InnerHandler) GamePlayerOperate(msg *http.Message) { // var req = new(old.MsgGamePlayerOperateReq) // var err = msg.Read(req) // if err != nil { // this.logger.Error("Read message error, ", err) // _ = msg.Reply(proto.RawErrMessageError) // return // } // // if this.logger.IsDebugEnabled() { // this.logger.Debug("[%s] <- GamePlayerOperate, req: ", msg.R.RemoteAddr, util.ToJsonString(req)) // } // // if req.AppId == 0 || req.PlayerId == 0 || (req.OperateType != 1 && req.OperateType != 2 && req.OperateType != 3) { // this.logger.Error("Parameter error, req.AppId == 0 || req.PlayerId == 0") // _ = msg.Reply(proto.RawErrParameterError) // return // } // // reply, err := this.httpRpcClient.AppIdPost("game_1", req.AppId, "/server/player/operate", nil, &old.MsgPlayerOperateReq{PlayerId: req.PlayerId, OperateType: req.OperateType, OperateArg: req.OperateArg}, new(old.MsgPlayerOperateAck)) // if err != nil { // this.logger.Error("Game player operate error, ", err) // _ = msg.Reply(proto.RawErrInternalError) // return // } // // if this.logger.IsDebugEnabled() { // this.logger.Debugf("[%s] -> GamePlayerOperate, reply: %s", msg.R.RemoteAddr, util.ToJsonString(reply)) // } // // _ = msg.Reply(reply) //}