Skip to content

Commit 6ee00a4

Browse files
committed
refactor: Add server to handle HTTP requests and responses
1 parent b173f83 commit 6ee00a4

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

server.go

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package httpserver
2+
3+
import (
4+
"net"
5+
)
6+
7+
type Server struct {
8+
router *Router
9+
}
10+
11+
func NewServer() *Server {
12+
return &Server{
13+
router: NewRouter(),
14+
}
15+
}
16+
17+
func (s *Server) Handle(method, path string, handler HandlerFunc) {
18+
s.router.Handle(method, path, handler)
19+
}
20+
21+
func (s *Server) ListenAndServe(address string) error {
22+
listener, err := net.Listen("tcp", address)
23+
if err != nil {
24+
return err
25+
}
26+
defer listener.Close()
27+
28+
for {
29+
conn, err := listener.Accept()
30+
if err != nil {
31+
continue
32+
}
33+
go s.handleConnection(conn)
34+
}
35+
}
36+
37+
func (s *Server) handleConnection(conn net.Conn) {
38+
defer conn.Close()
39+
40+
httpRequest, err := Parse(conn)
41+
if err != nil {
42+
return
43+
}
44+
45+
res := NewResponse(conn)
46+
s.router.Serve(httpRequest, res)
47+
}

0 commit comments

Comments
 (0)