From 9e339065d453635dbc03d088a02634b829e104c6 Mon Sep 17 00:00:00 2001 From: kercylan98 Date: Sat, 21 Oct 2023 11:14:10 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20cross=20=E5=8C=85=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=99=A8=20id=20=E6=9B=B4=E6=94=B9=E4=B8=BA=20string=20?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/cross.go | 4 ++-- server/cross/message.go | 2 +- server/cross/nats.go | 6 +++--- server/event.go | 4 ++-- server/message.go | 6 +++--- server/options.go | 10 +++++----- server/server.go | 2 +- 7 files changed, 17 insertions(+), 17 deletions(-) diff --git a/server/cross.go b/server/cross.go index 346e520..ad77c2b 100644 --- a/server/cross.go +++ b/server/cross.go @@ -6,10 +6,10 @@ type Cross interface { // - serverId: 本服id // - packetHandle.serverId: 发送跨服消息的服务器id // - packetHandle.packet: 数据包 - Init(server *Server, packetHandle func(serverId int64, packet []byte)) error + Init(server *Server, packetHandle func(serverId string, packet []byte)) error // PushMessage 推送跨服消息 // - serverId: 目标服务器id - PushMessage(serverId int64, packet []byte) error + PushMessage(serverId string, packet []byte) error // Release 释放资源 Release() } diff --git a/server/cross/message.go b/server/cross/message.go index 337c225..17104ed 100644 --- a/server/cross/message.go +++ b/server/cross/message.go @@ -2,6 +2,6 @@ package cross // Message 跨服消息数据结构 type Message struct { - ServerId int64 `json:"server_id"` + ServerId string `json:"server_id"` Packet []byte `json:"packet"` } diff --git a/server/cross/nats.go b/server/cross/nats.go index 86ff5e4..e52c8ac 100644 --- a/server/cross/nats.go +++ b/server/cross/nats.go @@ -22,7 +22,7 @@ func NewNats(url string, options ...NatsOption) *Nats { messagePool: concurrent.NewPool[*Message](1024*100, func() *Message { return new(Message) }, func(data *Message) { - data.ServerId = 0 + data.ServerId = "" data.Packet = nil }), } @@ -41,7 +41,7 @@ type Nats struct { messagePool *concurrent.Pool[*Message] } -func (slf *Nats) Init(server *server.Server, packetHandle func(serverId int64, packet []byte)) (err error) { +func (slf *Nats) Init(server *server.Server, packetHandle func(serverId string, packet []byte)) (err error) { if slf.conn == nil { if len(slf.options) == 0 { slf.options = append(slf.options, @@ -72,7 +72,7 @@ func (slf *Nats) Init(server *server.Server, packetHandle func(serverId int64, p return err } -func (slf *Nats) PushMessage(serverId int64, packet []byte) error { +func (slf *Nats) PushMessage(serverId string, packet []byte) error { message := slf.messagePool.Get() defer slf.messagePool.Release(message) message.ServerId = serverId diff --git a/server/event.go b/server/event.go index 5999264..246bf88 100644 --- a/server/event.go +++ b/server/event.go @@ -19,7 +19,7 @@ type StopEventHandle func(srv *Server) type ConnectionReceivePacketEventHandle func(srv *Server, conn *Conn, packet []byte) type ConnectionOpenedEventHandle func(srv *Server, conn *Conn) type ConnectionClosedEventHandle func(srv *Server, conn *Conn, err any) -type ReceiveCrossPacketEventHandle func(srv *Server, senderServerId int64, packet []byte) +type ReceiveCrossPacketEventHandle func(srv *Server, senderServerId string, packet []byte) type MessageErrorEventHandle func(srv *Server, message *Message, err error) type MessageLowExecEventHandle func(srv *Server, message *Message, cost time.Duration) type ConsoleCommandEventHandle func(srv *Server) @@ -239,7 +239,7 @@ func (slf *event) RegReceiveCrossPacketEvent(handle ReceiveCrossPacketEventHandl log.Info("Server", log.String("RegEvent", runtimes.CurrentRunningFuncName()), log.String("handle", reflect.TypeOf(handle).String())) } -func (slf *event) OnReceiveCrossPacketEvent(serverId int64, packet []byte) { +func (slf *event) OnReceiveCrossPacketEvent(serverId string, packet []byte) { slf.receiveCrossPacketEventHandles.RangeValue(func(index int, value ReceiveCrossPacketEventHandle) bool { value(slf.Server, serverId, packet) return true diff --git a/server/message.go b/server/message.go index 933e188..d6078da 100644 --- a/server/message.go +++ b/server/message.go @@ -154,14 +154,14 @@ func PushErrorMessage(srv *Server, err error, action MessageErrorAction, mark .. } // GetCrossMessageAttrs 获取消息中的跨服属性 -func (slf *Message) GetCrossMessageAttrs() (serverId int64, packet []byte) { - serverId = slf.attrs[0].(int64) +func (slf *Message) GetCrossMessageAttrs() (serverId string, packet []byte) { + serverId = slf.attrs[0].(string) packet = slf.attrs[1].([]byte) return } // PushCrossMessage 向特定服务器中推送 MessageTypeCross 消息 -func PushCrossMessage(srv *Server, crossName string, serverId int64, packet []byte, mark ...any) { +func PushCrossMessage(srv *Server, crossName string, serverId string, packet []byte, mark ...any) { if serverId == srv.id { msg := srv.messagePool.Get() msg.t = MessageTypeCross diff --git a/server/options.go b/server/options.go index e2debab..5f7f918 100644 --- a/server/options.go +++ b/server/options.go @@ -31,7 +31,7 @@ type option struct { } type runtime struct { - id int64 // 服务器id + id string // 服务器id cross map[string]Cross // 跨服 deadlockDetect time.Duration // 是否开启死锁检测 supportMessageTypes map[int]bool // websocket模式下支持的消息类型 @@ -134,7 +134,7 @@ func WithTicker(size int, autonomy bool) Option { // WithCross 通过跨服的方式创建服务器 // - 推送跨服消息时,将推送到对应 crossName 的跨服中间件中,crossName 可以满足不同功能采用不同的跨服/消息中间件 // - 通常情况下 crossName 仅需一个即可 -func WithCross(crossName string, serverId int64, cross Cross) Option { +func WithCross(crossName string, serverId string, cross Cross) Option { return func(srv *Server) { start: { @@ -143,18 +143,18 @@ func WithCross(crossName string, serverId int64, cross Cross) Option { srv.cross = map[string]Cross{} } srv.cross[crossName] = cross - err := cross.Init(srv, func(serverId int64, packet []byte) { + err := cross.Init(srv, func(serverId string, packet []byte) { msg := srv.messagePool.Get() msg.t = MessageTypeCross msg.attrs = []any{serverId, packet} srv.pushMessage(msg) }) if err != nil { - log.Info("Cross", log.Int64("ServerID", serverId), log.String("Cross", reflect.TypeOf(cross).String()), log.String("State", "WaitNatsRun")) + log.Info("Cross", log.String("ServerID", serverId), log.String("Cross", reflect.TypeOf(cross).String()), log.String("State", "WaitNatsRun")) time.Sleep(1 * time.Second) goto start } - log.Info("Cross", log.Int64("ServerID", serverId), log.String("Cross", reflect.TypeOf(cross).String())) + log.Info("Cross", log.String("ServerID", serverId), log.String("Cross", reflect.TypeOf(cross).String())) } } } diff --git a/server/server.go b/server/server.go index 1ce45cf..3a5c1eb 100644 --- a/server/server.go +++ b/server/server.go @@ -440,7 +440,7 @@ func (slf *Server) CloseConn(id string) { } // GetID 获取服务器id -func (slf *Server) GetID() int64 { +func (slf *Server) GetID() string { if slf.cross == nil { panic(ErrNoSupportCross) }