private int FindParamOffset(byte[] data, TcpLogHeader header, LogParamId logParamId, out int currentOffset) { if (data.Length < TcpLogHeader.properSize) { throw new ParamIdDoesNotMatchException("Could not find parameter: " + logParamId.ToString()); } int offset = header.size; int paramId; int dataSize; while (offset < header.packetSize) { paramId = LoadBigEndianUInt16(data, offset); if ((LogParamId)paramId == logParamId) { currentOffset = offset; return(offset + paramIdSize); } dataSize = header.isPtr64 ? LogParams[paramId].size64 : LogParams[paramId].size32; if (LogParams[paramId].type == LogParamTypes.TYPE_CHAR) { dataSize += LoadBigEndianUInt16(data, offset + paramIdSize); } offset += paramIdSize + dataSize; } throw new ParamIdDoesNotMatchException("Could not find parameter: " + logParamId.ToString()); }
private int GetNextParamOffset(byte[] data, TcpLogHeader header, LogParamId logParamId, ref int currentOffset) { if (currentOffset >= header.packetSize) { throw new ParamIdDoesNotMatchException("Could not find parameter: " + logParamId.ToString()); } int paramId = LoadBigEndianUInt16(data, currentOffset); int dataSize = header.isPtr64 ? CriProfiler.LogParams[paramId].size64 : CriProfiler.LogParams[paramId].size32; if (CriProfiler.LogParams[paramId].type == LogParamTypes.TYPE_CHAR) { dataSize += LoadBigEndianUInt16(data, currentOffset + paramIdSize); } /* set parameter id offset */ currentOffset += paramIdSize + dataSize; if ((LogParamId)LoadBigEndianUInt16(data, currentOffset) != logParamId) { throw new ParamIdDoesNotMatchException("Parsed parameter ID does not match with " + logParamId.ToString()); } /* return parameter data offset */ return(currentOffset + paramIdSize); }
private int GetNextParamOffset(byte[] data, TcpLogHeader header, LogParamId logParamId, ref int paramIdOffset) { int paramId = 0; int dataSize = 0; paramId = LoadBigEndianUInt16(data, paramIdOffset); if (header.isPtr64 == true) { dataSize = CriProfiler.LogParams[paramId].size64; } else { dataSize = CriProfiler.LogParams[paramId].size32; } if (CriProfiler.LogParams[paramId].type == LogParamTypes.TYPE_CHAR) { dataSize += LoadBigEndianUInt16(data, paramIdOffset + paramIdSize); } /* set parameter id offset */ paramIdOffset += paramIdSize + dataSize; if ((LogParamId)LoadBigEndianUInt16(data, paramIdOffset) != logParamId) { throw new ParamIdDoesNotMatchException("Parsed parameter ID does not match with " + logParamId.ToString()); } /* return parameter data offset */ return(paramIdOffset + paramIdSize); }
private int GetFirstParamOffset(byte[] data, TcpLogHeader header, LogParamId logParamId, out int paramIdOffset) { /* set parameter id offset */ paramIdOffset = header.size; if ((LogParamId)LoadBigEndianUInt16(data, paramIdOffset) != logParamId) { throw new ParamIdDoesNotMatchException("Parsed parameter ID does not match with " + logParamId.ToString()); } /* return parameter data offset */ return(paramIdOffset + CriProfiler.paramIdSize); }