Browse Source

Merge pull request #11 from fancycode/broadcast_json_buffer

Also cache buffers when encoding broadcast JSON.
pull/12/head
Simon Eisenmann 11 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 { @@ -178,24 +178,26 @@ func (s *Server) UpdateUser(c *Connection, userupdate *UserUpdate) uint64 {
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 {
b.Decref()
log.Println("Broadcast error while encoding JSON", err)
return
}
buffer := c.h.buffers.Wrap(b)
if c.h.isGlobalRoomid(c.Roomid) {
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)
})
} 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.broadcastHandler(msg)
}
buffer.Decref()
b.Decref()
}

Loading…
Cancel
Save