source: code/trunk/bridge.go@ 131

Last change on this file since 131 was 98, checked in by contact, 5 years ago

Rename project to soju

File size: 1.2 KB
RevLine 
[98]1package soju
[32]2
3import (
4 "gopkg.in/irc.v3"
5)
6
7func forwardChannel(dc *downstreamConn, ch *upstreamChannel) {
8 if !ch.complete {
9 panic("Tried to forward a partial channel")
10 }
11
[69]12 downstreamName := dc.marshalChannel(ch.conn, ch.Name)
13
[54]14 dc.SendMessage(&irc.Message{
[32]15 Prefix: dc.prefix(),
16 Command: "JOIN",
[69]17 Params: []string{downstreamName},
[54]18 })
[32]19
20 if ch.Topic != "" {
[54]21 dc.SendMessage(&irc.Message{
[32]22 Prefix: dc.srv.prefix(),
23 Command: irc.RPL_TOPIC,
[69]24 Params: []string{dc.nick, downstreamName, ch.Topic},
[54]25 })
[32]26 } else {
[54]27 dc.SendMessage(&irc.Message{
[32]28 Prefix: dc.srv.prefix(),
29 Command: irc.RPL_NOTOPIC,
[69]30 Params: []string{dc.nick, downstreamName, "No topic is set"},
[54]31 })
[32]32 }
33
34 // TODO: rpl_topicwhotime
35
36 // TODO: send multiple members in each message
37 for nick, membership := range ch.Members {
[69]38 s := dc.marshalNick(ch.conn, nick)
[32]39 if membership != 0 {
[69]40 s = string(membership) + s
[32]41 }
42
[54]43 dc.SendMessage(&irc.Message{
[32]44 Prefix: dc.srv.prefix(),
45 Command: irc.RPL_NAMREPLY,
[69]46 Params: []string{dc.nick, string(ch.Status), downstreamName, s},
[54]47 })
[32]48 }
49
[54]50 dc.SendMessage(&irc.Message{
[32]51 Prefix: dc.srv.prefix(),
52 Command: irc.RPL_ENDOFNAMES,
[69]53 Params: []string{dc.nick, downstreamName, "End of /NAMES list"},
[54]54 })
[32]55}
Note: See TracBrowser for help on using the repository browser.