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

Commit b371b988 authored by Alex Light's avatar Alex Light Committed by Android (Google) Code Review
Browse files

Merge "Revert "Delete atoms.proto from statsd""

parents 20ef395d 217301c3
Loading
Loading
Loading
Loading
+1 −5
Original line number Diff line number Diff line
@@ -912,17 +912,13 @@ java_library_host {
    name: "platformprotos",
    srcs: [
        ":ipconnectivity-proto-src",
        ":libstats_internal_protos",
        "cmds/am/proto/instrumentation_data.proto",
        "cmds/statsd/src/**/*.proto",
        "core/proto/**/*.proto",
        "libs/incident/proto/**/*.proto",
    ],
    proto: {
        include_dirs: [
            "external/protobuf/src",
            "frameworks/proto_logging/stats",
        ],
        include_dirs: ["external/protobuf/src"],
        type: "full",
    },
    // Protos have lots of MissingOverride and similar.
+38 −20
Original line number Diff line number Diff line
@@ -14,6 +14,34 @@
// limitations under the License.
//

// ==========================================================
// Build the library for use on the host
// ==========================================================
cc_library_host_shared {
    name: "libstats_proto_host",
    srcs: [
        "src/atoms.proto",
        "src/atom_field_options.proto",
    ],

    shared_libs: [
        "libplatformprotos",
    ],

    proto: {
        type: "full",
        export_proto_headers: true,
        include_dirs: [
            "external/protobuf/src",
        ],
    },

    export_shared_lib_headers: [
        "libplatformprotos",
    ]

}

cc_defaults {
    name: "statsd_defaults",

@@ -249,8 +277,9 @@ cc_test {
        // atom_field_options.proto needs field_options.proto, but that is
        // not included in libprotobuf-cpp-lite, so compile it here.
        ":libprotobuf-internal-protos",
        ":libstats_internal_protos",

        "src/atom_field_options.proto",
        "src/atoms.proto",
        "src/shell/shell_data.proto",
        "src/stats_log.proto",
        "tests/AlarmMonitor_test.cpp",
@@ -317,10 +346,7 @@ cc_test {

    proto: {
        type: "lite",
        include_dirs: [
            "external/protobuf/src",
            "frameworks/proto_logging/stats",
        ],
        include_dirs: ["external/protobuf/src"],
    },

}
@@ -337,7 +363,6 @@ cc_benchmark {
        // atom_field_options.proto needs field_options.proto, but that is
        // not included in libprotobuf-cpp-lite, so compile it here.
        ":libprotobuf-internal-protos",
        ":libstats_internal_protos",

        "benchmark/duration_metric_benchmark.cpp",
        "benchmark/filter_value_benchmark.cpp",
@@ -347,15 +372,14 @@ cc_benchmark {
        "benchmark/main.cpp",
        "benchmark/metric_util.cpp",
        "benchmark/stats_write_benchmark.cpp",
        "src/atom_field_options.proto",
        "src/atoms.proto",
        "src/stats_log.proto",
    ],

    proto: {
        type: "lite",
        include_dirs: [
            "external/protobuf/src",
            "frameworks/proto_logging/stats",
        ],
        include_dirs: ["external/protobuf/src"],
    },

    cflags: [
@@ -387,14 +411,11 @@ java_library {
    sdk_version: "core_current",
    proto: {
        type: "lite",
        include_dirs: [
            "external/protobuf/src",
            "frameworks/proto_logging/stats",
        ],
        include_dirs: ["external/protobuf/src"],
    },

    srcs: [
        ":libstats_atoms_proto",
        "src/atoms.proto",
        "src/shell/shell_config.proto",
        "src/shell/shell_data.proto",
        "src/stats_log.proto",
@@ -416,13 +437,10 @@ java_library {
    proto: {
        type: "nano",
        output_params: ["store_unknown_fields=true"],
        include_dirs: [
            "external/protobuf/src",
            "frameworks/proto_logging/stats",
        ],
        include_dirs: ["external/protobuf/src"],
    },
    srcs: [
        ":libstats_atoms_proto",
        "src/atoms.proto",
        "src/shell/shell_config.proto",
        "src/shell/shell_data.proto",
        "src/stats_log.proto",
+116 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2018 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

syntax = "proto2";

package android.os.statsd;
option java_package = "com.android.os";
option java_multiple_files = true;
option java_outer_classname = "AtomFieldOptions";

import "google/protobuf/descriptor.proto";

// Used to annotate an atom that represents a state change. A state change atom must have exactly
// ONE exclusive state field, and any number of primary key fields. For example, message
// UidProcessStateChanged {
//    optional int32 uid = 1 [(state_field_option).primary_field = true];
//    optional android.app.ProcessStateEnum state =
//            2 [(state_field_option).exclusive_state = true];
//  }
// Each UidProcessStateChanged atom event represents a state change for a specific uid.
// A new state automatically overrides the previous state.
//
// If the atom has 2 or more primary fields, it means the combination of the
// primary fields are the primary key.
// For example:
// message ThreadStateChanged {
//    optional int32 pid = 1  [(state_field_option).primary_field = true];
//    optional int32 tid = 2  [(state_field_option).primary_field = true];
//    optional int32 state = 3 [(state_field_option).exclusive_state = true];
// }
//
// Sometimes, there is no primary key field, when the state is GLOBAL.
// For example,
// message ScreenStateChanged {
//    optional android.view.DisplayStateEnum state =
//          1 [(state_field_option).exclusive_state = true];
// }
//
// For state atoms with attribution chain, sometimes the primary key is the first uid in the chain.
// For example:
// message AudioStateChanged {
//   repeated AttributionNode attribution_node = 1
//       [(stateFieldOption).primary_field_first_uid = true];
//
//    enum State {
//      OFF = 0;
//      ON = 1;
//      // RESET indicates all audio stopped. Used when it (re)starts (e.g. after it crashes).
//      RESET = 2;
//    }
//    optional State state = 2 [(stateFieldOption).exclusive_state = true];
// }
message StateAtomFieldOption {
    // Fields that represent the key that the state belongs to.
    // Used on simple proto fields. Do not use on attribution chains.
    optional bool primary_field = 1 [default = false];

    // The field that represents the state. It's an exclusive state.
    optional bool exclusive_state = 2 [default = false];

    // Used on an attribution chain field to indicate that the first uid is the
    // primary field.
    optional bool primary_field_first_uid = 3 [default = false];

    // Note: We cannot annotate directly on the enums because many enums are imported from other
    // proto files in the platform. proto-lite cc library does not support annotations unfortunately

    // Knowing the default state value allows state trackers to remove entries that become the
    // default state. If there is no default value specified, the default value is unknown, and all
    // states will be tracked in memory.
    optional int32 default_state_value = 4;

    // A reset state signals all states go to default value. For example, BLE reset means all active
    // BLE scans are to be turned off.
    optional int32 trigger_state_reset_value = 5;

    // If the state change needs to count nesting.
    optional bool nested = 6 [default = true];
}

// Used to generate StatsLog.write APIs.
enum LogMode {
    MODE_UNSET = 0;
    // Log fields as their actual types e.g., all primary data types.
    // Or fields that are hardcoded in stats_log_api_gen tool e.g., AttributionNode
    MODE_AUTOMATIC = 1;
    // Log fields in their proto binary format. These fields will not be parsed in statsd
    MODE_BYTES = 2;
}

extend google.protobuf.FieldOptions {
    // Flags to decorate an atom that presents a state change.
    optional StateAtomFieldOption state_field_option = 50000;

    // Flags to decorate the uid fields in an atom.
    optional bool is_uid = 50001 [default = false];

    optional LogMode log_mode = 50002 [default = MODE_AUTOMATIC];

    repeated string module = 50004;

    optional bool truncate_timestamp = 50005 [default = false];
}
+12608 −0

File added.

Preview size limit exceeded, changes collapsed.

+1 −1
Original line number Diff line number Diff line
@@ -21,7 +21,7 @@ package android.os.statsd;
option java_package = "com.android.os.statsd";
option java_outer_classname = "ShellDataProto";

import "frameworks/proto_logging/stats/atoms.proto";
import "frameworks/base/cmds/statsd/src/atoms.proto";

// The output of shell subscription, including both pulled and pushed subscriptions.
message ShellData {
Loading