public override string ToString() { StringBuilder headerTLVBuilder = new StringBuilder(); headerTLVBuilder.Append(String.Format(System.Globalization.CultureInfo.InvariantCulture, "Header TLVs ({0}) : ", headerTLVs.Count.ToString(System.Globalization.CultureInfo.InvariantCulture))); if (headerTLVs.Count > 0) { foreach (KeyValuePair <byte, byte[]> keyvalue in headerTLVs) { headerTLVBuilder.Append(String.Format(System.Globalization.CultureInfo.InvariantCulture, "{1:x}({0}),", keyvalue.Key.ToString(System.Globalization.CultureInfo.InvariantCulture), keyvalue.Key)); headerTLVBuilder.Append(String.Format(System.Globalization.CultureInfo.InvariantCulture, "{1:x}({0}),( ", keyvalue.Value.Length.ToString(System.Globalization.CultureInfo.InvariantCulture), keyvalue.Value.Length)); foreach (byte b in keyvalue.Value) { headerTLVBuilder.Append(String.Format(System.Globalization.CultureInfo.InvariantCulture, "0x{0:x2} ", b)); } headerTLVBuilder.Append("); "); } } headerTLVBuilder.Append("\r\n"); StringBuilder bodyTLVBuilder = new StringBuilder(); bodyTLVBuilder.Append(String.Format(System.Globalization.CultureInfo.InvariantCulture, " DataPacket TLVs ({0}): ", dataPacketTLVs.Count.ToString(System.Globalization.CultureInfo.InvariantCulture))); if (dataPacketTLVs.Count > 0) { foreach (KeyValuePair <byte, byte[]> keyvalue in dataPacketTLVs) { bodyTLVBuilder.Append(String.Format(System.Globalization.CultureInfo.InvariantCulture, "{1:x}({0}),", keyvalue.Key.ToString(System.Globalization.CultureInfo.InvariantCulture), keyvalue.Key)); bodyTLVBuilder.Append(String.Format(System.Globalization.CultureInfo.InvariantCulture, "{1:x}({0}),( ", keyvalue.Value.Length.ToString(System.Globalization.CultureInfo.InvariantCulture), keyvalue.Value.Length)); foreach (byte b in keyvalue.Value) { bodyTLVBuilder.Append(String.Format(System.Globalization.CultureInfo.InvariantCulture, "0x{0:x2} ", b)); } bodyTLVBuilder.Append("); "); } } bodyTLVBuilder.Append("\r\n"); int dataHeaderLen = DataPacketHeaderLength; return("[P2Pv2Header]\r\n" + String.Format(System.Globalization.CultureInfo.InvariantCulture, "HeaderLength : {1:x} ({0})\r\n", HeaderLength.ToString(System.Globalization.CultureInfo.InvariantCulture), HeaderLength) + String.Format(System.Globalization.CultureInfo.InvariantCulture, "OperationCode : {1:x} ({0})\r\n", (byte)OperationCode, Convert.ToString(OperationCode)) + String.Format(System.Globalization.CultureInfo.InvariantCulture, "MessageSize : {1:x} ({0})\r\n", MessageSize.ToString(System.Globalization.CultureInfo.InvariantCulture), MessageSize) + String.Format(System.Globalization.CultureInfo.InvariantCulture, "Identifier : {1:x} ({0})\r\n", Identifier.ToString(System.Globalization.CultureInfo.InvariantCulture), Identifier) + String.Format(System.Globalization.CultureInfo.InvariantCulture, "AckIdentifier : {1:x} ({0})\r\n", AckIdentifier.ToString(System.Globalization.CultureInfo.InvariantCulture), AckIdentifier) + String.Format(System.Globalization.CultureInfo.InvariantCulture, "NakIdentifier : {1:x} ({0})\r\n", NakIdentifier.ToString(System.Globalization.CultureInfo.InvariantCulture), NakIdentifier) + headerTLVBuilder.ToString() + String.Format(System.Globalization.CultureInfo.InvariantCulture, " Data HeaderLength : {1:x} ({0})\r\n", dataHeaderLen.ToString(System.Globalization.CultureInfo.InvariantCulture), dataHeaderLen) + String.Format(System.Globalization.CultureInfo.InvariantCulture, " TFCombination : {1:x} ({0})\r\n", (byte)TFCombination, Convert.ToString(TFCombination)) + String.Format(System.Globalization.CultureInfo.InvariantCulture, " PackageNumber : {1:x} ({0})\r\n", PackageNumber.ToString(System.Globalization.CultureInfo.InvariantCulture), PackageNumber) + String.Format(System.Globalization.CultureInfo.InvariantCulture, " SessionId : {1:x} ({0})\r\n", SessionId.ToString(System.Globalization.CultureInfo.InvariantCulture), SessionId) + String.Format(System.Globalization.CultureInfo.InvariantCulture, " DataRemaining : {1:x} ({0})\r\n", DataRemaining.ToString(System.Globalization.CultureInfo.InvariantCulture), DataRemaining) + bodyTLVBuilder.ToString()); }
private void OnTimingFrame(MessageFrame frame) { var data = Encoding.ASCII.GetString(frame.PayloadBuffer.Array, frame.PayloadBuffer.Offset, frame.PayloadBuffer.Count); var parts = data.Split(';'); if (data == "completed") { var clockSyncAndNetworkDelay = TimeSpan.FromMilliseconds(_timings.Average()); var elapsedTime = DateTime.UtcNow.Subtract(Started).Subtract(clockSyncAndNetworkDelay); var mbits = (MessageCount * MessageSize * 8L / elapsedTime.TotalSeconds) / 1000000; Console.WriteLine(DateTime.UtcNow.ToString("HH:mm:ss.fff") + " completed."); Console.WriteLine("Duration: {0} ms", elapsedTime.TotalMilliseconds); Console.WriteLine("Message Size: {0} bytes", MessageSize.ToString("N0")); Console.WriteLine("Message Count: {0}", MessageCount.ToString("N0")); Console.WriteLine("Total size: {0} bytes", (MessageSize * MessageCount).ToString("N0")); Console.WriteLine("Msgs/sec: {0}", (MessageCount / elapsedTime.TotalSeconds).ToString("N0")); Console.WriteLine("Throughput: {0} Mbit/s", mbits.ToString("N1")); if (!File.Exists("result.csv")) { File.AppendAllText("result.csv", "sep=,\r\n"); File.AppendAllText("result.csv", @"""Message size (bytes)"",""Message count"",""Transfer size (bytes)"",""Msgs/Ack"",""Duration (ms)"",""Msgs/sec"",""Troughput (Mbit/s)""" + "\r\n"); } File.AppendAllText(@"result.csv", string.Format("{0},{1},{2},{3},{4},{5},{6}\r\n", MessageSize.ToString(CultureInfo.InvariantCulture), MessageCount.ToString(CultureInfo.InvariantCulture), (MessageSize * MessageCount).ToString(CultureInfo.InvariantCulture), MessagesPerAck, ((long)elapsedTime.TotalMilliseconds).ToString(CultureInfo.InvariantCulture), ((long)(MessageCount / elapsedTime.TotalSeconds)).ToString(CultureInfo.InvariantCulture), mbits.ToString(CultureInfo.InvariantCulture))); _completedEvent.Set(); return; } var timing = int.Parse(parts[0]); _timings.Add(timing); var date = DateTime.Parse(parts[1], CultureInfo.InvariantCulture); var difference = DateTime.UtcNow.Subtract(date).TotalMilliseconds; _timings.Add((int)difference); if (_timings.Count == 10) { var buffer = Encoding.ASCII.GetBytes(DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss.ffff") + ";end"); _client.Send(new MessageFrame(buffer)); } else if (_timings.Count == 12) { Started = DateTime.UtcNow; Benchmark(_client); } else { var buffer = Encoding.ASCII.GetBytes(DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss.ffff")); _client.Send(new MessageFrame(buffer)); } }
public override string ToString() { return("[P2Pv1Header]\r\n" + String.Format(System.Globalization.CultureInfo.InvariantCulture, "SessionId : {1:x} ({0})\r\n", SessionId.ToString(System.Globalization.CultureInfo.InvariantCulture), SessionId) + String.Format(System.Globalization.CultureInfo.InvariantCulture, "Identifier : {1:x} ({0})\r\n", Identifier.ToString(System.Globalization.CultureInfo.InvariantCulture), Identifier) + String.Format(System.Globalization.CultureInfo.InvariantCulture, "Offset : {1:x} ({0})\r\n", Offset.ToString(System.Globalization.CultureInfo.InvariantCulture), Offset) + String.Format(System.Globalization.CultureInfo.InvariantCulture, "TotalSize : {1:x} ({0})\r\n", TotalSize.ToString(System.Globalization.CultureInfo.InvariantCulture), TotalSize) + String.Format(System.Globalization.CultureInfo.InvariantCulture, "MessageSize : {1:x} ({0})\r\n", MessageSize.ToString(System.Globalization.CultureInfo.InvariantCulture), MessageSize) + String.Format(System.Globalization.CultureInfo.InvariantCulture, "Flags : {1:x} ({0})\r\n", (uint)Flags, Convert.ToString(Flags)) + String.Format(System.Globalization.CultureInfo.InvariantCulture, "AckSessionId : {1:x} ({0})\r\n", AckSessionId.ToString(System.Globalization.CultureInfo.InvariantCulture), AckSessionId) + String.Format(System.Globalization.CultureInfo.InvariantCulture, "AckIdentifier : {1:x} ({0})\r\n", AckIdentifier.ToString(System.Globalization.CultureInfo.InvariantCulture), AckIdentifier) + String.Format(System.Globalization.CultureInfo.InvariantCulture, "AckTotalSize : {1:x} ({0})\r\n", AckTotalSize.ToString(System.Globalization.CultureInfo.InvariantCulture), AckTotalSize)); }