From 8c18330aa3976aa981bbe4f135960a92b5923fb6 Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Sat, 7 Dec 2024 21:13:28 +0800 Subject: Initial commit --- main.go | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 main.go (limited to 'main.go') diff --git a/main.go b/main.go new file mode 100644 index 0000000..0898bd5 --- /dev/null +++ b/main.go @@ -0,0 +1,53 @@ +package main + +import ( + "bufio" + "log" + "log/slog" + "net" +) + +type Client struct { + conn net.Conn +} + +func main() { + listener, err := net.Listen("tcp", ":6667") + if err != nil { + log.Fatal(err) + } + defer listener.Close() + + for { + conn, err := listener.Accept() + if err != nil { + log.Fatal(err) + } + + client := &Client{ + conn: conn, + } + go func() { + defer func() { + raised := recover() + if raised != nil { + slog.Error("connection routine panicked", "raised", raised) + } + }() + client.handleConnection() + }() + } +} + +func (client *Client) handleConnection() { + reader := bufio.NewReader(client.conn) + for { + line, err := reader.ReadString('\n') + if err != nil { + slog.Error("error while reading from connection", "error", err) + client.conn.Close() + return + } + _, _ = parseIRCMsg(line) + } +} -- cgit v1.2.3