public bool WriteFrame(WebSocketFrame frame) { return(Write(frame.ToByteArray())); }
private static string dump(WebSocketFrame frame) { var len = frame.Length; var cnt = (long)(len / 4); var rem = (int)(len % 4); int cntDigit; string cntFmt; if (cnt < 10000) { cntDigit = 4; cntFmt = "{0,4}"; } else if (cnt < 0x010000) { cntDigit = 4; cntFmt = "{0,4:X}"; } else if (cnt < 0x0100000000) { cntDigit = 8; cntFmt = "{0,8:X}"; } else { cntDigit = 16; cntFmt = "{0,16:X}"; } var spFmt = String.Format("{{0,{0}}}", cntDigit); var headerFmt = String.Format(@" {0} 01234567 89ABCDEF 01234567 89ABCDEF {0}+--------+--------+--------+--------+\n", spFmt); var lineFmt = String.Format("{0}|{{1,8}} {{2,8}} {{3,8}} {{4,8}}|\n", cntFmt); var footerFmt = String.Format("{0}+--------+--------+--------+--------+", spFmt); var output = new StringBuilder(64); Func <Action <string, string, string, string> > linePrinter = () => { long lineCnt = 0; return((arg1, arg2, arg3, arg4) => output.AppendFormat(lineFmt, ++lineCnt, arg1, arg2, arg3, arg4)); }; output.AppendFormat(headerFmt, String.Empty); var printLine = linePrinter(); var bytes = frame.ToByteArray(); for (long i = 0; i <= cnt; i++) { var j = i * 4; if (i < cnt) { printLine( Convert.ToString(bytes[j], 2).PadLeft(8, '0'), Convert.ToString(bytes[j + 1], 2).PadLeft(8, '0'), Convert.ToString(bytes[j + 2], 2).PadLeft(8, '0'), Convert.ToString(bytes[j + 3], 2).PadLeft(8, '0')); } else if (rem > 0) { printLine( Convert.ToString(bytes[j], 2).PadLeft(8, '0'), rem >= 2 ? Convert.ToString(bytes[j + 1], 2).PadLeft(8, '0') : String.Empty, rem == 3 ? Convert.ToString(bytes[j + 2], 2).PadLeft(8, '0') : String.Empty, String.Empty); } } output.AppendFormat(footerFmt, String.Empty); return(output.ToString()); }
private static string dump(WebSocketFrame frame) { ulong length = frame.Length; long num = (long)(length / 4uL); int num2 = (int)(length % 4uL); int num3; string arg5; if (num < 10000) { num3 = 4; arg5 = "{0,4}"; } else if (num < 65536) { num3 = 4; arg5 = "{0,4:X}"; } else if (num < 4294967296L) { num3 = 8; arg5 = "{0,8:X}"; } else { num3 = 16; arg5 = "{0,16:X}"; } string arg6 = $"{{0,{num3}}}"; string format = string.Format("\n{0} 01234567 89ABCDEF 01234567 89ABCDEF\n{0}+--------+--------+--------+--------+\\n", arg6); string lineFmt = $"{arg5}|{{1,8}} {{2,8}} {{3,8}} {{4,8}}|\n"; string format2 = $"{arg6}+--------+--------+--------+--------+"; StringBuilder output = new StringBuilder(64); Func <Action <string, string, string, string> > func = delegate { long lineCnt = 0L; return(delegate(string arg1, string arg2, string arg3, string arg4) { output.AppendFormat(lineFmt, ++lineCnt, arg1, arg2, arg3, arg4); }); }; output.AppendFormat(format, string.Empty); Action <string, string, string, string> action = func(); byte[] array = frame.ToByteArray(); for (long num4 = 0L; num4 <= num; num4++) { long num5 = num4 * 4; if (num4 < num) { action(Convert.ToString(array[num5], 2).PadLeft(8, '0'), Convert.ToString(array[num5 + 1], 2).PadLeft(8, '0'), Convert.ToString(array[num5 + 2], 2).PadLeft(8, '0'), Convert.ToString(array[num5 + 3], 2).PadLeft(8, '0')); } else if (num2 > 0) { action(Convert.ToString(array[num5], 2).PadLeft(8, '0'), (num2 < 2) ? string.Empty : Convert.ToString(array[num5 + 1], 2).PadLeft(8, '0'), (num2 != 3) ? string.Empty : Convert.ToString(array[num5 + 2], 2).PadLeft(8, '0'), string.Empty); } } output.AppendFormat(format2, string.Empty); return(output.ToString()); }