moved server initialization
This commit is contained in:
parent
278ef8c991
commit
f9ef25b285
60
main.go
60
main.go
@ -9,22 +9,18 @@ import (
|
|||||||
"backend/src/core/services"
|
"backend/src/core/services"
|
||||||
"backend/src/core/utils"
|
"backend/src/core/utils"
|
||||||
"backend/src/logger"
|
"backend/src/logger"
|
||||||
"backend/src/server/handlers"
|
"backend/src/server"
|
||||||
"backend/src/server/middleware"
|
|
||||||
"context"
|
"context"
|
||||||
"crypto/rsa"
|
"crypto/rsa"
|
||||||
"crypto/x509"
|
"crypto/x509"
|
||||||
"database/sql"
|
"database/sql"
|
||||||
"encoding/pem"
|
"encoding/pem"
|
||||||
"fmt"
|
|
||||||
"net"
|
|
||||||
"os"
|
"os"
|
||||||
"os/signal"
|
"os/signal"
|
||||||
"runtime/pprof"
|
"runtime/pprof"
|
||||||
"syscall"
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/gin-gonic/gin"
|
|
||||||
"github.com/jackc/pgx"
|
"github.com/jackc/pgx"
|
||||||
"github.com/jackc/pgx/stdlib"
|
"github.com/jackc/pgx/stdlib"
|
||||||
)
|
)
|
||||||
@ -135,32 +131,6 @@ func main() {
|
|||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
// if !debugMode {
|
|
||||||
gin.SetMode(gin.ReleaseMode)
|
|
||||||
// }
|
|
||||||
|
|
||||||
r := gin.New()
|
|
||||||
r.Use(middleware.NewRequestLogMiddleware(logger))
|
|
||||||
r.Use(gin.Recovery())
|
|
||||||
|
|
||||||
r.Static("/webapp", "./webapp")
|
|
||||||
|
|
||||||
r.GET("/pooling", handlers.NewLongPoolingHandler(clientNotifier))
|
|
||||||
|
|
||||||
linkGroup := r.Group("/s")
|
|
||||||
linkGroup.POST("/new", handlers.NewShortlinkCreateHandler(linkService))
|
|
||||||
linkGroup.GET("/:linkId", handlers.NewShortlinkResolveHandler(linkService))
|
|
||||||
|
|
||||||
userGroup := r.Group("/user")
|
|
||||||
userGroup.POST("/create", handlers.NewUserCreateHandler(userService))
|
|
||||||
userGroup.POST("/login", handlers.NewUserLoginHandler(userService))
|
|
||||||
|
|
||||||
dummyGroup := r.Group("/dummy")
|
|
||||||
{
|
|
||||||
dummyGroup.Use(middleware.NewAuthMiddleware(userService))
|
|
||||||
dummyGroup.GET("", handlers.NewDummyHandler())
|
|
||||||
}
|
|
||||||
|
|
||||||
if args.GetProfilePath() != "" {
|
if args.GetProfilePath() != "" {
|
||||||
pprofFile, err := os.Create(args.GetProfilePath())
|
pprofFile, err := os.Create(args.GetProfilePath())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -177,22 +147,14 @@ func main() {
|
|||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
|
|
||||||
listenAddr := fmt.Sprintf(":%d", conf.GetPort())
|
srv := server.New(
|
||||||
logger.Log().Msgf("server listening on %s", listenAddr)
|
server.NewServerOpts{
|
||||||
|
DebugMode: debugMode,
|
||||||
listener, err := (&net.ListenConfig{}).Listen(ctx, "tcp", listenAddr)
|
Logger: logger,
|
||||||
if err != nil {
|
Notifier: clientNotifier,
|
||||||
logger.Fatal().Err(err).Msg("can not create network listener")
|
ShortlinkService: linkService,
|
||||||
}
|
UserService: userService,
|
||||||
|
},
|
||||||
go func() {
|
)
|
||||||
<-ctx.Done()
|
srv.Run(ctx, conf.GetPort())
|
||||||
logger.Log().Msg("stopping tcp listener...")
|
|
||||||
listener.Close()
|
|
||||||
}()
|
|
||||||
|
|
||||||
err = r.RunListener(listener)
|
|
||||||
if err != nil && err == net.ErrClosed {
|
|
||||||
logger.Fatal().Err(err).Msg("server stopped with error")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
81
src/server/server.go
Normal file
81
src/server/server.go
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
package server
|
||||||
|
|
||||||
|
import (
|
||||||
|
"backend/src/client_notifier"
|
||||||
|
"backend/src/core/services"
|
||||||
|
"backend/src/logger"
|
||||||
|
"backend/src/server/handlers"
|
||||||
|
"backend/src/server/middleware"
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
"net"
|
||||||
|
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Server struct {
|
||||||
|
logger logger.Logger
|
||||||
|
ginEngine *gin.Engine
|
||||||
|
}
|
||||||
|
|
||||||
|
type NewServerOpts struct {
|
||||||
|
DebugMode bool
|
||||||
|
Logger logger.Logger
|
||||||
|
Notifier client_notifier.ClientNotifier
|
||||||
|
UserService services.UserService
|
||||||
|
ShortlinkService services.ShortlinkService
|
||||||
|
}
|
||||||
|
|
||||||
|
func New(opts NewServerOpts) *Server {
|
||||||
|
if !opts.DebugMode {
|
||||||
|
gin.SetMode(gin.ReleaseMode)
|
||||||
|
}
|
||||||
|
|
||||||
|
r := gin.New()
|
||||||
|
r.Use(middleware.NewRequestLogMiddleware(opts.Logger))
|
||||||
|
r.Use(gin.Recovery())
|
||||||
|
|
||||||
|
r.Static("/webapp", "./webapp")
|
||||||
|
|
||||||
|
r.GET("/pooling", handlers.NewLongPoolingHandler(opts.Notifier))
|
||||||
|
|
||||||
|
linkGroup := r.Group("/s")
|
||||||
|
linkGroup.POST("/new", handlers.NewShortlinkCreateHandler(opts.ShortlinkService))
|
||||||
|
linkGroup.GET("/:linkId", handlers.NewShortlinkResolveHandler(opts.ShortlinkService))
|
||||||
|
|
||||||
|
userGroup := r.Group("/user")
|
||||||
|
userGroup.POST("/create", handlers.NewUserCreateHandler(opts.UserService))
|
||||||
|
userGroup.POST("/login", handlers.NewUserLoginHandler(opts.UserService))
|
||||||
|
|
||||||
|
dummyGroup := r.Group("/dummy")
|
||||||
|
{
|
||||||
|
dummyGroup.Use(middleware.NewAuthMiddleware(opts.UserService))
|
||||||
|
dummyGroup.GET("", handlers.NewDummyHandler())
|
||||||
|
}
|
||||||
|
|
||||||
|
return &Server{
|
||||||
|
logger: opts.Logger,
|
||||||
|
ginEngine: r,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Server) Run(ctx context.Context, port uint16) {
|
||||||
|
listenAddr := fmt.Sprintf(":%d", port)
|
||||||
|
s.logger.Log().Msgf("server listening on %s", listenAddr)
|
||||||
|
|
||||||
|
listener, err := (&net.ListenConfig{}).Listen(ctx, "tcp", listenAddr)
|
||||||
|
if err != nil {
|
||||||
|
s.logger.Fatal().Err(err).Msg("can not create network listener")
|
||||||
|
}
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
<-ctx.Done()
|
||||||
|
s.logger.Log().Msg("stopping tcp listener...")
|
||||||
|
listener.Close()
|
||||||
|
}()
|
||||||
|
|
||||||
|
err = s.ginEngine.RunListener(listener)
|
||||||
|
if err != nil && err == net.ErrClosed {
|
||||||
|
s.logger.Fatal().Err(err).Msg("server stopped with error")
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user