void WorldSession::Send(WorldPacket& Packet) { sLog.Write(LEVEL_INFO, FILTER_PACKET, "Sending Packet: %s, ", OpcodeTable[Packet.GetOpcode()].Name); Packet.UpdateSizeData(); MessageQueue.push(Packet); if(MessageQueue.size() == 1) { boost::asio::async_write(Socket, boost::asio::buffer(Packet.GetDataWithHeader(), Packet.GetSizeWithHeader()), boost::bind(&WorldSession::HandleSend, shared_from_this(), boost::asio::placeholders::error)); } }