/*
 * Copyright (C) 2022 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 perfetto.protos;

// Deliberate empty message. See comment on StatsdAtom#atom below.
message Atom {}

// One or more statsd atoms. Ideally this should continue to match:
// perfetto/protos/third_party/statsd/shell_data.proto
// So that we can efficiently add data from statsd directly to the
// trace.
message StatsdAtom {
  // Atom should be filled with an Atom proto from:
  // https://cs.android.com/android/platform/superproject/+/master:frameworks/proto_logging/stats/atoms.proto?q=f:stats%2Fatoms.proto$%20message%5C%20Atom
  // We don't reference Atom directly here since we don't want to import
  // Atom.proto and all its transitive dependencies into Perfetto.
  // atom and timestamp_nanos have the same cardinality
  repeated Atom atom = 1;
  repeated int64 timestamp_nanos = 2;
}
