feat: 支持向 server.Server 绑定一些数据
This commit is contained in:
parent
f08f06891c
commit
acc468492f
|
@ -84,6 +84,7 @@ type Server struct {
|
|||
systemSignal chan os.Signal // 系统信号
|
||||
closeChannel chan struct{} // 关闭信号
|
||||
multipleRuntimeErrorChan chan error // 多服务器模式下的运行时错误
|
||||
data map[string]any // 服务器全局数据
|
||||
|
||||
messageCounter atomic.Int64 // 消息计数器
|
||||
addr string // 侦听地址
|
||||
|
@ -92,6 +93,28 @@ type Server struct {
|
|||
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 预检查及适配
|
||||
func (srv *Server) preCheckAndAdaptation(addr string) (startState <-chan error, err error) {
|
||||
if srv.event == nil {
|
||||
|
|
Loading…
Reference in New Issue