feat: 支持向 server.Server 绑定一些数据
This commit is contained in:
parent
f08f06891c
commit
acc468492f
|
@ -84,6 +84,7 @@ type Server struct {
|
||||||
systemSignal chan os.Signal // 系统信号
|
systemSignal chan os.Signal // 系统信号
|
||||||
closeChannel chan struct{} // 关闭信号
|
closeChannel chan struct{} // 关闭信号
|
||||||
multipleRuntimeErrorChan chan error // 多服务器模式下的运行时错误
|
multipleRuntimeErrorChan chan error // 多服务器模式下的运行时错误
|
||||||
|
data map[string]any // 服务器全局数据
|
||||||
|
|
||||||
messageCounter atomic.Int64 // 消息计数器
|
messageCounter atomic.Int64 // 消息计数器
|
||||||
addr string // 侦听地址
|
addr string // 侦听地址
|
||||||
|
@ -92,6 +93,28 @@ type Server struct {
|
||||||
services []func() // 服务
|
services []func() // 服务
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// LoadData 加载绑定的服务器数据
|
||||||
|
func LoadData[T any](srv *Server, name string, data any) T {
|
||||||
|
return srv.data[name].(T)
|
||||||
|
}
|
||||||
|
|
||||||
|
// BindData 绑定数据到特定服务器
|
||||||
|
func BindData(srv *Server, name string, data any) {
|
||||||
|
srv.BindData(name, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
// BindData 绑定数据到特定服务器
|
||||||
|
func (srv *Server) BindData(name string, data any) {
|
||||||
|
if srv.data == nil {
|
||||||
|
srv.data = map[string]any{}
|
||||||
|
}
|
||||||
|
_, exist := srv.data[name]
|
||||||
|
if exist {
|
||||||
|
panic(fmt.Errorf("data with duplicate names is bound, got: %s", name))
|
||||||
|
}
|
||||||
|
srv.data[name] = data
|
||||||
|
}
|
||||||
|
|
||||||
// preCheckAndAdaptation 预检查及适配
|
// preCheckAndAdaptation 预检查及适配
|
||||||
func (srv *Server) preCheckAndAdaptation(addr string) (startState <-chan error, err error) {
|
func (srv *Server) preCheckAndAdaptation(addr string) (startState <-chan error, err error) {
|
||||||
if srv.event == nil {
|
if srv.event == nil {
|
||||||
|
|
Loading…
Reference in New Issue