-func NewRoom(hostname, name string, log_sink chan LogEvent, state_sink chan StateEvent) *Room {
+func NewRoom(hostname, name string, log_sink chan<- LogEvent, state_sink chan<- StateEvent) *Room {
var client *Client
for event := range events {
client = event.client
switch event.event_type {
case EVENT_NEW:
room.members[client] = true
var client *Client
for event := range events {
client = event.client
switch event.event_type {
case EVENT_NEW:
room.members[client] = true
room.log_sink <- LogEvent{room.name, client.nickname, "joined", true}
nicknames := []string{}
for member := range room.members {
room.log_sink <- LogEvent{room.name, client.nickname, "joined", true}
nicknames := []string{}
for member := range room.members {
}
delete(room.members, client)
msg := fmt.Sprintf(":%s PART %s :%s", client, room.name, client.nickname)
}
delete(room.members, client)
msg := fmt.Sprintf(":%s PART %s :%s", client, room.name, client.nickname)
room.log_sink <- LogEvent{room.name, client.nickname, "left", true}
case EVENT_TOPIC:
if _, subscribed := room.members[client]; !subscribed {
room.log_sink <- LogEvent{room.name, client.nickname, "left", true}
case EVENT_TOPIC:
if _, subscribed := room.members[client]; !subscribed {
- go room.Broadcast(fmt.Sprintf(":%s %s %s :%s", client, event.text[:sep], room.name, event.text[sep+1:]), client)
+ room.Broadcast(fmt.Sprintf(":%s %s %s :%s", client, event.text[:sep], room.name, event.text[sep+1:]), client)
room.log_sink <- LogEvent{room.name, client.nickname, event.text[sep+1:], false}
}
}
room.log_sink <- LogEvent{room.name, client.nickname, event.text[sep+1:], false}
}
}