public static void AddFrame(WsFrame frame, CommPacketDirection direction, ConnectionInstance connectionInstance) { if (instance == null || !instance.Data.CaptureEnabled) { return; } try { var parentPacket = new CommPacket { Data = frame.HeaderBytes, Direction = direction, Id = Guid.NewGuid(), Instance = connectionInstance, ParentPacket = null, Header = "Websocket Frame", }; foreach (var curMessage in frame.Messages) { var headerPacket = new CommPacket { Data = BitConverter.GetBytes((ushort)(curMessage.Buffer.Length + 1)).Concat(new byte[] { curMessage.ApiId ?? 0 }).ToArray(), Direction = direction, Id = Guid.NewGuid(), Instance = connectionInstance, ParentPacket = parentPacket, Header = $"Websocket Message[0x{curMessage.ApiId ?? 0:X2}]", }; var payloadPacket = new CommPacket { Data = curMessage.Buffer, Direction = direction, Id = Guid.NewGuid(), Instance = connectionInstance, ParentPacket = parentPacket, Header = $"Websocket Payload", }; headerPacket.ChildPackets.Add(payloadPacket); parentPacket.ChildPackets.Add(headerPacket); } ; instance.Data.SendBytesToUi(connectionInstance, parentPacket); } catch (Exception ex) { Log.Error(ex, "Error in AddFrame"); } }
public static void SendBytesToUi(ConnectionInstance connectionInstance, CommPacket packet) { if (instance == null || !instance.Data.CaptureEnabled) { return; } try { instance.Data.SendBytesToUi(connectionInstance, packet); } catch (Exception ex) { Log.Error(ex, "Error in SendBytesToUi"); } }
public static void WriteBytes(byte[] buffer, int count, CommPacketDirection direction, ConnectionInstance connectionInstance) { if (instance == null || !instance.Data.CaptureEnabled) { return; } try { byte[] saveData = new byte[count]; Buffer.BlockCopy(buffer, 0, saveData, 0, count); var length = saveData.Search(saveData.Length, new byte[] { 13, 10 }); var dataStringSegments = Encoding.UTF8.GetString(saveData, 0, length).Split(' '); string header = "HTTP Data"; if (dataStringSegments[2].StartsWith("HTTP")) { header = $"{dataStringSegments[0]} {dataStringSegments[1]}"; } else if (dataStringSegments[0].StartsWith("HTTP")) { var desc = dataStringSegments[2]; for (int i = 3; i < dataStringSegments.Length; ++i) { desc += $" {dataStringSegments[i]}"; } header = $"{dataStringSegments[1]} {desc}"; } instance.Data.SendBytesToUi(connectionInstance, new CommPacket { Data = saveData, Direction = direction, Id = Guid.NewGuid(), Instance = connectionInstance, ParentPacket = null, Header = header, }); } catch (Exception ex) { Log.Error(ex, "Error in WriteBytes"); } }