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

Commit 0deb0e3d authored by Salud Lemus's avatar Salud Lemus
Browse files

Revert "Revert "Add pulled atoms support for native clients in s..."

Revert submission 12182663-revert-12111163-native pulled atoms support-NYTWIBBAKX

Reason for revert: Uploaded CL that guards the use of the symbol "AStatsEvent_getBuffer"
Reverted Changes:
Ib6cc99e9b:Revert "Make libstatspull host supported"
I665448247:Revert "Add pulled atoms support for native client...

Change-Id: I59d861fc9ffc6f03cc0dbd34e82a4df4f51f0cb9
parent 8b84a38e
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ aidl_interface {
        "android/os/StatsDimensionsValueParcel.aidl",
        "android/util/StatsEventParcel.aidl",
    ],
    host_supported: true,
    backend: {
        java: {
            enabled: false, // framework-statsd and service-statsd use framework-statsd-aidl-sources
+7 −2
Original line number Diff line number Diff line
@@ -171,7 +171,8 @@ cc_library_static {
    export_generated_headers: ["statslog_statsdtest.h"],
    shared_libs: [
        "libstatssocket",
    ]
        "libstatspull",
    ],
}

cc_library_static {
@@ -185,7 +186,11 @@ cc_library_static {
    ],
    shared_libs: [
        "libstatssocket",
    ]
        "libstatspull",
    ],
    export_shared_lib_headers: [
        "libstatspull",
    ],
}

// =========
+18 −2
Original line number Diff line number Diff line
@@ -121,10 +121,26 @@ cc_library {
    ],
    target: {
        android: {
            shared_libs: ["libstatssocket"],
            shared_libs: [
                "libstatssocket",
                "libstatspull",
            ],
            export_shared_lib_headers: [
                 "libstatssocket",
                 "libstatspull",
            ],
        },
        host: {
            static_libs: ["libstatssocket"],
            static_libs: [
                "libstatssocket",
                "libstatspull",
                "statsd-aidl-ndk_platform",
            ],
            shared_libs: ["libbinder_ndk"],
            export_static_lib_headers: [
                "libstatssocket",
                "libstatspull",
            ],
        },
    },
}
+127 −63
Original line number Diff line number Diff line
@@ -82,134 +82,148 @@ static void write_annotations(FILE* out, int argIndex,
    }
}

