Apply .gitignore rules

This commit is contained in:
皮蛋13361098506
2025-01-06 16:21:36 +08:00
parent 1b77f62820
commit ccd2c530cf
580 changed files with 69806 additions and 0 deletions

View File

@@ -0,0 +1,6 @@
package internal
import (
_ "logincenter/internal/game"
_ "logincenter/internal/user"
)

View File

@@ -0,0 +1,71 @@
package websocketUtil
import (
"errors"
"fmt"
"sync"
)
var (
wsmap sync.Map
errLog func(format string, args ...interface{})
debugLog func(format string, args ...interface{})
)
// SetLog
// @Description:设置日志回调函数信息
// @param errLogFun 错误日志回调函数
// @param debugLogFun debug日志回调函数
func SetLog(errLogFun, debugLogFun func(format string, args ...interface{})) {
errLog = errLogFun
debugLog = debugLogFun
}
// Send
// @Description: 发送数据
// @param wsurl 发送地址
// @param st 发送类型使用websocket下的定义
// @param data 发送数据
// @return error
func Send(wsurl string, st int, data []byte) error {
if debugLog == nil || errLog == nil {
return errors.New("websocketUtil未设置errLog,debugLog回调函数请调用websocketUtil.Setlog函数设置相关信息")
}
m, err := getOrAdd(wsurl)
if err != nil {
errLog(fmt.Sprintf("websocketUtil.Send error:%s", err))
return err
}
m.send(st, data)
return nil
}
// getOrAdd
// @Description:获取或者添加对象
// @param url string
// @return *model
// @return error
func getOrAdd(url string) (*model, error) {
var m *model
var err error
v, isOk := wsmap.Load(url)
if isOk {
m = v.(*model)
return m, nil
}
// 不存在创建对应的socket连接
m, err = newModel(url)
if err != nil {
return nil, err
}
// 保存到map
wsmap.Store(url, m)
return m, err
}

View File

@@ -0,0 +1,75 @@
package goroutineMgr
import (
"fmt"
"runtime"
"sync"
"framework/monitorNewMgr"
"goutil/logUtil"
)
var (
goroutineInfoMap map[string]int = make(map[string]int)
goroutineInfoMutex sync.RWMutex
goroutineWarnCount int = 50
)
func init() {
monitorNewMgr.RegisterMonitorFunc(monitor)
}
// 设置系统协程上报阈值
func SetGoroutineWarnCount(warnCount int) {
goroutineWarnCount = warnCount
}
func registerGoroutineInfo(goroutineName string, count int) {
goroutineInfoMutex.Lock()
defer goroutineInfoMutex.Unlock()
goroutineInfoMap[goroutineName] = count
}
// 监控指定的goroutine
func Monitor(goroutineName string) {
increaseCount(goroutineName)
registerGoroutineInfo(goroutineName, 1)
}
// 只添加数量,不监控
func MonitorZero(goroutineName string) {
increaseCount(goroutineName)
}
// 释放监控
func ReleaseMonitor(goroutineName string) {
if r := recover(); r != nil {
logUtil.LogUnknownError(r)
}
decreaseCount(goroutineName)
}
func monitor() error {
// 判断当前goroutine数量是否达到打印条件数量查过设置的值就打印
if goroutineWarnCount >= runtime.NumGoroutine() {
return nil
}
/*
先记录活跃的goroutine的数量信息
然后再判断数量是否匹配
*/
logGoroutineCountInfo()
goroutineInfoMutex.RLock()
defer goroutineInfoMutex.RUnlock()
for goroutineName, expectedCount := range goroutineInfoMap {
if currCount := getGoroutineCount(goroutineName); currCount != expectedCount {
return fmt.Errorf("%s需要%d个goroutine现在有%d个", goroutineName, expectedCount, currCount)
}
}
return nil
}