- Timestamp:
- Jun 4, 2020, 3:27:57 PM (5 years ago)
- Location:
- trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/conn.go
r314 r315 10 10 ) 11 11 12 // ircConn is a generic IRC connection. It's similar to net.Conn but focuses on 13 // reading and writing IRC messages. 14 type ircConn interface { 15 ReadMessage() (*irc.Message, error) 16 WriteMessage(*irc.Message) error 17 Close() error 18 SetWriteDeadline(time.Time) error 19 SetReadDeadline(time.Time) error 20 } 21 22 func netIRCConn(c net.Conn) ircConn { 23 type netConn net.Conn 24 return struct { 25 *irc.Conn 26 netConn 27 }{irc.NewConn(c), c} 28 } 29 12 30 type conn struct { 13 net net.Conn 14 irc *irc.Conn 31 conn ircConn 15 32 srv *Server 16 33 logger Logger … … 21 38 } 22 39 23 func newConn(srv *Server, netConn net.Conn, logger Logger) *conn {40 func newConn(srv *Server, ic ircConn, logger Logger) *conn { 24 41 outgoing := make(chan *irc.Message, 64) 25 42 c := &conn{ 26 net: netConn, 27 irc: irc.NewConn(netConn), 43 conn: ic, 28 44 srv: srv, 29 45 outgoing: outgoing, … … 36 52 c.logger.Printf("sent: %v", msg) 37 53 } 38 c. net.SetWriteDeadline(time.Now().Add(writeTimeout))39 if err := c. irc.WriteMessage(msg); err != nil {54 c.conn.SetWriteDeadline(time.Now().Add(writeTimeout)) 55 if err := c.conn.WriteMessage(msg); err != nil { 40 56 c.logger.Printf("failed to write message: %v", err) 41 57 break 42 58 } 43 59 } 44 if err := c. net.Close(); err != nil {60 if err := c.conn.Close(); err != nil { 45 61 c.logger.Printf("failed to close connection: %v", err) 46 62 } else { … … 72 88 } 73 89 74 err := c. net.Close()90 err := c.conn.Close() 75 91 c.closed = true 76 92 close(c.outgoing) … … 79 95 80 96 func (c *conn) ReadMessage() (*irc.Message, error) { 81 msg, err := c. irc.ReadMessage()97 msg, err := c.conn.ReadMessage() 82 98 if err != nil { 83 99 return nil, err -
trunk/downstream.go
r307 r315 96 96 logger := &prefixLogger{srv.Logger, fmt.Sprintf("downstream %q: ", netConn.RemoteAddr())} 97 97 dc := &downstreamConn{ 98 conn: *newConn(srv, net Conn, logger),98 conn: *newConn(srv, netIRCConn(netConn), logger), 99 99 id: id, 100 100 supportedCaps: make(map[string]string), -
trunk/service.go
r313 r315 128 128 }, 129 129 "update": { 130 usage: "[-addr addr] [-name name] [-username username] [-pass pass] [-realname realname] [-nick nick] [-connect-command command]...",131 desc: "update a network",130 usage: "[-addr addr] [-name name] [-username username] [-pass pass] [-realname realname] [-nick nick] [-connect-command command]...", 131 desc: "update a network", 132 132 handle: handleServiceNetworkUpdate, 133 133 }, … … 377 377 *flag.FlagSet 378 378 Addr, Name, Nick, Username, Pass, Realname *string 379 ConnectCommands []string379 ConnectCommands []string 380 380 } 381 381 -
trunk/upstream.go
r310 r315 144 144 145 145 uc := &upstreamConn{ 146 conn: *newConn(network.user.srv, net Conn, logger),146 conn: *newConn(network.user.srv, netIRCConn(netConn), logger), 147 147 network: network, 148 148 user: network.user,
Note:
See TracChangeset
for help on using the changeset viewer.