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