diff --git a/server/options.go b/server/options.go index f7943a8..4772713 100644 --- a/server/options.go +++ b/server/options.go @@ -6,6 +6,7 @@ import ( "go.uber.org/zap" "google.golang.org/grpc" "reflect" + "time" ) const ( @@ -43,19 +44,23 @@ func WithTicker(size int, autonomy bool) Option { // - 通常情况下crossName仅需一个即可 func WithCross(crossName string, serverId int64, cross Cross) Option { return func(srv *Server) { - srv.id = serverId - if srv.cross == nil { - srv.cross = map[string]Cross{} + start: + { + srv.id = serverId + if srv.cross == nil { + srv.cross = map[string]Cross{} + } + srv.cross[crossName] = cross + err := cross.Init(srv, func(serverId int64, packet []byte) { + srv.PushMessage(MessageTypeCross, serverId, packet) + }) + if err != nil { + log.Info("Cross", zap.Int64("ServerID", serverId), zap.String("Cross", reflect.TypeOf(cross).String()), zap.String("State", "WaitNatsRun")) + time.Sleep(1 * time.Second) + goto start + } + log.Info("Cross", zap.Int64("ServerID", serverId), zap.String("Cross", reflect.TypeOf(cross).String())) } - srv.cross[crossName] = cross - err := cross.Init(srv, func(serverId int64, packet []byte) { - srv.PushMessage(MessageTypeCross, serverId, packet) - }) - if err != nil { - log.Error("WithCross", zap.Int64("ServerID", serverId), zap.String("Cross", reflect.TypeOf(cross).String())) - panic(err) - } - log.Info("Cross", zap.Int64("ServerID", serverId), zap.String("Cross", reflect.TypeOf(cross).String())) } } diff --git a/utils/log/log.go b/utils/log/log.go index 78128cb..bf7bc50 100644 --- a/utils/log/log.go +++ b/utils/log/log.go @@ -113,6 +113,10 @@ func Error(msg string, fields ...zap.Field) { fmt.Println(string(debug.Stack())) } +func ErrorHideStack(msg string, fields ...zap.Field) { + logger.Error(msg, fields...) +} + // ErrorWithStack 通过额外的堆栈信息打印错误日志 func ErrorWithStack(msg, stack string, fields ...zap.Field) { logger.Error(msg, fields...)