Changeset 315 in code for trunk/conn.go


Ignore:
Timestamp:
Jun 4, 2020, 3:27:57 PM (5 years ago)
Author:
contact
Message:

Introduce ircConn

This interface will allow a conn to be backed by a websocket.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/conn.go

    r314 r315  
    1010)
    1111
     12// ircConn is a generic IRC connection. It's similar to net.Conn but focuses on
     13// reading and writing IRC messages.
     14type 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
     22func 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
    1230type conn struct {
    13         net    net.Conn
    14         irc    *irc.Conn
     31        conn   ircConn
    1532        srv    *Server
    1633        logger Logger
     
    2138}
    2239
    23 func newConn(srv *Server, netConn net.Conn, logger Logger) *conn {
     40func newConn(srv *Server, ic ircConn, logger Logger) *conn {
    2441        outgoing := make(chan *irc.Message, 64)
    2542        c := &conn{
    26                 net:      netConn,
    27                 irc:      irc.NewConn(netConn),
     43                conn:     ic,
    2844                srv:      srv,
    2945                outgoing: outgoing,
     
    3652                                c.logger.Printf("sent: %v", msg)
    3753                        }
    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 {
    4056                                c.logger.Printf("failed to write message: %v", err)
    4157                                break
    4258                        }
    4359                }
    44                 if err := c.net.Close(); err != nil {
     60                if err := c.conn.Close(); err != nil {
    4561                        c.logger.Printf("failed to close connection: %v", err)
    4662                } else {
     
    7288        }
    7389
    74         err := c.net.Close()
     90        err := c.conn.Close()
    7591        c.closed = true
    7692        close(c.outgoing)
     
    7995
    8096func (c *conn) ReadMessage() (*irc.Message, error) {
    81         msg, err := c.irc.ReadMessage()
     97        msg, err := c.conn.ReadMessage()
    8298        if err != nil {
    8399                return nil, err
Note: See TracChangeset for help on using the changeset viewer.