Пример #1
0
        private void FlushOutgoingPackets()
        {
            int outQCount = OutgoingMessages.Count;



            // write out queued messages
            for (int i = 0; i < outQCount; i++)
            {
                NetworkMessage <T> packet;
                bool have = OutgoingMessages.TryDequeue(out packet);

                if (have)
                {
                    if (packet.TargetAddress == null)
                    {
                        packet.Packet.Send(UdpSocket);
                    }
                    else
                    {
                        packet.Packet.Send(UdpSocket, packet.TargetAddress);
                    }

                    PacketsSent++;
                    TotalBytesSent    += packet.Packet.Payload.Length;
                    InternalSendCount += packet.Packet.Payload.Length;
                }
            }
        }
Пример #2
0
 /// <summary>
 /// Main sending thread
 /// </summary>
 public static void SendMain()
 {
     try
     {
         while (!MainSystem.Singleton.Quit)
         {
             IMessageBase sendMessage;
             if (OutgoingMessages.TryDequeue(out sendMessage))
             {
                 SendNetworkMessage(sendMessage);
             }
             else
             {
                 Thread.Sleep(SettingsSystem.CurrentSettings.SendReceiveMsInterval);
             }
         }
     }
     catch (Exception e)
     {
         Debug.LogError("[LMP]: Send thread error: " + e);
     }
 }