server/server_handlers.go

68 lines
1.5 KiB
Go
Raw Normal View History

2017-10-26 11:14:00 +00:00
package server
import (
"errors"
2017-11-29 03:46:40 +00:00
"fmt"
2017-10-26 11:14:00 +00:00
"net"
2017-11-29 03:46:40 +00:00
"git.loafle.net/commons_go/logging"
2017-10-26 11:14:00 +00:00
)
2017-11-15 04:16:31 +00:00
func NewServerHandler() ServerHandler {
sh := &ServerHandlers{}
return sh
2017-10-26 11:14:00 +00:00
}
2017-11-29 03:46:40 +00:00
type ServerHandlers struct {
// Server name for sending in response headers.
//
// Default server name is used if left blank.
Name string
SocketHandler SocketHandler
}
2017-11-29 00:51:41 +00:00
func (sh *ServerHandlers) ServerContext() ServerContext {
2017-11-29 00:57:03 +00:00
return newServerContext()
2017-10-27 08:53:26 +00:00
}
2017-11-29 00:51:41 +00:00
func (sh *ServerHandlers) Init(serverCTX ServerContext) error {
2017-11-29 03:46:40 +00:00
if err := sh.SocketHandler.Init(serverCTX); nil != err {
return err
}
return nil
2017-10-27 08:53:26 +00:00
}
2017-11-29 00:51:41 +00:00
func (sh *ServerHandlers) Listen(serverCTX ServerContext) (net.Listener, error) {
2017-10-26 11:14:00 +00:00
return nil, errors.New("Server: Handler method[Listen] of Server is not implement")
}
2017-11-29 05:11:11 +00:00
func (sh *ServerHandlers) OnStart(serverCTX ServerContext) {
// no op
}
2017-11-29 00:51:41 +00:00
func (sh *ServerHandlers) OnError(serverCTX ServerContext, conn net.Conn, status int, reason error) {
2017-11-29 03:46:40 +00:00
logging.Logger().Error(fmt.Sprintf("Server: error status: %d, reason: %v, [%v]", status, reason, conn))
2017-11-29 00:51:41 +00:00
}
2017-11-15 04:13:47 +00:00
// OnStop invoked when server is stopped
// If you override ths method, must call
2017-11-29 00:51:41 +00:00
func (sh *ServerHandlers) OnStop(serverCTX ServerContext) {
2017-11-29 03:46:40 +00:00
sh.SocketHandler.Destroy()
2017-11-29 00:51:41 +00:00
}
2017-11-15 04:13:47 +00:00
func (sh *ServerHandlers) GetName() string {
return sh.Name
2017-10-27 05:27:36 +00:00
}
2017-11-29 03:46:40 +00:00
func (sh *ServerHandlers) GetSocketHandler() SocketHandler {
return sh.SocketHandler
}
2017-10-26 11:14:00 +00:00
2017-11-29 03:46:40 +00:00
func (sh *ServerHandlers) Validate() {
if nil == sh.SocketHandler {
panic("Server: SocketHandler must be specified")
}
2017-10-26 11:14:00 +00:00
}