-func (room *Room) Processor(events chan ClientEvent) {
- var client *Client
- for event := range events {
- client = event.client
- switch event.event_type {
- case EVENT_NEW:
- room.members[client] = true
- log.Println(client, "joined", room.name)
- room.SendTopic(client)
- room.Broadcast(fmt.Sprintf(":%s JOIN %s", client, room.name))
- room.log_sink <- LogEvent{room.name, client.nickname, "joined", true}
- nicknames := []string{}
- for member := range room.members {
- nicknames = append(nicknames, member.nickname)
+func (r *Room) Processor(events <-chan ClientEvent) {
+ for e := range events {
+ c := e.client
+ switch e.eventType {
+ case EventTerm:
+ roomsWG.Done()
+ return
+ case EventNew:
+ r.Lock()
+ r.members[c] = struct{}{}
+ r.Unlock()
+ if *verbose {
+ log.Println(c, "joined", r.name)