whatismyip/server/tcp.go

47 lines
940 B
Go
Raw Permalink Normal View History

2023-03-20 15:33:45 +00:00
package server
import (
"context"
"errors"
"log"
"net/http"
"github.com/dcarrillo/whatismyip/internal/setting"
)
2024-03-23 16:41:34 +00:00
type TCP struct {
2023-03-20 15:33:45 +00:00
server *http.Server
handler *http.Handler
ctx context.Context
}
2024-03-23 16:41:34 +00:00
func NewTCPServer(ctx context.Context, handler *http.Handler) *TCP {
return &TCP{
2023-03-20 15:33:45 +00:00
handler: handler,
ctx: ctx,
}
}
2024-03-23 16:41:34 +00:00
func (t *TCP) Start() {
2023-03-20 15:33:45 +00:00
t.server = &http.Server{
Addr: setting.App.BindAddress,
Handler: *t.handler,
ReadTimeout: setting.App.Server.ReadTimeout,
WriteTimeout: setting.App.Server.WriteTimeout,
}
log.Printf("Starting TCP server listening on %s", setting.App.BindAddress)
go func() {
if err := t.server.ListenAndServe(); err != nil && !errors.Is(err, http.ErrServerClosed) {
log.Fatal(err)
}
}()
}
2024-03-23 16:41:34 +00:00
func (t *TCP) Stop() {
log.Printf("Stopping TCP server...")
2023-03-20 15:33:45 +00:00
if err := t.server.Shutdown(t.ctx); err != nil {
log.Printf("TCP server forced to shutdown: %s", err)
}
}