Loading cmds/statsd/src/atom_field_options.proto +2 −0 Original line number Diff line number Diff line Loading @@ -84,4 +84,6 @@ extend google.protobuf.FieldOptions { optional LogMode log_mode = 50002 [default = MODE_AUTOMATIC]; optional bool allow_from_any_uid = 50003 [default = false]; optional string log_from_module = 50004; } No newline at end of file tools/stats_log_api_gen/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ cc_binary_host { shared_libs: [ "libstats_proto_host", "libprotobuf-cpp-full", "libbase", ], proto: { Loading tools/stats_log_api_gen/Collation.cpp +40 −9 Original line number Diff line number Diff line Loading @@ -49,7 +49,9 @@ AtomDecl::AtomDecl(const AtomDecl& that) exclusiveField(that.exclusiveField), uidField(that.uidField), whitelisted(that.whitelisted), binaryFields(that.binaryFields) {} binaryFields(that.binaryFields), hasModule(that.hasModule), moduleName(that.moduleName) {} AtomDecl::AtomDecl(int c, const string& n, const string& m) :code(c), Loading Loading @@ -394,30 +396,59 @@ int collate_atoms(const Descriptor *descriptor, Atoms *atoms) { atomDecl.whitelisted = true; } 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"); Loading tools/stats_log_api_gen/Collation.h +5 −2 Original line number Diff line number Diff line Loading @@ -93,6 +93,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); Loading @@ -104,10 +107,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; }; /** Loading tools/stats_log_api_gen/main.cpp +268 −134 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
cmds/statsd/src/atom_field_options.proto +2 −0 Original line number Diff line number Diff line Loading @@ -84,4 +84,6 @@ extend google.protobuf.FieldOptions { optional LogMode log_mode = 50002 [default = MODE_AUTOMATIC]; optional bool allow_from_any_uid = 50003 [default = false]; optional string log_from_module = 50004; } No newline at end of file
tools/stats_log_api_gen/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ cc_binary_host { shared_libs: [ "libstats_proto_host", "libprotobuf-cpp-full", "libbase", ], proto: { Loading
tools/stats_log_api_gen/Collation.cpp +40 −9 Original line number Diff line number Diff line Loading @@ -49,7 +49,9 @@ AtomDecl::AtomDecl(const AtomDecl& that) exclusiveField(that.exclusiveField), uidField(that.uidField), whitelisted(that.whitelisted), binaryFields(that.binaryFields) {} binaryFields(that.binaryFields), hasModule(that.hasModule), moduleName(that.moduleName) {} AtomDecl::AtomDecl(int c, const string& n, const string& m) :code(c), Loading Loading @@ -394,30 +396,59 @@ int collate_atoms(const Descriptor *descriptor, Atoms *atoms) { atomDecl.whitelisted = true; } 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"); Loading
tools/stats_log_api_gen/Collation.h +5 −2 Original line number Diff line number Diff line Loading @@ -93,6 +93,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); Loading @@ -104,10 +107,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; }; /** Loading
tools/stats_log_api_gen/main.cpp +268 −134 File changed.Preview size limit exceeded, changes collapsed. Show changes