From cbe415e8fc05a41cb9b0a6f67ac15d5ae4b21a2d Mon Sep 17 00:00:00 2001 From: ilotterytea Date: Sat, 2 Aug 2025 13:59:01 +0500 Subject: feat: server struct --- internal/server.go | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 internal/server.go (limited to 'internal/server.go') diff --git a/internal/server.go b/internal/server.go new file mode 100644 index 0000000..667aa97 --- /dev/null +++ b/internal/server.go @@ -0,0 +1,46 @@ +package ircd + +import ( + "log" + "net" +) + +type Server struct { + clients []*Client + listener net.Listener +} + +func (s *Server) Run() { + for { + conn, err := s.listener.Accept() + if err != nil { + log.Printf("Error accepting connection: %v\n", err) + continue + } + + client := NewIRCClient(conn, s) + s.clients = append(s.clients, client) + + go client.HandleConnection() + } +} + +func (s *Server) Close() { + s.listener.Close() +} + +func NewIRCServer(address string) (*Server, error) { + listener, err := net.Listen("tcp", address) + if err != nil { + return nil, err + } + + log.Println("IRC server listening on " + address) + + s := Server{ + clients: []*Client{}, + listener: listener, + } + + return &s, nil +} -- cgit v1.2.3