Example #1
0
    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);
    }
Example #2
0
    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());
    }
Example #3
0
    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);
    }
Example #4
0
    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);
    }