Changeset 315 in code for trunk


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.

Location:
trunk
Files:
4 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
  • trunk/downstream.go

    r307 r315  
    9696        logger := &prefixLogger{srv.Logger, fmt.Sprintf("downstream %q: ", netConn.RemoteAddr())}
    9797        dc := &downstreamConn{
    98                 conn:          *newConn(srv, netConn, logger),
     98                conn:          *newConn(srv, netIRCConn(netConn), logger),
    9999                id:            id,
    100100                supportedCaps: make(map[string]string),
  • trunk/service.go

    r313 r315  
    128128                                },
    129129                                "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",
    132132                                        handle: handleServiceNetworkUpdate,
    133133                                },
     
    377377        *flag.FlagSet
    378378        Addr, Name, Nick, Username, Pass, Realname *string
    379         ConnectCommands []string
     379        ConnectCommands                            []string
    380380}
    381381
  • trunk/upstream.go

    r310 r315  
    144144
    145145        uc := &upstreamConn{
    146                 conn:                     *newConn(network.user.srv, netConn, logger),
     146                conn:                     *newConn(network.user.srv, netIRCConn(netConn), logger),
    147147                network:                  network,
    148148                user:                     network.user,
Note: See TracChangeset for help on using the changeset viewer.