public override string ToString() { var sb = new StringBuilder(); sb.Append("Message Type (op): ").AppendLine(MessageType.ToString()); sb.Append("Hardware Address Type (htype): ").AppendLine(HardwareAddressType.ToString()); sb.Append("Hardware Address Length (hlen): ").AppendLine(HardwareAddressLength.ToString()); sb.Append("Gateway Hops (hops): ").AppendLine(GatewayHops.ToString()); sb.Append("Transaction Id (xid): ").AppendLine(TransactionId.ToString()); sb.Append("Seconds Elapsed (secs): ").AppendLine(SecondsElapsed.ToString()); sb.Append("Flags (flags): ").AppendLine(Convert.ToString((int)Flags, 2)); foreach (DhcpServerPacketFlags flag in Enum.GetValues(typeof(DhcpServerPacketFlags))) { sb.Append(" "); var mask = Convert.ToString((short)flag, 2).Replace('0', '.'); if (Flags.HasFlag(flag)) { sb.Append(mask).Append(": ").AppendLine(flag.ToString()); } else { sb.Append(mask.Replace('1', '0')).Append(": No ").AppendLine(flag.ToString()); } } sb.Append("Client IP Address (ciaddr): ").AppendLine(ClientIpAddress.ToString()); sb.Append("Your IP Address (yiaddr): ").AppendLine(YourIpAddress.ToString()); sb.Append("Next Server IP Address (siaddr): ").AppendLine(NextServerIpAddress.ToString()); sb.Append("Relay Agent IP Address (giaddr): ").AppendLine(RelayAgentIpAddress.ToString()); sb.Append("Client Hardware Address (chaddr): ").AppendLine(ClientHardwareAddress.ToString()); sb.Append("Server Host Name (sname): ").AppendLine(ServerHostName); sb.Append("File Name (file): ").AppendLine(FileName); sb.Append("Options Magic Cookie: ").AppendLine(OptionsMagicCookie.ToString()); var options = Options.ToList(); if (options.Count == 0) { sb.Append("Options: None"); } else { sb.Append("Options:"); foreach (var option in options) { sb.AppendLine(); sb.Append(" "); sb.Append(((byte)option.Id).ToString("000")); sb.Append(" "); sb.Append(option.Id.ToString()); sb.Append(" ["); sb.Append(option.Type.ToString()); sb.AppendLine("]"); sb.Append(" "); option.DataAsFormatted(sb); } } return(sb.ToString()); }
public IEnumerable <(string description, string value)> GetSummaryRows() { yield return("Size", $"{GameSettings.Columns} x {GameSettings.Rows}"); yield return("Total Mines", GameSettings.MinesCount.ToString()); yield return(PascalToSentence(nameof(SecondsElapsed)), SecondsElapsed.ToString()); yield return("Flagged", $"{CorrectlyFlaggedCount}/{GameSettings.MinesCount}"); yield return("Flipped", $"{FlippedCount}/{GameSettings.TilesToBeFlippedCount}"); yield return(PascalToSentence(nameof(RedundantFlags)), RedundantFlags.ToString()); }