Changeset 323 in code for trunk/conn.go
- Timestamp:
- Jun 7, 2020, 12:13:46 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/conn.go
r315 r323 2 2 3 3 import ( 4 "context" 4 5 "fmt" 5 6 "net" … … 8 9 9 10 "gopkg.in/irc.v3" 11 "nhooyr.io/websocket" 10 12 ) 11 13 … … 16 18 WriteMessage(*irc.Message) error 17 19 Close() error 20 SetReadDeadline(time.Time) error 18 21 SetWriteDeadline(time.Time) error 19 SetReadDeadline(time.Time) error20 22 } 21 23 22 func ne tIRCConn(c net.Conn) ircConn {24 func newNetIRCConn(c net.Conn) ircConn { 23 25 type netConn net.Conn 24 26 return struct { … … 26 28 netConn 27 29 }{irc.NewConn(c), c} 30 } 31 32 type websocketIRCConn struct { 33 conn *websocket.Conn 34 readDeadline, writeDeadline time.Time 35 } 36 37 func newWebsocketIRCConn(c *websocket.Conn) ircConn { 38 return websocketIRCConn{conn: c} 39 } 40 41 func (wic websocketIRCConn) ReadMessage() (*irc.Message, error) { 42 ctx := context.Background() 43 if !wic.readDeadline.IsZero() { 44 var cancel context.CancelFunc 45 ctx, cancel = context.WithDeadline(ctx, wic.readDeadline) 46 defer cancel() 47 } 48 _, b, err := wic.conn.Read(ctx) 49 if err != nil { 50 return nil, err 51 } 52 return irc.ParseMessage(string(b)) 53 } 54 55 func (wic websocketIRCConn) WriteMessage(msg *irc.Message) error { 56 b := []byte(msg.String()) 57 ctx := context.Background() 58 if !wic.writeDeadline.IsZero() { 59 var cancel context.CancelFunc 60 ctx, cancel = context.WithDeadline(ctx, wic.writeDeadline) 61 defer cancel() 62 } 63 return wic.conn.Write(ctx, websocket.MessageText, b) 64 } 65 66 func (wic websocketIRCConn) Close() error { 67 return wic.conn.Close(websocket.StatusNormalClosure, "") 68 } 69 70 func (wic websocketIRCConn) SetReadDeadline(t time.Time) error { 71 wic.readDeadline = t 72 return nil 73 } 74 75 func (wic websocketIRCConn) SetWriteDeadline(t time.Time) error { 76 wic.writeDeadline = t 77 return nil 28 78 } 29 79
Note:
See TracChangeset
for help on using the changeset viewer.