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));
    }
}