static int write_native_stats_write_methods(FILE* out, const Atoms& atoms,
                                            const AtomDecl& attributionDecl, const bool supportQ) {
    fprintf(out, "\n");
    for (auto signatureInfoMapIt = atoms.signatureInfoMap.begin();
         signatureInfoMapIt != atoms.signatureInfoMap.end(); signatureInfoMapIt++) {
        vector<java_type_t> signature = signatureInfoMapIt->first;
        const FieldNumberToAtomDeclSet& fieldNumberToAtomDeclSet = signatureInfoMapIt->second;
        // Key value pairs not supported in native.
        if (find(signature.begin(), signature.end(), JAVA_TYPE_KEY_VALUE_PAIR) != signature.end()) {
            continue;
        }
        write_native_method_signature(out, "int stats_write", signature, attributionDecl, " {");

static int write_native_method_body(FILE* out, vector<java_type_t>& signature,
                                    const FieldNumberToAtomDeclSet& fieldNumberToAtomDeclSet,
                                    const AtomDecl& attributionDecl) {
    int argIndex = 1;
        if (supportQ) {
            fprintf(out, "    StatsEventCompat event;\n");
            fprintf(out, "    event.setAtomId(code);\n");
            write_annotations(out, ATOM_ID_FIELD_NUMBER, fieldNumberToAtomDeclSet, "event.", "");
    fprintf(out, "    AStatsEvent_setAtomId(event, code);\n");
    write_annotations(out, ATOM_ID_FIELD_NUMBER, fieldNumberToAtomDeclSet, "AStatsEvent_",
                      "event, ");
    for (vector<java_type_t>::const_iterator arg = signature.begin();
         arg != signature.end(); arg++) {
        switch (*arg) {
            case JAVA_TYPE_ATTRIBUTION_CHAIN: {
                const char* uidName = attributionDecl.fields.front().name.c_str();
                const char* tagName = attributionDecl.fields.back().name.c_str();
                        fprintf(out, "    event.writeAttributionChain(%s, %s_length, %s);\n",
                                uidName, uidName, tagName);
                fprintf(out,
                        "    AStatsEvent_writeAttributionChain(event, "
                        "reinterpret_cast<const uint32_t*>(%s), %s.data(), "
                        "static_cast<uint8_t>(%s_length));\n",
                        uidName, tagName, uidName);
                break;
            }
            case JAVA_TYPE_BYTE_ARRAY:
                        fprintf(out, "    event.writeByteArray(arg%d.arg, arg%d.arg_length);\n",
                fprintf(out,
                        "    AStatsEvent_writeByteArray(event, "
                        "reinterpret_cast<const uint8_t*>(arg%d.arg), "
                        "arg%d.arg_length);\n",
                        argIndex, argIndex);
                break;
            case JAVA_TYPE_BOOLEAN:
                        fprintf(out, "    event.writeBool(arg%d);\n", argIndex);
                fprintf(out, "    AStatsEvent_writeBool(event, arg%d);\n", argIndex);
                break;
            case JAVA_TYPE_INT:  // Fall through.
            case JAVA_TYPE_ENUM:
                        fprintf(out, "    event.writeInt32(arg%d);\n", argIndex);
                fprintf(out, "    AStatsEvent_writeInt32(event, arg%d);\n", argIndex);
                break;
            case JAVA_TYPE_FLOAT:
                        fprintf(out, "    event.writeFloat(arg%d);\n", argIndex);
                fprintf(out, "    AStatsEvent_writeFloat(event, arg%d);\n", argIndex);
                break;
            case JAVA_TYPE_LONG:
                        fprintf(out, "    event.writeInt64(arg%d);\n", argIndex);
                fprintf(out, "    AStatsEvent_writeInt64(event, arg%d);\n", argIndex);
                break;
            case JAVA_TYPE_STRING:
                        fprintf(out, "    event.writeString(arg%d);\n", argIndex);
                fprintf(out, "    AStatsEvent_writeString(event, arg%d);\n", argIndex);
                break;
            default:
                        // Unsupported types: OBJECT, DOUBLE, KEY_VALUE_PAIRS.
                // Unsupported types: OBJECT, DOUBLE, KEY_VALUE_PAIRS
                fprintf(stderr, "Encountered unsupported type.");
                return 1;
        }
                write_annotations(out, argIndex, fieldNumberToAtomDeclSet, "event.", "");
        write_annotations(out, argIndex, fieldNumberToAtomDeclSet, "AStatsEvent_",
                          "event, ");
        argIndex++;
    }
            fprintf(out, "    return event.writeToSocket();\n");
        } else {
            fprintf(out, "    AStatsEvent* event = AStatsEvent_obtain();\n");
            fprintf(out, "    AStatsEvent_setAtomId(event, code);\n");
            write_annotations(out, ATOM_ID_FIELD_NUMBER, fieldNumberToAtomDeclSet, "AStatsEvent_",
                              "event, ");
    return 0;
}

static int write_native_stats_write_methods(FILE* out, const SignatureInfoMap& signatureInfoMap,
                                            const AtomDecl& attributionDecl, const bool supportQ) {
    fprintf(out, "\n");
    for (auto signatureInfoMapIt = signatureInfoMap.begin();
         signatureInfoMapIt != signatureInfoMap.end(); signatureInfoMapIt++) {
        vector<java_type_t> signature = signatureInfoMapIt->first;
        const FieldNumberToAtomDeclSet& fieldNumberToAtomDeclSet = signatureInfoMapIt->second;
        // Key value pairs not supported in native.
        if (find(signature.begin(), signature.end(), JAVA_TYPE_KEY_VALUE_PAIR) != signature.end()) {
            continue;
        }
        write_native_method_signature(out, "int stats_write(", signature, attributionDecl, " {");

        // Write method body.
        if (supportQ) {
            int argIndex = 1;
            fprintf(out, "    StatsEventCompat event;\n");
            fprintf(out, "    event.setAtomId(code);\n");
            write_annotations(out, ATOM_ID_FIELD_NUMBER, fieldNumberToAtomDeclSet, "event.", "");
            for (vector<java_type_t>::const_iterator arg = signature.begin();
                 arg != signature.end(); arg++) {
                switch (*arg) {
                    case JAVA_TYPE_ATTRIBUTION_CHAIN: {
                        const char* uidName = attributionDecl.fields.front().name.c_str();
                        const char* tagName = attributionDecl.fields.back().name.c_str();
                        fprintf(out,
                                "    AStatsEvent_writeAttributionChain(event, "
                                "reinterpret_cast<const uint32_t*>(%s), %s.data(), "
                                "static_cast<uint8_t>(%s_length));\n",
                                uidName, tagName, uidName);
                        fprintf(out, "    event.writeAttributionChain(%s, %s_length, %s);\n",
                                uidName, uidName, tagName);
                        break;
                    }
                    case JAVA_TYPE_BYTE_ARRAY:
                        fprintf(out,
                                "    AStatsEvent_writeByteArray(event, "
                                "reinterpret_cast<const uint8_t*>(arg%d.arg), "
                                "arg%d.arg_length);\n",
                        fprintf(out, "    event.writeByteArray(arg%d.arg, arg%d.arg_length);\n",
                                argIndex, argIndex);
                        break;
                    case JAVA_TYPE_BOOLEAN:
                        fprintf(out, "    AStatsEvent_writeBool(event, arg%d);\n", argIndex);
                        fprintf(out, "    event.writeBool(arg%d);\n", argIndex);
                        break;
                    case JAVA_TYPE_INT:  // Fall through.
                    case JAVA_TYPE_ENUM:
                        fprintf(out, "    AStatsEvent_writeInt32(event, arg%d);\n", argIndex);
                        fprintf(out, "    event.writeInt32(arg%d);\n", argIndex);
                        break;
                    case JAVA_TYPE_FLOAT:
                        fprintf(out, "    AStatsEvent_writeFloat(event, arg%d);\n", argIndex);
                        fprintf(out, "    event.writeFloat(arg%d);\n", argIndex);
                        break;
                    case JAVA_TYPE_LONG:
                        fprintf(out, "    AStatsEvent_writeInt64(event, arg%d);\n", argIndex);
                        fprintf(out, "    event.writeInt64(arg%d);\n", argIndex);
                        break;
                    case JAVA_TYPE_STRING:
                        fprintf(out, "    AStatsEvent_writeString(event, arg%d);\n", argIndex);
                        fprintf(out, "    event.writeString(arg%d);\n", argIndex);
                        break;
                    default:
                        // Unsupported types: OBJECT, DOUBLE, KEY_VALUE_PAIRS
                        // Unsupported types: OBJECT, DOUBLE, KEY_VALUE_PAIRS.
                        fprintf(stderr, "Encountered unsupported type.");
                        return 1;
                }
                write_annotations(out, argIndex, fieldNumberToAtomDeclSet, "AStatsEvent_",
                                  "event, ");
                write_annotations(out, argIndex, fieldNumberToAtomDeclSet, "event.", "");
                argIndex++;
            }
            fprintf(out, "    return event.writeToSocket();\n"); // end method body.
        } else {
            fprintf(out, "    AStatsEvent* event = AStatsEvent_obtain();\n");
            int ret = write_native_method_body(out, signature, fieldNumberToAtomDeclSet,
                                               attributionDecl);
            if (ret != 0) {
                return ret;
            }
            fprintf(out, "    const int ret = AStatsEvent_write(event);\n");
            fprintf(out, "    AStatsEvent_release(event);\n");
            fprintf(out, "    return ret;\n");
            fprintf(out, "    return ret;\n"); // end method body.
        }
        fprintf(out, "}\n\n");
        fprintf(out, "}\n\n"); // end method.
    }
    return 0;
}

static void write_native_stats_write_non_chained_methods(FILE* out, const Atoms& atoms,
static void write_native_stats_write_non_chained_methods(FILE* out,
                                                         const SignatureInfoMap& signatureInfoMap,
                                                         const AtomDecl& attributionDecl) {
    fprintf(out, "\n");
    for (auto signature_it = atoms.nonChainedSignatureInfoMap.begin();
         signature_it != atoms.nonChainedSignatureInfoMap.end(); signature_it++) {
    for (auto signature_it = signatureInfoMap.begin();
         signature_it != signatureInfoMap.end(); signature_it++) {
        vector<java_type_t> signature = signature_it->first;
        // Key value pairs not supported in native.
        if (find(signature.begin(), signature.end(), JAVA_TYPE_KEY_VALUE_PAIR) != signature.end()) {
            continue;
        }

        write_native_method_signature(out, "int stats_write_non_chained", signature,
        write_native_method_signature(out, "int stats_write_non_chained(", signature,
                                      attributionDecl, " {");

        vector<java_type_t> newSignature;
@@ -235,6 +249,34 @@ static void write_native_stats_write_non_chained_methods(FILE* out, const Atoms&
    }
}

static int write_native_build_stats_event_methods(FILE* out,
                                                  const SignatureInfoMap& signatureInfoMap,
                                                  const AtomDecl& attributionDecl) {
    fprintf(out, "\n");
    for (auto signatureInfoMapIt = signatureInfoMap.begin();
         signatureInfoMapIt != signatureInfoMap.end(); signatureInfoMapIt++) {
        vector<java_type_t> signature = signatureInfoMapIt->first;
        const FieldNumberToAtomDeclSet& fieldNumberToAtomDeclSet = signatureInfoMapIt->second;
        // Key value pairs not supported in native.
        if (find(signature.begin(), signature.end(), JAVA_TYPE_KEY_VALUE_PAIR) != signature.end()) {
            continue;
        }
        write_native_method_signature(out, "void addAStatsEvent(AStatsEventList* pulled_data, ",
                                      signature, attributionDecl, " {");

        fprintf(out, "    AStatsEvent* event = AStatsEventList_addStatsEvent(pulled_data);\n");
        int ret = write_native_method_body(out, signature, fieldNumberToAtomDeclSet,
                                           attributionDecl);
        if (ret != 0) {
            return ret;
        }
        fprintf(out, "    AStatsEvent_build(event);\n"); // end method body.

        fprintf(out, "}\n\n"); // end method.
    }
    return 0;
}

static void write_native_method_header(FILE* out, const string& methodName,
                                       const SignatureInfoMap& signatureInfoMap,
                                       const AtomDecl& attributionDecl) {
@@ -262,13 +304,22 @@ int write_stats_log_cpp(FILE* out, const Atoms& atoms, const AtomDecl& attributi
        fprintf(out, "#include <StatsEventCompat.h>\n");
    } else {
        fprintf(out, "#include <stats_event.h>\n");

        if (!atoms.pulledAtomsSignatureInfoMap.empty()) {
            fprintf(out, "#include <stats_pull_atom_callback.h>\n");
        }
    }



    fprintf(out, "\n");
    write_namespace(out, cppNamespace);

    write_native_stats_write_methods(out, atoms, attributionDecl, supportQ);
    write_native_stats_write_non_chained_methods(out, atoms, attributionDecl);
    write_native_stats_write_methods(out, atoms.signatureInfoMap, attributionDecl, supportQ);
    write_native_stats_write_non_chained_methods(out, atoms.nonChainedSignatureInfoMap,
                                                 attributionDecl);
    write_native_build_stats_event_methods(out, atoms.pulledAtomsSignatureInfoMap,
                                           attributionDecl);

    // Print footer
    fprintf(out, "\n");
@@ -288,6 +339,9 @@ int write_stats_log_header(FILE* out, const Atoms& atoms, const AtomDecl& attrib
    fprintf(out, "#include <vector>\n");
    fprintf(out, "#include <map>\n");
    fprintf(out, "#include <set>\n");
    if (!atoms.pulledAtomsSignatureInfoMap.empty()) {
        fprintf(out, "#include <stats_pull_atom_callback.h>\n");
    }
    fprintf(out, "\n");

    write_namespace(out, cppNamespace);
@@ -337,12 +391,22 @@ int write_stats_log_header(FILE* out, const Atoms& atoms, const AtomDecl& attrib
    fprintf(out, "//\n");
    fprintf(out, "// Write methods\n");
    fprintf(out, "//\n");
    write_native_method_header(out, "int stats_write", atoms.signatureInfoMap, attributionDecl);
    write_native_method_header(out, "int stats_write(", atoms.signatureInfoMap, attributionDecl);
    fprintf(out, "\n");

    fprintf(out, "//\n");
    fprintf(out, "// Write flattened methods\n");
    fprintf(out, "//\n");
    write_native_method_header(out, "int stats_write_non_chained", atoms.nonChainedSignatureInfoMap,
    write_native_method_header(out, "int stats_write_non_chained(", atoms.nonChainedSignatureInfoMap,
                               attributionDecl);
    fprintf(out, "\n");

    // Print pulled atoms methods.
    fprintf(out, "//\n");
    fprintf(out, "// Add AStatsEvent methods\n");
    fprintf(out, "//\n");
    write_native_method_header(out, "void addAStatsEvent(AStatsEventList* pulled_data, ",
                               atoms.pulledAtomsSignatureInfoMap,
                               attributionDecl);

    fprintf(out, "\n");
+2 −2
Original line number Diff line number Diff line
@@ -182,10 +182,10 @@ void write_native_atom_constants(FILE* out, const Atoms& atoms, const AtomDecl&
    fprintf(out, "\n");
}

void write_native_method_signature(FILE* out, const string& methodName,
void write_native_method_signature(FILE* out, const string& signaturePrefix,
                                   const vector<java_type_t>& signature,
                                   const AtomDecl& attributionDecl, const string& closer) {
    fprintf(out, "%s(int32_t code", methodName.c_str());
    fprintf(out, "%sint32_t code", signaturePrefix.c_str());
    int argIndex = 1;
    for (vector<java_type_t>::const_iterator arg = signature.begin(); arg != signature.end();
         arg++) {
Loading