Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 272cae6e authored by Ruchir Rastogi's avatar Ruchir Rastogi Committed by Android (Google) Code Review
Browse files

Merge "Reduce memory footprint of LogEvent" into rvc-dev

parents 74b8acae 1e8c57f3
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -227,8 +227,8 @@ void LogEvent::parseAttributionChain(int32_t* pos, int32_t depth, bool* last,
    }
    // Check if at least one node was successfully parsed.
    if (mValues.size() - 1 > firstUidInChainIndex) {
        mAttributionChainStartIndex = firstUidInChainIndex;
        mAttributionChainEndIndex = mValues.size() - 1;
        mAttributionChainStartIndex = static_cast<int8_t>(firstUidInChainIndex);
        mAttributionChainEndIndex = static_cast<int8_t>(mValues.size() - 1);
    }

    parseAnnotations(numAnnotations, firstUidInChainIndex);
@@ -249,7 +249,7 @@ void LogEvent::parseIsUidAnnotation(uint8_t annotationType) {
    }

    bool isUid = readNextValue<uint8_t>();
    if (isUid) mUidFieldIndex = mValues.size() - 1;
    if (isUid) mUidFieldIndex = static_cast<int8_t>(mValues.size() - 1);
    mValues[mValues.size() - 1].mAnnotations.setUidField(isUid);
}

@@ -290,7 +290,7 @@ void LogEvent::parseExclusiveStateAnnotation(uint8_t annotationType) {
    }

    const bool exclusiveState = readNextValue<uint8_t>();
    mExclusiveStateFieldIndex = mValues.size() - 1;
    mExclusiveStateFieldIndex = static_cast<int8_t>(mValues.size() - 1);
    mValues[getExclusiveStateFieldIndex()].mAnnotations.setExclusiveState(exclusiveState);
}

@@ -408,7 +408,7 @@ bool LogEvent::parseBuffer(uint8_t* buf, size_t len) {
                parseAttributionChain(pos, /*depth=*/0, last, getNumAnnotations(typeInfo));
                break;
            case ERROR_TYPE:
                mErrorBitmask = readNextValue<int32_t>();
                /* mErrorBitmask =*/ readNextValue<int32_t>();
                mValid = false;
                break;
            default:
@@ -577,8 +577,8 @@ bool LogEvent::hasAttributionChain(std::pair<int, int>* indexRange) const {
    }

    if (nullptr != indexRange) {
        indexRange->first = mAttributionChainStartIndex;
        indexRange->second = mAttributionChainEndIndex;
        indexRange->first = static_cast<int>(mAttributionChainStartIndex);
        indexRange->second = static_cast<int>(mAttributionChainEndIndex);
    }

    return true;
+9 −13
Original line number Diff line number Diff line
@@ -160,7 +160,7 @@ public:
    //    }
    // Note that atomIndex is 1-indexed.
    inline int getUidFieldIndex() {
        return mUidFieldIndex;
        return static_cast<int>(mUidFieldIndex);
    }

    // Returns whether this LogEvent has an AttributionChain.
@@ -179,7 +179,7 @@ public:
    //    }
    // Note that atomIndex is 1-indexed.
    inline int getExclusiveStateFieldIndex() const {
        return mExclusiveStateFieldIndex;
        return static_cast<int>(mExclusiveStateFieldIndex);
    }

    // If a reset state is not sent in the StatsEvent, returns -1. Note that a
@@ -212,10 +212,6 @@ public:
        return mValid;
    }

    int32_t getErrorBitmask() const {
        return mErrorBitmask;
    }

private:
    /**
     * Only use this if copy is absolutely needed.
@@ -316,16 +312,16 @@ private:
    // The pid of the logging client (defaults to -1).
    int32_t mLogPid = -1;

    // Bitmask of errors sent by StatsEvent/AStatsEvent.
    int32_t mErrorBitmask = 0;

    // Annotations
    bool mTruncateTimestamp = false;
    int mUidFieldIndex = -1;
    int mAttributionChainStartIndex = -1;
    int mAttributionChainEndIndex = -1;
    int mExclusiveStateFieldIndex = -1;
    int mResetState = -1;

    // Indexes within the FieldValue vector can be stored in 7 bits because
    // that's the assumption enforced by the encoding used in FieldValue.
    int8_t mUidFieldIndex = -1;
    int8_t mAttributionChainStartIndex = -1;
    int8_t mAttributionChainEndIndex = -1;
    int8_t mExclusiveStateFieldIndex = -1;
};

void writeExperimentIdsToProto(const std::vector<int64_t>& experimentIds, std::vector<uint8_t>* protoOut);