mirror of
https://gitee.com/XM-GO/PandaX.git
synced 2026-04-23 02:48:34 +08:00
59 lines
1.1 KiB
Go
59 lines
1.1 KiB
Go
package httpserver
|
|
|
|
import (
|
|
"context"
|
|
"github.com/emicklei/go-restful/v3"
|
|
"net/http"
|
|
"pandax/pkg/global"
|
|
)
|
|
|
|
const DefaultPort = ":9002"
|
|
|
|
type HttpServer struct {
|
|
Addr string
|
|
srv *http.Server
|
|
Container *restful.Container
|
|
}
|
|
|
|
func NewHttpServer(addr string) *HttpServer {
|
|
if addr == "" {
|
|
addr = DefaultPort
|
|
}
|
|
c := restful.NewContainer()
|
|
c.EnableContentEncoding(true)
|
|
return &HttpServer{
|
|
Addr: addr,
|
|
Container: c,
|
|
srv: &http.Server{
|
|
Addr: addr,
|
|
Handler: c,
|
|
},
|
|
}
|
|
}
|
|
|
|
func (s *HttpServer) GetServe() *http.Server {
|
|
return s.srv
|
|
}
|
|
|
|
func (s *HttpServer) Type() string {
|
|
return "HTTP"
|
|
}
|
|
|
|
func (s *HttpServer) Start(ctx context.Context) error {
|
|
if global.Conf.Server.Tls.Enable {
|
|
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 {
|
|
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 {
|
|
s.srv.Shutdown(ctx)
|
|
return nil
|
|
}
|