Browse Source

Also cache buffers when encoding broadcast JSON.

pull/11/head
Joachim Bauch 11 years ago
parent
commit
c25a4fd6f3
  1. 12
      src/app/spreed-speakfreely-server/server.go

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

@ -175,24 +175,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