-func NewRoom(hostname *string, name string, logSink chan<- LogEvent, stateSink chan<- StateEvent) *Room {
- room := Room{name: name}
- room.members = make(map[*Client]bool)
- room.topic = ""
- room.key = ""
- room.hostname = hostname
- room.logSink = logSink
- room.stateSink = stateSink
- return &room
-}
+func (r *Room) SendNames(c *Client) {
+ allowed := false
+ if r.key == "" {
+ allowed = true
+ } else if _, isMember := r.members[c]; isMember {
+ allowed = true
+ }
+ if !allowed {
+ c.ReplyNicknamed("475", r.name, "Cannot join channel (+k)")
+ return
+ }
+ r.RLock()
+ nicknames := make([]string, 0, len(r.members))
+ for member := range r.members {
+ nicknames = append(nicknames, member.nickname)
+ }
+ r.RUnlock()
+ sort.Strings(nicknames)
+ maxLen := 512 - len(*hostname) - 2 - 2