package server type ServerHandler interface { ConnectionHandler ReadWriteHandler GetName() string ServerCtx() ServerCtx Init(serverCtx ServerCtx) error OnStart(serverCtx ServerCtx) error OnStop(serverCtx ServerCtx) Destroy(serverCtx ServerCtx) Validate() error } type ServerHandlers struct { ServerHandler ConnectionHandlers ReadWriteHandlers // Server name for sending in response headers. // // Default server name is used if left blank. Name string } func (sh *ServerHandlers) ServerCtx() ServerCtx { return NewServerCtx(nil) } func (sh *ServerHandlers) Init(serverCtx ServerCtx) error { return nil } func (sh *ServerHandlers) OnStart(serverCtx ServerCtx) error { return nil } func (sh *ServerHandlers) OnStop(serverCtx ServerCtx) { } func (sh *ServerHandlers) Destroy(serverCtx ServerCtx) { } func (sh *ServerHandlers) GetName() string { return sh.Name } func (sh *ServerHandlers) Validate() error { if err := sh.ConnectionHandlers.Validate(); nil != err { return err } if err := sh.ReadWriteHandlers.Validate(); nil != err { return err } if "" == sh.Name { sh.Name = "Server" } return nil }