Changeset 3 in code
- Timestamp:
- Feb 4, 2020, 10:25:53 AM (5 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/cmd/jounce/main.go
r1 r3 16 16 } 17 17 18 s := jounce.Server{} 19 18 20 log.Printf("Server listening on %v", addr) 19 log.Fatal( jounce.Serve(ln))21 log.Fatal(s.Serve(ln)) 20 22 } -
trunk/server.go
r1 r3 3 3 import ( 4 4 "fmt" 5 "io" 5 6 "log" 6 7 "net" … … 9 10 ) 10 11 11 func handleConn(conn net.Conn) error { 12 defer conn.Close() 12 type conn struct { 13 net net.Conn 14 irc *irc.Conn 15 } 13 16 14 ircConn := irc.NewConn(conn) 17 type Server struct{} 18 19 func (s *Server) handleConn(netConn net.Conn) error { 20 defer netConn.Close() 21 22 conn := conn{netConn, irc.NewConn(netConn)} 15 23 for { 16 msg, err := ircConn.ReadMessage() 17 if err != nil { 24 msg, err := conn.irc.ReadMessage() 25 if err == io.EOF { 26 break 27 } else if err != nil { 18 28 return err 19 29 } 30 log.Println(msg) 20 31 21 log.Println(msg) 32 switch msg.Command { 33 default: 34 err = conn.irc.WriteMessage(&irc.Message{ 35 Command: irc.ERR_UNKNOWNCOMMAND, 36 Params: []string{ 37 "*", 38 msg.Command, 39 "Unknown command", 40 }, 41 }) 42 } 22 43 } 44 45 return netConn.Close() 23 46 } 24 47 25 func Serve(ln net.Listener) error {48 func (s *Server) Serve(ln net.Listener) error { 26 49 for { 27 c onn, err := ln.Accept()50 c, err := ln.Accept() 28 51 if err != nil { 29 52 return fmt.Errorf("failed to accept connection: %v", err) … … 31 54 32 55 go func() { 33 if err := handleConn(conn); err != nil {56 if err := s.handleConn(c); err != nil { 34 57 log.Printf("error handling connection: %v", err) 35 58 }
Note:
See TracChangeset
for help on using the changeset viewer.