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

Commit a99fe6e2 authored by Tej Singh's avatar Tej Singh Committed by android-build-merger
Browse files

Merge "Mainline logging to statsd: native static libs"

am: fe3ebab0

Change-Id: I7c241f209b133ec5465a47e384528c16c4026744
parents 2877796f fe3ebab0
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -82,4 +82,6 @@ extend google.protobuf.FieldOptions {
    optional bool is_uid = 50001 [default = false];

    optional LogMode log_mode = 50002 [default = MODE_AUTOMATIC];

    optional string log_from_module = 50004;
}
+1 −0
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ cc_binary_host {
    shared_libs: [
        "libstats_proto_host",
        "libprotobuf-cpp-full",
        "libbase",
    ],

    proto: {
+40 −8
Original line number Diff line number Diff line
@@ -48,7 +48,9 @@ AtomDecl::AtomDecl(const AtomDecl& that)
      primaryFields(that.primaryFields),
      exclusiveField(that.exclusiveField),
      uidField(that.uidField),
      binaryFields(that.binaryFields) {}
      binaryFields(that.binaryFields),
      hasModule(that.hasModule),
      moduleName(that.moduleName) {}

AtomDecl::AtomDecl(int c, const string& n, const string& m)
    :code(c),
@@ -375,30 +377,60 @@ int collate_atoms(const Descriptor *descriptor, Atoms *atoms) {

    const Descriptor *atom = atomField->message_type();
    AtomDecl atomDecl(atomField->number(), atomField->name(), atom->name());

    if (atomField->options().HasExtension(os::statsd::log_from_module)) {
        atomDecl.hasModule = true;
        atomDecl.moduleName = atomField->options().GetExtension(os::statsd::log_from_module);
    }

    vector<java_type_t> signature;
    errorCount += collate_atom(atom, &atomDecl, &signature);
    if (atomDecl.primaryFields.size() != 0 && atomDecl.exclusiveField == 0) {
        errorCount++;
    }
    atoms->signatures.insert(signature);

    // Add the signature if does not already exist.
    auto signature_to_modules_it = atoms->signatures_to_modules.find(signature);
    if (signature_to_modules_it == atoms->signatures_to_modules.end()) {
        set<string> modules;
        if (atomDecl.hasModule) {
            modules.insert(atomDecl.moduleName);
        }
        atoms->signatures_to_modules[signature] = modules;
    } else {
        if (atomDecl.hasModule) {
            signature_to_modules_it->second.insert(atomDecl.moduleName);
        }
    }
    atoms->decls.insert(atomDecl);

    AtomDecl nonChainedAtomDecl(atomField->number(), atomField->name(), atom->name());
    vector<java_type_t> nonChainedSignature;
    if (get_non_chained_node(atom, &nonChainedAtomDecl, &nonChainedSignature)) {
        atoms->non_chained_signatures.insert(nonChainedSignature);
        auto it = atoms->non_chained_signatures_to_modules.find(signature);
        if (it == atoms->non_chained_signatures_to_modules.end()) {
            set<string> modules_non_chained;
            if (atomDecl.hasModule) {
                modules_non_chained.insert(atomDecl.moduleName);
            }
            atoms->non_chained_signatures_to_modules[nonChainedSignature] = modules_non_chained;
        } else {
            if (atomDecl.hasModule) {
                it->second.insert(atomDecl.moduleName);
            }
        }
        atoms->non_chained_decls.insert(nonChainedAtomDecl);
    }
  }

  if (dbg) {
    printf("signatures = [\n");
    for (set<vector<java_type_t>>::const_iterator it =
             atoms->signatures.begin();
         it != atoms->signatures.end(); it++) {
    for (map<vector<java_type_t>, set<string>>::const_iterator it =
             atoms->signatures_to_modules.begin();
         it != atoms->signatures_to_modules.end(); it++) {
      printf("   ");
      for (vector<java_type_t>::const_iterator jt = it->begin();
           jt != it->end(); jt++) {
      for (vector<java_type_t>::const_iterator jt = it->first.begin();
           jt != it->first.end(); jt++) {
        printf(" %d", (int)*jt);
      }
      printf("\n");
+5 −2
Original line number Diff line number Diff line
@@ -88,6 +88,9 @@ struct AtomDecl {

    vector<int> binaryFields;

    bool hasModule = false;
    string moduleName;

    AtomDecl();
    AtomDecl(const AtomDecl& that);
    AtomDecl(int code, const string& name, const string& message);
@@ -99,10 +102,10 @@ struct AtomDecl {
};

struct Atoms {
    set<vector<java_type_t>> signatures;
    map<vector<java_type_t>, set<string>> signatures_to_modules;
    set<AtomDecl> decls;
    set<AtomDecl> non_chained_decls;
    set<vector<java_type_t>> non_chained_signatures;
    map<vector<java_type_t>, set<string>> non_chained_signatures_to_modules;
};

/**
+262 −133

File changed.

Preview size limit exceeded, changes collapsed.

Loading