X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=room.go;h=08eb46da85a4e0c3149ddc3efc6dbf935ec63521;hb=54d2fcb9cbab1e5693b83b9c506bc0aca74dd90c;hp=f92d0e6b08811f89758111420da09ba80204416c;hpb=043730c35562365191764faf321424eb7bec0513;p=goircd.git diff --git a/room.go b/room.go index f92d0e6..08eb46d 100644 --- a/room.go +++ b/room.go @@ -41,11 +41,11 @@ type Room struct { key string members map[*Client]bool hostname string - log_sink chan LogEvent - state_sink chan StateEvent + log_sink chan<- LogEvent + state_sink chan<- StateEvent } -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 { room := Room{name: name} room.members = make(map[*Client]bool) room.topic = "" @@ -78,7 +78,7 @@ func (room *Room) StateSave() { room.state_sink <- StateEvent{room.name, room.topic, room.key} } -func (room *Room) Processor(events chan ClientEvent) { +func (room *Room) Processor(events <-chan ClientEvent) { var client *Client for event := range events { client = event.client @@ -87,7 +87,7 @@ func (room *Room) Processor(events chan ClientEvent) { room.members[client] = true log.Println(client, "joined", room.name) room.SendTopic(client) - go room.Broadcast(fmt.Sprintf(":%s JOIN %s", client, room.name)) + 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 { @@ -163,7 +163,7 @@ func (room *Room) Processor(events chan ClientEvent) { room.StateSave() case EVENT_MSG: sep := strings.Index(event.text, " ") - 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} } }