22package  server
33
44import  (
5+ 	"fmt" 
56	"log/slog" 
6- 	"sync" 
77
88	"github.com/nalgeon/redka" 
99	"github.com/tidwall/redcon" 
@@ -15,7 +15,6 @@ type Server struct {
1515	addr  string 
1616	srv   * redcon.Server 
1717	db    * redka.DB 
18- 	wg    * sync.WaitGroup 
1918}
2019
2120// New creates a new Redka server. 
@@ -37,37 +36,32 @@ func New(net string, addr string, db *redka.DB) *Server {
3736		addr : addr ,
3837		srv :  redcon .NewServerNetwork (net , addr , handler , accept , closed ),
3938		db :   db ,
40- 		wg :   & sync.WaitGroup {},
4139	}
4240}
4341
4442// Start starts the server. 
45- func  (s  * Server ) Start () {
46- 	s .wg .Add (1 )
47- 	go  func () {
48- 		defer  s .wg .Done ()
49- 		slog .Info ("serve connections" , "addr" , s .addr )
50- 		err  :=  s .srv .ListenAndServe ()
51- 		if  err  !=  nil  {
52- 			slog .Error ("serve connections" , "error" , err )
53- 		}
54- 	}()
43+ func  (s  * Server ) Start () error  {
44+ 	slog .Info ("start redcon server" , "addr" , s .addr )
45+ 	err  :=  s .srv .ListenAndServe ()
46+ 	if  err  !=  nil  {
47+ 		return  fmt .Errorf ("start redcon server: %w" , err )
48+ 	}
49+ 	return  nil 
5550}
5651
5752// Stop stops the server. 
5853func  (s  * Server ) Stop () error  {
5954	err  :=  s .srv .Close ()
6055	if  err  !=  nil  {
61- 		return  err 
56+ 		return  fmt . Errorf ( "stop redcon server: %w" ,  err ) 
6257	}
6358	slog .Debug ("close redcon server" , "addr" , s .addr )
6459
6560	err  =  s .db .Close ()
6661	if  err  !=  nil  {
67- 		return  err 
62+ 		return  fmt . Errorf ( "close database: %w" ,  err ) 
6863	}
6964	slog .Debug ("close database" )
7065
71- 	s .wg .Wait ()
7266	return  nil 
7367}
0 commit comments