private void handleMessage(byte[] msgData) { try { if (msgData.Length > 0) { SocketPacket.CommandID commandId = (SocketPacket.CommandID)(msgData[0]); m_packets[(int)commandId]++; switch (commandId) { case SocketPacket.CommandID.INITIAL_SETTINGS: { int platform = (int)msgData[1]; int processId = (int)GetInt(msgData, 2); break; } case SocketPacket.CommandID.TEXT: { handleText(msgData); break; } default: { System.Diagnostics.Debug.Fail("Unknown command ID: " + commandId); break; } } } } catch (Exception e) { Console.WriteLine(e.Message); MessageBox.Show(e.Message, Resources.ConnectError); } }
private void HandleMessage(byte[] msgData) { SocketPacket.CommandID commandId = (SocketPacket.CommandID)(msgData[0]); switch (commandId) { case SocketPacket.CommandID.INITIAL_SETTINGS: { ClientPlatform.Platform platform = (ClientPlatform.Platform)msgData[1]; //if (platform == 2) //{ // PS3StackTracer ps3tracer = new PS3StackTracer(m_config.PS3BinPath, // m_config.Verbose, m_config.UseCr, // m_config.UseError); // StackTracer = ps3tracer; //} m_64bit = (platform == ClientPlatform.Platform.WINDOWS_64); if (m_64bit) { m_addressSize = 8; } m_maxTagLen = (int)msgData[2]; m_maxSnapshotNameLen = (int)msgData[3]; m_maxTracedVarNameLen = (int)msgData[4]; System.Diagnostics.Debug.Assert(m_maxTagLen > 0); System.Diagnostics.Debug.Assert(m_maxSnapshotNameLen > 0); System.Diagnostics.Debug.Assert(m_maxTracedVarNameLen > 0); break; } case SocketPacket.CommandID.MODULE_INFO: { ulong modBase = GetAddress(msgData, 1); int offset = 1 + m_addressSize; ulong modSize = GetInt(msgData, offset); offset += 4; string debugFileName = GetStringFromBuffer(msgData, offset, 128); Invoke(m_delegateAddModuleInfo, new Object[] { debugFileName, modBase, modSize }); m_initialized = true; break; } case SocketPacket.CommandID.ALLOC: { HandleAlloc(msgData); break; } case SocketPacket.CommandID.FREE: { ulong addr = GetAddress(msgData, 1); MemOperation op = new MemOperation(MemOperation.Type.Free); op.UserData = addr; m_memOperations.Add(op); m_globalSnapshot.RemoveBlock(addr); m_dirty = true; // System.Console.Out.WriteLine("Free " + addr.ToString("X") + " " + (m_memOperations.Count - 1)); break; } case SocketPacket.CommandID.TAG_BLOCK: { ulong addr = GetInt(msgData, 1); string tag = GetStringFromBuffer(msgData, (1 + m_addressSize), m_maxTagLen); ulong crc = TagDict.AddTag(tag); m_globalSnapshot.TagBlock(addr, crc); break; } case SocketPacket.CommandID.FRAME_END: { // Only add frame end marker if something interesting happened in this frame. // Otherwise we'd be just wasting memory. if (m_numMemOpsPrevFrame < m_memOperations.Count) { MemOperation op = new MemOperation(MemOperation.Type.FrameEnd); m_memOperations.Add(op); ++m_frame; ++m_numFrames; } m_numMemOpsPrevFrame = m_memOperations.Count; break; } case SocketPacket.CommandID.ADD_SNAPSHOT: { string snapshotName = GetStringFromBuffer(msgData, 1, m_maxSnapshotNameLen); //System.Console.Out.WriteLine("Snapshot " + snapshotName); SnapshotDesc desc = CreateSnapshotDesc(snapshotName); Invoke(m_delegateAddSnapshot, desc); break; } case SocketPacket.CommandID.TRACED_VAR: { int tracedVarValue = (int)GetInt(msgData, 1); string tracedVarName = GetStringFromBuffer(msgData, 5, m_maxTracedVarNameLen); SetTracedVar(tracedVarName, tracedVarValue); break; } default: { System.Diagnostics.Debug.Fail("Unknown command ID: " + commandId); break; } } }