package socket import ( "sync/atomic" "git.loafle.net/commons/server-go" ) type ServerHandler interface { server.ServerHandler ReadWriteHandler } type ServerHandlers struct { server.ServerHandlers ReadWriteHandlers validated atomic.Value } func (sh *ServerHandlers) Validate() error { if nil != sh.validated.Load() { return nil } sh.validated.Store(true) if err := sh.ServerHandlers.Validate(); nil != err { return err } if err := sh.ReadWriteHandlers.Validate(); nil != err { return err } return nil }