ecs/servers/game/logic/manager_event.go

333 lines
11 KiB
Go
Raw Normal View History

2025-06-04 18:17:39 +08:00
package logic
//type reportEvent struct {
// req any
// path string
//}
//
//type gravityEvent struct {
// clientId string
// clientIp string
// event *gravity.Event
// reporter gravity.Reporter
//}
//
//type EventManager struct {
// manager
//
// wg sync.WaitGroup
//
// httpRpcClient *rpc.HttpRpcClient
//
// eventFuns int
// eventChan chan *reportEvent
//
// gravityEventFuns int
// gravityEventChan chan *gravityEvent
//}
//
//func NewEventManager(svr server.Server, rpcClient *rpc.HttpRpcClient) *EventManager {
// return &EventManager{manager: manager{logger: svr.Logger(), server: svr}, httpRpcClient: rpcClient}
//}
//
//func (this *EventManager) Init() error {
// this.eventChan = make(chan *reportEvent, 4096)
// this.gravityEventChan = make(chan *gravityEvent, 4096)
// for i := 0; i < 8; i++ {
// go this.eventHandler()
// }
// for i := 0; i < 8; i++ {
// go this.gravityEventHandler()
// }
// return nil
//}
//
//func (this *EventManager) Close() error {
// close(this.eventChan)
// close(this.gravityEventChan)
// this.wg.Wait()
// return nil
//}
//
//func (this *EventManager) eventHandler() {
// this.wg.Add(1)
// this.eventFuns += 1
// defer func() {
// this.wg.Done()
// this.eventFuns -= 1
// }()
// for {
// event, ok := <-this.eventChan
// if !ok {
// return
// }
//
// if this.logger.IsDebugEnabled() {
// this.logger.Debugf("Log event report, url: %s, req: %s", event.path, util.ToJsonString(event.req))
// }
//
// _, err := this.httpRpcClient.RandPost("event", event.path, nil, event.req, nil)
// if err != nil {
// this.logger.Error("Log event report failed, ", err)
// }
//
// if this.eventFuns > 8 && len(this.eventChan) < 2000 {
// return
// }
// }
//}
//
//func (this *EventManager) gravityEventHandler() {
// this.wg.Add(1)
// this.gravityEventFuns += 1
// defer func() {
// this.wg.Done()
// this.gravityEventFuns -= 1
// }()
// for {
// event, ok := <-this.gravityEventChan
// if !ok {
// return
// }
//
// if this.logger.IsDebugEnabled() {
// this.logger.Debugf("Gravity event report, clientId: %s, clientIp: %s, event: %s", event.clientId, event.clientIp, util.ToJsonString(event.event))
// }
// var err = event.reporter(event.clientId, event.clientIp, event.event)
// if err != nil {
// this.logger.Error("Gravity event report failed, ", err)
// }
//
// if this.gravityEventFuns > 8 && len(this.gravityEventChan) < 2000 {
// return
// }
// }
//}
//
//func (this *EventManager) reportEvent(path string, req any) {
// this.eventChan <- &reportEvent{req: req, path: path}
// if len(this.eventChan) > 4000 {
// this.logger.Warn("The log event channel is going to be full, length: ", len(this.eventChan))
// go this.eventHandler()
// }
//}
//
//func (this *EventManager) ServerOperate(logType LogType, serverId, operate uint32) {
// this.reportEvent("/log/server/operate", &proto.MsgEventServerOperateReq{
// LogType: uint32(logType),
// ServerId: serverId,
// Operate: operate,
// Version: server.Version(),
// ProgramHash: server.ProgramHash,
// DataHash: server.DataHash,
// ConfigHash: server.ConfigHash,
// })
//}
//
//func (this *EventManager) ServerOnline(logType LogType, serverId, create, online, offline, maxOnline uint32, maxOnlineTime int64) {
// this.reportEvent("/log/server/online", &proto.MsgEventServerOnlineReq{
// LogType: uint32(logType),
// ServerId: serverId,
// Create: create,
// Online: online,
// Offlines: offline,
// MaxOnline: maxOnline,
// MaxOnlineTime: maxOnlineTime,
// })
//}
//
//func (this *EventManager) buildEventPlayer(player *Player) *proto.EventPlayer {
// return &proto.EventPlayer{
// Platform: player.Platform,
// Channel: player.Channel,
// ServerId: player.ServerId,
// UserId: player.PlayerId,
// RoleId: player.PlayerId,
// Machine: player.Temp.Machine,
// Version: player.Temp.Version,
// }
//}
//
//func (this *EventManager) PlayerCommon(logType LogType, player *Player, param1, param2, param3 int32, paramStr string) {
// this.reportEvent("/log/player/common", &proto.MsgEventPlayerCommonReq{
// EventPlayer: this.buildEventPlayer(player),
// LogType: uint32(logType),
// Param1: param1,
// Param2: param2,
// Param3: param3,
// ParamStr: paramStr,
// })
//}
//
//func (this *EventManager) PlayerCreate(player *Player, logType LogType) {
// this.reportEvent("/log/player/create", &proto.MsgEventPlayerCreateReq{
// EventPlayer: this.buildEventPlayer(player),
// LogType: uint32(logType),
// })
//}
//
//func (this *EventManager) PlayerLogin(player *Player, logType LogType, optionType uint32, loginIp string) {
// this.reportEvent("/log/player/login", &proto.MsgEventPlayerLoginReq{
// EventPlayer: this.buildEventPlayer(player),
// LogType: uint32(logType),
// OptionType: optionType,
// LoginIp: loginIp,
// })
//}
//
//func (this *EventManager) PlayerRecharge(player *Player, logType LogType, chargeId uint32, currType uint32, count uint32, added uint32, logSubtype uint32, money uint32, addTime int64, status uint32) {
// this.reportEvent("/log/player/charge", &proto.MsgEventPlayerRechargeReq{
// EventPlayer: this.buildEventPlayer(player),
// LogType: uint32(logType),
// ChargeId: chargeId,
// CurrType: currType,
// Count: count,
// Added: added,
// LogSubtype: logSubtype,
// Money: money,
// AddTime: addTime,
// Status: status,
// })
//}
//
//func (this *EventManager) PlayerLevelUpgrade(player *Player, logType LogType, preLevel uint32, curLevel uint32) {
// this.reportEvent("/log/player/level/upgrade", &proto.MsgEventPlayerLevelUpgradeReq{
// EventPlayer: this.buildEventPlayer(player),
// LogType: uint32(logType),
// PreLevel: preLevel,
// CurLevel: curLevel,
// })
//}
//
//func (this *EventManager) PlayerItemObtain(player *Player, logType LogType, itemId, itemNum uint32) {
// this.reportEvent("/log/player/item/obtain", &proto.MsgEventPlayerItemObtainReq{
// EventPlayer: this.buildEventPlayer(player),
// LogType: uint32(logType),
// ItemId: itemId,
// ItemNum: itemNum,
// })
//}
//
//func (this *EventManager) PlayerItemConsume(player *Player, logType LogType, itemId, itemNum uint32) {
// this.reportEvent("/log/player/item/Consume", &proto.MsgEventPlayerItemConsumeReq{
// EventPlayer: this.buildEventPlayer(player),
// LogType: uint32(logType),
// ItemId: itemId,
// ItemNum: itemNum,
// })
//}
//
//func (this *EventManager) PlayerMoneyObtain(player *Player, logType LogType, moneyType, amount, curAmount uint32) {
// this.reportEvent("/log/player/money/obtain", &proto.MsgEventPlayerMoneyObtainReq{
// EventPlayer: this.buildEventPlayer(player),
// LogType: uint32(logType),
// MoneyType: moneyType,
// Amount: amount,
// CurAmount: curAmount,
// })
//}
//
//func (this *EventManager) PlayerMoneyConsume(player *Player, logType LogType, moneyType uint32, amount, curAmount uint32) {
// this.reportEvent("/log/player/money/consume", &proto.MsgEventPlayerMoneyConsumeReq{
// EventPlayer: this.buildEventPlayer(player),
// LogType: uint32(logType),
// MoneyType: moneyType,
// Amount: amount,
// CurAmount: curAmount,
// })
//}
//
//func (this *EventManager) PlayerMailLog(player *Player, logType LogType, mailId uint64, mailType, rewardType uint32, title, content string, itemId, itemNum []uint32, senderId uint64, senderTime int64) {
// var attachments []string
// for i := range itemId {
// attachments = append(attachments, fmt.Sprintf("%d,%d", itemId[i], itemNum[i]))
// }
// this.reportEvent("/log/player/mail", &proto.MsgEventPlayerMailLogReq{
// EventPlayer: this.buildEventPlayer(player),
// LogType: uint32(logType),
// MailId: mailId,
// MailType: mailType,
// RewardType: rewardType,
// Title: title,
// Content: content,
// Attachment: strings.Join(attachments, "|"),
// SenderId: senderId,
// SenderTime: senderTime,
// })
//}
//
//func (this *EventManager) PlayerTaskLog(player *Player, logType LogType, taskId uint32, param1, param2, param3 []int) {
// this.reportEvent("/log/player/task", &proto.MsgEventPlayerTaskLogReq{
// EventPlayer: this.buildEventPlayer(player),
// LogType: uint32(logType),
// TaskId: taskId,
// Param1: param1,
// Param2: param2,
// Param3: param3,
// })
//}
//
//func (this *EventManager) PlayerShopLog(player *Player, logType LogType, shopType, itemId, itemNum uint32, priceType int32, price uint32) {
// this.reportEvent("/log/player/shop", &proto.MsgEventPlayerShopLogReq{
// EventPlayer: this.buildEventPlayer(player),
// LogType: uint32(logType),
// ShopType: shopType,
// ItemId: itemId,
// ItemNum: itemNum,
// PriceType: priceType,
// Price: price,
// })
//}
//
//func (this *EventManager) PlayerActivity(player *Player, logType LogType, activityType, status uint32) {
// this.reportEvent("/log/player/activity", &proto.MsgEventPlayerActivityReq{
// EventPlayer: this.buildEventPlayer(player),
// LogType: uint32(logType),
// ActivityType: activityType,
// Status: status,
// })
//}
//
//func (this *EventManager) WechatGravityEvent(player *Player, event *gravity.Event) {
// this.gravityEventChan <- &gravityEvent{clientId: player.Username, clientIp: player.Temp.Address, event: event, reporter: gravity.WechatEventCollect}
// if len(this.gravityEventChan) > 4000 {
// this.logger.Warn("The gravity event channel is going to be full, length: ", len(this.gravityEventChan))
// go this.gravityEventHandler()
// }
//}
//
//func (this *EventManager) TapTapGravityEvent(player *Player, event *gravity.Event) {
// this.gravityEventChan <- &gravityEvent{clientId: player.Username, clientIp: player.Temp.Address, event: event, reporter: gravity.TapTapEventCollect}
// if len(this.gravityEventChan) > 4000 {
// this.logger.Warn("The gravity event channel is going to be full, length: ", len(this.gravityEventChan))
// go this.gravityEventHandler()
// }
//}
//
//func (this *EventManager) ChargeGravityEvent(player *Player, order *PlayerChargeOrder, chargeTable *data.Charge, chargeDesc *data.Language) {
// var properties = gravity.Properties{}
//
// properties.Add("lib_version", "1.0")
// properties.Add("lib", "api")
// properties.Add("system_language", "zh_CN")
// properties.Add("pay_amount", order.Price)
// properties.Add("pay_type", "CNY")
// properties.Add("order_id", order.Id)
// properties.Add("is_first_pay", false)
// properties.Add("ip", player.Temp.Address)
// if chargeDesc != nil {
// properties.Add("pay_reason", chargeDesc.Lang1)
// } else {
// properties.Add("pay_reason", util.IntegerToString(chargeTable.ItemName))
// }
//
// switch proto.PaymentType(order.PaymentType) {
// case proto.PaymentTypeQuickGameAndroid, proto.PaymentTypeQuickGameIOS:
// properties.Add("pay_method", "QuickGame")
// this.TapTapGravityEvent(player, gravity.NewEvent(gravity.EventTypeTrack, gravity.EventNameCharge, properties))
// case proto.PaymentTypeWechatVirtual2, proto.PaymentTypeWechatIOSPayment1:
// properties.Add("pay_method", "微信")
// this.WechatGravityEvent(player, gravity.NewEvent(gravity.EventTypeTrack, gravity.EventNameCharge, properties))
// }
//}