Changeset 54 in code for trunk


Ignore:
Timestamp:
Feb 17, 2020, 11:27:48 AM (5 years ago)
Author:
contact
Message:

Don't write to downstreamConn.messages directly

Use a helper function instead. This will allow us to change
downstreamConn implementation details without having to update the whole
codebase.

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/bridge.go

    r32 r54  
    1010        }
    1111
    12         dc.messages <- &irc.Message{
     12        dc.SendMessage(&irc.Message{
    1313                Prefix:  dc.prefix(),
    1414                Command: "JOIN",
    1515                Params:  []string{ch.Name},
    16         }
     16        })
    1717
    1818        if ch.Topic != "" {
    19                 dc.messages <- &irc.Message{
     19                dc.SendMessage(&irc.Message{
    2020                        Prefix:  dc.srv.prefix(),
    2121                        Command: irc.RPL_TOPIC,
    2222                        Params:  []string{dc.nick, ch.Name, ch.Topic},
    23                 }
     23                })
    2424        } else {
    25                 dc.messages <- &irc.Message{
     25                dc.SendMessage(&irc.Message{
    2626                        Prefix:  dc.srv.prefix(),
    2727                        Command: irc.RPL_NOTOPIC,
    2828                        Params:  []string{dc.nick, ch.Name, "No topic is set"},
    29                 }
     29                })
    3030        }
    3131
     
    3939                }
    4040
    41                 dc.messages <- &irc.Message{
     41                dc.SendMessage(&irc.Message{
    4242                        Prefix:  dc.srv.prefix(),
    4343                        Command: irc.RPL_NAMREPLY,
    4444                        Params:  []string{dc.nick, string(ch.Status), ch.Name, s},
    45                 }
     45                })
    4646        }
    4747
    48         dc.messages <- &irc.Message{
     48        dc.SendMessage(&irc.Message{
    4949                Prefix:  dc.srv.prefix(),
    5050                Command: irc.RPL_ENDOFNAMES,
    5151                Params:  []string{dc.nick, ch.Name, "End of /NAMES list"},
    52         }
     52        })
    5353}
  • trunk/downstream.go

    r51 r54  
    103103                if ircErr, ok := err.(ircError); ok {
    104104                        ircErr.Message.Prefix = c.srv.prefix()
    105                         c.messages <- ircErr.Message
     105                        c.SendMessage(ircErr.Message)
    106106                } else if err != nil {
    107107                        return fmt.Errorf("failed to handle IRC command %q: %v", msg.Command, err)
     
    141141
    142142        return nil
     143}
     144
     145func (c *downstreamConn) SendMessage(msg *irc.Message) {
     146        c.messages <- msg
    143147}
    144148
     
    149153        case "PING":
    150154                // TODO: handle params
    151                 c.messages <- &irc.Message{
     155                c.SendMessage(&irc.Message{
    152156                        Prefix:  c.srv.prefix(),
    153157                        Command: "PONG",
    154158                        Params:  []string{c.srv.Hostname},
    155                 }
     159                })
    156160                return nil
    157161        default:
     
    190194        if u == nil {
    191195                c.logger.Printf("failed authentication: unknown username %q", c.username)
    192                 c.messages <- &irc.Message{
     196                c.SendMessage(&irc.Message{
    193197                        Prefix:  c.srv.prefix(),
    194198                        Command: irc.ERR_PASSWDMISMATCH,
    195199                        Params:  []string{"*", "Invalid username or password"},
    196                 }
     200                })
    197201                return nil
    198202        }
     
    205209        u.lock.Unlock()
    206210
    207         c.messages <- &irc.Message{
     211        c.SendMessage(&irc.Message{
    208212                Prefix:  c.srv.prefix(),
    209213                Command: irc.RPL_WELCOME,
    210214                Params:  []string{c.nick, "Welcome to jounce, " + c.nick},
    211         }
    212         c.messages <- &irc.Message{
     215        })
     216        c.SendMessage(&irc.Message{
    213217                Prefix:  c.srv.prefix(),
    214218                Command: irc.RPL_YOURHOST,
    215219                Params:  []string{c.nick, "Your host is " + c.srv.Hostname},
    216         }
    217         c.messages <- &irc.Message{
     220        })
     221        c.SendMessage(&irc.Message{
    218222                Prefix:  c.srv.prefix(),
    219223                Command: irc.RPL_CREATED,
    220224                Params:  []string{c.nick, "Who cares when the server was created?"},
    221         }
    222         c.messages <- &irc.Message{
     225        })
     226        c.SendMessage(&irc.Message{
    223227                Prefix:  c.srv.prefix(),
    224228                Command: irc.RPL_MYINFO,
    225229                Params:  []string{c.nick, c.srv.Hostname, "jounce", "aiwroO", "OovaimnqpsrtklbeI"},
    226         }
    227         c.messages <- &irc.Message{
     230        })
     231        c.SendMessage(&irc.Message{
    228232                Prefix:  c.srv.prefix(),
    229233                Command: irc.ERR_NOMOTD,
    230234                Params:  []string{c.nick, "No MOTD"},
    231         }
     235        })
    232236
    233237        u.forEachUpstream(func(uc *upstreamConn) {
     
    247251                                break
    248252                        }
    249                         c.messages <- msg
     253                        c.SendMessage(msg)
    250254                }
    251255        })
     
    313317                                ch.conn.messages <- msg
    314318                        } else {
    315                                 c.messages <- &irc.Message{
     319                                c.SendMessage(&irc.Message{
    316320                                        Prefix:  c.srv.prefix(),
    317321                                        Command: irc.RPL_CHANNELMODEIS,
    318322                                        Params:  []string{ch.Name, string(ch.modes)},
    319                                 }
     323                                })
    320324                        }
    321325                } else {
     
    332336                                })
    333337                        } else {
    334                                 c.messages <- &irc.Message{
     338                                c.SendMessage(&irc.Message{
    335339                                        Prefix:  c.srv.prefix(),
    336340                                        Command: irc.RPL_UMODEIS,
    337341                                        Params:  []string{""}, // TODO
    338                                 }
     342                                })
    339343                        }
    340344                }
  • trunk/upstream.go

    r50 r54  
    133133
    134134                c.user.forEachDownstream(func(dc *downstreamConn) {
    135                         dc.messages <- msg
     135                        dc.SendMessage(msg)
    136136                })
    137137        case "NOTICE":
     
    173173
    174174                c.user.forEachDownstream(func(dc *downstreamConn) {
    175                         dc.messages <- msg
     175                        dc.SendMessage(msg)
    176176                })
    177177        case "JOIN":
     
    199199
    200200                c.user.forEachDownstream(func(dc *downstreamConn) {
    201                         dc.messages <- msg
     201                        dc.SendMessage(msg)
    202202                })
    203203        case "PART":
     
    221221
    222222                c.user.forEachDownstream(func(dc *downstreamConn) {
    223                         dc.messages <- msg
     223                        dc.SendMessage(msg)
    224224                })
    225225        case irc.RPL_TOPIC, irc.RPL_NOTOPIC:
     
    307307                c.ring.Produce(msg)
    308308                c.user.forEachDownstream(func(dc *downstreamConn) {
    309                         dc.messages <- msg
     309                        dc.SendMessage(msg)
    310310                })
    311311        case irc.RPL_YOURHOST, irc.RPL_CREATED:
Note: See TracChangeset for help on using the changeset viewer.