Browse Source

Merge pull request #11 from fancycode/broadcast_json_buffer

Also cache buffers when encoding broadcast JSON.
pull/12/head
Simon Eisenmann 12 years ago
parent
commit
9bbd8fbac7
  1. 12
      src/app/spreed-speakfreely-server/server.go

12
src/app/spreed-speakfreely-server/server.go

@ -178,24 +178,26 @@ func (s *Server) UpdateUser(c *Connection, userupdate *UserUpdate) uint64 {
func (s *Server) Broadcast(c *Connection, m interface{}) { func (s *Server) Broadcast(c *Connection, m interface{}) {
b, err := json.Marshal(&DataOutgoing{From: c.Id, Data: m}) b := c.h.buffers.New()
encoder := json.NewEncoder(b)
err := encoder.Encode(&DataOutgoing{From: c.Id, Data: m})
if err != nil { if err != nil {
b.Decref()
log.Println("Broadcast error while encoding JSON", err) log.Println("Broadcast error while encoding JSON", err)
return return
} }
buffer := c.h.buffers.Wrap(b)
if c.h.isGlobalRoomid(c.Roomid) { if c.h.isGlobalRoomid(c.Roomid) {
c.h.RunForAllRooms(func(room *RoomWorker) { c.h.RunForAllRooms(func(room *RoomWorker) {
var msg = &MessageRequest{From: c.Id, Message: buffer, Id: room.Id} var msg = &MessageRequest{From: c.Id, Message: b, Id: room.Id}
room.broadcastHandler(msg) room.broadcastHandler(msg)
}) })
} else { } else {
var msg = &MessageRequest{From: c.Id, Message: buffer, Id: c.Roomid} var msg = &MessageRequest{From: c.Id, Message: b, Id: c.Roomid}
room := c.h.GetRoom(c.Roomid) room := c.h.GetRoom(c.Roomid)
room.broadcastHandler(msg) room.broadcastHandler(msg)
} }
buffer.Decref() b.Decref()
} }

Loading…
Cancel
Save