Skip to content

Commit

Permalink
feat: 支持向 server.Server 绑定一些数据
Browse files Browse the repository at this point in the history
  • Loading branch information
kercylan98 committed Jan 23, 2024
1 parent f08f068 commit acc4684
Showing 1 changed file with 23 additions and 0 deletions.
23 changes: 23 additions & 0 deletions server/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 // 侦听地址
Expand All @@ -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 {
Expand Down

0 comments on commit acc4684

Please sign in to comment.