mirror of
https://gitee.com/XM-GO/PandaX.git
synced 2026-04-23 02:48:34 +08:00
67 lines
1.3 KiB
Go
67 lines
1.3 KiB
Go
package transport
|
|
|
|
import (
|
|
"context"
|
|
"net/http"
|
|
"pandax/pkg/global"
|
|
|
|
"github.com/emicklei/go-restful/v3"
|
|
)
|
|
|
|
type HttpServer struct {
|
|
Addr string
|
|
srv *http.Server
|
|
|
|
Container *restful.Container
|
|
}
|
|
|
|
func NewHttpServer(addr string) *HttpServer {
|
|
c := restful.NewContainer()
|
|
c.EnableContentEncoding(true)
|
|
restful.TraceLogger(&httpLog{})
|
|
restful.SetLogger(&httpLog{})
|
|
return &HttpServer{
|
|
Addr: addr,
|
|
Container: c,
|
|
srv: &http.Server{
|
|
Addr: addr,
|
|
Handler: c,
|
|
},
|
|
}
|
|
}
|
|
|
|
func (s *HttpServer) Type() Type {
|
|
return TypeHTTP
|
|
}
|
|
|
|
func (s *HttpServer) Start(ctx context.Context) error {
|
|
go func() {
|
|
if global.Conf.Server.Tls.Enable {
|
|
global.Log.Infof("HTTPS Server listen: %s", s.Addr)
|
|
if err := s.srv.ListenAndServeTLS(global.Conf.Server.Tls.CertFile, global.Conf.Server.Tls.KeyFile); err != nil {
|
|
global.Log.Errorf("error http serve: %s", err)
|
|
}
|
|
} else {
|
|
global.Log.Infof("HTTP Server listen: %s", s.Addr)
|
|
if err := s.srv.ListenAndServe(); err != nil {
|
|
global.Log.Errorf("error http serve: %s", err)
|
|
}
|
|
}
|
|
}()
|
|
return nil
|
|
}
|
|
|
|
func (s *HttpServer) Stop(ctx context.Context) error {
|
|
return s.srv.Shutdown(ctx)
|
|
}
|
|
|
|
type httpLog struct{}
|
|
|
|
func (t *httpLog) Print(v ...any) {
|
|
global.Log.Debug(v...)
|
|
}
|
|
|
|
func (t *httpLog) Printf(format string, v ...any) {
|
|
global.Log.Debugf(format, v...)
|
|
}
|