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