| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- package router
- import "strings"
- var (
- //消息对应的路由规则,消息流转
- routeByMsgName = map[string]*MsgRouteRule{}
- routeByMsgID = map[int]*MsgRouteRule{}
- )
- const (
- //1局部跨服 2全局跨服
- CrossMode_Type_Section = 1
- CrossMode_Type_Global = 2
- )
- //消息路由节点
- type MsgRouteRule struct {
- MsgName string //消息名称
- ServiceName string //路由到的服务器
- Mod string
- MsgID int
- CrossMode int32 //1局部跨服 2全局跨服
- }
- type MsgRouteList struct {
- Rules []*MsgRouteRule
- }
- //添加路由信息
- func AddRouteRule(rule *MsgRouteRule) {
- if rule.MsgID == 0 {
- panic("routerule msgid = 0, run MakeProto.sh please")
- }
- //是否需要跨服
- if strings.Contains(rule.Mod, "cross") {
- rule.CrossMode = CrossMode_Type_Section
- }
- if strings.Contains(rule.Mod, "gcross") {
- rule.CrossMode = CrossMode_Type_Global
- }
- routeByMsgName[rule.MsgName] = rule
- routeByMsgID[rule.MsgID] = rule
- }
- func ClearRuteRUle() {
- routeByMsgName = map[string]*MsgRouteRule{}
- routeByMsgID = map[int]*MsgRouteRule{}
- }
- func GetRuleByMsgID(msgId int) *MsgRouteRule {
- if rule, ok := routeByMsgID[msgId]; ok {
- return rule
- }
- return nil
- }
- func GetRuleByMsgName(msgName string) *MsgRouteRule {
- if rule, ok := routeByMsgName[msgName]; ok {
- return rule
- }
- return nil
- }
|