/// <summary> /// Dump all statistics for this connection to the log specified /// </summary> public void DumpStatisticsToLog(NetLog log) { Statistics.DumpToLog(log); for (int i = 0; i < NetConstants.NumSequenceChannels; i++) { NetChannel channel = (NetChannel)i; if (m_savedReliableMessages[i] != null && m_savedReliableMessages[i].Count > 0) { log.Debug("Saved reliable messages left in " + channel + ": " + m_savedReliableMessages[i].Count); foreach (NetMessage mmm in m_savedReliableMessages[i]) { log.Debug("... " + mmm + " - next resend time: " + mmm.m_nextResendTime + " numresends: " + mmm.m_numResends); } } } log.Debug("Unsent acknowledges: " + m_unsentAcknowledges.Count); log.Debug("Withheld messages: " + m_withheldMessages.Count); log.Flush(); }
/// <summary> /// Dump all statistics to log /// </summary> public void DumpToLog(NetLog log) { if (log == null) { return; } double timespan; if (End == 0.0f) { timespan = NetTime.Now - Start; } else { timespan = End - Start; } log.Debug("--- Statistics for " + m_forConnection + " @ " + NetTime.Now + "--------------"); log.Debug("Timespan: " + timespan + " seconds"); log.Debug("Sent " + PacketsSent + " packets (" + FPS(PacketsSent, timespan) + " per second)"); log.Debug("Sent " + BytesSent + " bytes (" + FPS(BytesSent, timespan) + " per second, " + FPS(BytesSent, (double)PacketsSent) + " per packet, " + FPS(BytesSent, (double)MessagesSent) + " per message)"); log.Debug("Sent " + MessagesSent + " messages (" + FPS(MessagesSent, timespan) + " per second, " + FPS(MessagesSent, (double)PacketsSent) + " per packet)"); int libMessagesSent = MessagesSent - (UserMessagesSent + AckMessagesSent); log.Debug(" ... of which " + UserMessagesSent + " were user messages (" + FPS(UserMessagesSent, timespan) + " per second)"); log.Debug(" ... of which " + AckMessagesSent + " were acknowledge messages (" + FPS(AckMessagesSent, timespan) + " per second)"); log.Debug(" ... of which " + libMessagesSent + " were other system messages (" + FPS(libMessagesSent, timespan) + " per second)"); log.Debug("Received " + PacketsReceived + " packets (" + FPS(PacketsReceived, timespan) + " per second)"); log.Debug("Received " + BytesReceived + " bytes (" + FPS(BytesReceived, timespan) + " per second, " + FPS(BytesReceived, (double)PacketsReceived) + " per packet, " + FPS(BytesReceived, (double)MessagesReceived) + " per message)"); log.Debug("Received " + MessagesReceived + " messages (" + FPS(MessagesReceived, timespan) + " per second, " + FPS(MessagesReceived, (double)PacketsReceived) + " per packet)"); int libMessagesReceived = MessagesReceived - (UserMessagesReceived + AckMessagesReceived); log.Debug(" ... of which " + UserMessagesReceived + " were user messages (" + FPS(UserMessagesReceived, timespan) + " per second)"); log.Debug(" ... of which " + AckMessagesReceived + " were acknowledge messages (" + FPS(AckMessagesReceived, timespan) + " per second)"); log.Debug(" ... of which " + libMessagesReceived + " were other system messages (" + FPS(libMessagesReceived, timespan) + " per second)"); log.Debug("Resent " + MessagesResent + " messages (" + FPS(MessagesResent, timespan) + " per second)"); try { // windows specific stuff IPGlobalProperties ipProps = IPGlobalProperties.GetIPGlobalProperties(); UdpStatistics udpStats = ipProps.GetUdpIPv4Statistics(); log.Debug("System wide datagrams sent: " + (udpStats.DatagramsSent - m_sysSent)); log.Debug("System wide datagrams received: " + (udpStats.DatagramsReceived - m_sysReceived)); } catch (NotSupportedException) { } }
/// <summary> /// Dump all statistics for this connection to the log specified /// </summary> public void DumpStatisticsToLog(NetLog log) { Statistics.DumpToLog(log); for(int i=0;i<NetConstants.NumSequenceChannels;i++) { NetChannel channel = (NetChannel)i; if (m_savedReliableMessages[i] != null && m_savedReliableMessages[i].Count > 0) { log.Debug("Saved reliable messages left in " + channel + ": " + m_savedReliableMessages[i].Count); foreach (NetMessage mmm in m_savedReliableMessages[i]) { log.Debug("... " + mmm + " - next resend time: " + mmm.m_nextResendTime + " numresends: " + mmm.m_numResends); } } } log.Debug("Unsent acknowledges: " + m_unsentAcknowledges.Count); log.Debug("Withheld messages: " + m_withheldMessages.Count); log.Flush(); }
public int ExecuteSend(NetBase netBase, NetBuffer buffer, NetConnection connection, IPEndPoint remoteEP) { int len = buffer.LengthBytes; #if DEBUG if (connection != null) { NetConnectionConfiguration config = connection.Configuration; if (config.LossChance > 0.0f && NetRandom.Default.Chance(config.LossChance)) { //m_log.Debug("(simulating loss of sent packet)"); return(len); } if (config.LagDelayChance > 0.0f && NetRandom.Default.Chance(config.LagDelayChance)) { float delayAmount = config.LagDelayMinimum + (NetRandom.Default.NextFloat() * config.LagDelayVariance); DelayedPacket pk = new DelayedPacket(); pk.Data = new byte[len]; Array.Copy(buffer.Data, pk.Data, buffer.LengthBytes); pk.DelayAmount = delayAmount; pk.DelayedUntil = NetTime.Now + delayAmount; pk.RemoteEP = remoteEP; m_delayed.Add(pk); //m_log.Debug("(queueing packet for " + (int)(pk.DelayAmount * 1000.0f) + " ms)"); return(len); } } #endif try { int bytesSent = netBase.m_socket.SendTo(buffer.Data, 0, len, SocketFlags.None, remoteEP); m_log.Verbose(string.Format(CultureInfo.InvariantCulture, "Sent {0} bytes to {1}", bytesSent, remoteEP)); #if DEBUG if (connection != null) { NetConnectionConfiguration config = connection.Configuration; if (NetRandom.Default.Chance(config.DuplicatedPacketChance)) { m_log.Debug("(simulating send packet duplication)"); netBase.m_socket.SendTo(buffer.Data, 0, buffer.LengthBytes, SocketFlags.None, remoteEP); } } #endif return(bytesSent); } catch (SocketException sex) { if (sex.SocketErrorCode == SocketError.ConnectionReset || sex.SocketErrorCode == SocketError.ConnectionRefused || sex.SocketErrorCode == SocketError.ConnectionAborted) { m_log.Warning("Remote socket forcefully closed: " + sex.SocketErrorCode); if (connection != null) { connection.Disconnect("Socket forcefully closed: " + sex.SocketErrorCode); } return(0); } m_log.Warning("Execute SocketException: " + sex.SocketErrorCode); return(0); } }
/// <summary> /// Dump all statistics to log /// </summary> public void DumpToLog(NetLog log) { if (log == null) return; double timespan; if (End == 0.0f) timespan = NetTime.Now - Start; else timespan = End - Start; log.Debug("--- Statistics for " + m_forConnection + " @ " + NetTime.Now + "--------------"); log.Debug("Timespan: " + timespan + " seconds"); log.Debug("Sent " + PacketsSent + " packets (" + FPS(PacketsSent, timespan) + " per second)"); log.Debug("Sent " + BytesSent + " bytes (" + FPS(BytesSent, timespan) + " per second, " + FPS(BytesSent, (double)PacketsSent) + " per packet, " + FPS(BytesSent, (double)MessagesSent) + " per message)"); log.Debug("Sent " + MessagesSent + " messages (" + FPS(MessagesSent, timespan) + " per second, " + FPS(MessagesSent, (double)PacketsSent) + " per packet)"); int libMessagesSent = MessagesSent - (UserMessagesSent + AckMessagesSent); log.Debug(" ... of which " + UserMessagesSent + " were user messages (" + FPS(UserMessagesSent, timespan) + " per second)"); log.Debug(" ... of which " + AckMessagesSent + " were acknowledge messages (" + FPS(AckMessagesSent, timespan) + " per second)"); log.Debug(" ... of which " + libMessagesSent + " were other system messages (" + FPS(libMessagesSent, timespan) + " per second)"); log.Debug("Received " + PacketsReceived + " packets (" + FPS(PacketsReceived, timespan) + " per second)"); log.Debug("Received " + BytesReceived + " bytes (" + FPS(BytesReceived, timespan) + " per second, " + FPS(BytesReceived, (double)PacketsReceived) + " per packet, " + FPS(BytesReceived, (double)MessagesReceived) + " per message)"); log.Debug("Received " + MessagesReceived + " messages (" + FPS(MessagesReceived, timespan) + " per second, " + FPS(MessagesReceived, (double)PacketsReceived) + " per packet)"); int libMessagesReceived = MessagesReceived - (UserMessagesReceived + AckMessagesReceived); log.Debug(" ... of which " + UserMessagesReceived + " were user messages (" + FPS(UserMessagesReceived, timespan) + " per second)"); log.Debug(" ... of which " + AckMessagesReceived + " were acknowledge messages (" + FPS(AckMessagesReceived, timespan) + " per second)"); log.Debug(" ... of which " + libMessagesReceived + " were other system messages (" + FPS(libMessagesReceived, timespan) + " per second)"); log.Debug("Resent " + MessagesResent + " messages (" + FPS(MessagesResent, timespan) + " per second)"); try { // windows specific stuff IPGlobalProperties ipProps = IPGlobalProperties.GetIPGlobalProperties(); UdpStatistics udpStats = ipProps.GetUdpIPv4Statistics(); log.Debug("System wide datagrams sent: " + (udpStats.DatagramsSent - m_sysSent)); log.Debug("System wide datagrams received: " + (udpStats.DatagramsReceived - m_sysReceived)); } catch (NotSupportedException) { } }