Esempio n. 1
0
 /// <summary>
 /// Writes the Udp packet header
 /// </summary>
 /// <param name="w"></param>
 /// <param name="data"></param>
 private void WriteUdpHeader(BitWriter w, UdpSendData data)
 {
     w.Write(data.udp);
     if (!data.udp)
     {
         w.Write(salt);
         w.Write(data.packet.Id);
     }
     else
     {
         w.Write(data.packet.Id);
     }
 }
Esempio n. 2
0
        /// <summary>
        /// Sends data or adds it to a queue if already sending
        /// </summary>
        /// <param name="data"></param>
        private void Send(UdpSendData data)
        {
            lock (sendSync)
            {
                if (sending)
                {
                    sendQueue.Enqueue(data);
                    return;
                }
                sending = true;
            }

            SendPacket(data);
        }
Esempio n. 3
0
        /// <summary>
        /// Sends a packet to the remote
        /// </summary>
        /// <param name="packet">Packet.</param>
        private void SendPacket(UdpSendData data)
        {
            //Log.Write("Sending: " + data.packet.GetType().Name);
            lastSent = DateTime.Now;

            var w = new BitWriter();

            WriteUdpHeader(w, data);
            if (!data.udp)
            {
                var channel = channels[data.packet.Id];
                channel.SendPacket(w, (TPacket)data.packet);
            }
            else
            {
                data.packet.WritePacket(w);
                DoSendData(w.GetData());
            }
        }