//
// Copyright (C) 2017 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.

// @generated by protoc-gen-es v2.2.2 with parameter "target=ts"
// @generated from file protos/perfetto/common/data_source_descriptor.proto (package perfetto.protos, syntax proto2)
/* eslint-disable */

import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
import type { FtraceDescriptor } from "./ftrace_descriptor_pb";
import { file_protos_perfetto_common_ftrace_descriptor } from "./ftrace_descriptor_pb";
import type { GpuCounterDescriptor } from "./gpu_counter_descriptor_pb";
import { file_protos_perfetto_common_gpu_counter_descriptor } from "./gpu_counter_descriptor_pb";
import type { TrackEventDescriptor } from "./track_event_descriptor_pb";
import { file_protos_perfetto_common_track_event_descriptor } from "./track_event_descriptor_pb";
import type { Message } from "@bufbuild/protobuf";

/**
 * Describes the file protos/perfetto/common/data_source_descriptor.proto.
 */
export const file_protos_perfetto_common_data_source_descriptor: GenFile = /*@__PURE__*/
  fileDesc("CjNwcm90b3MvcGVyZmV0dG8vY29tbW9uL2RhdGFfc291cmNlX2Rlc2NyaXB0b3IucHJvdG8SD3BlcmZldHRvLnByb3RvcyL+AgoURGF0YVNvdXJjZURlc2NyaXB0b3ISDAoEbmFtZRgBIAEoCRIKCgJpZBgHIAEoBBIbChN3aWxsX25vdGlmeV9vbl9zdG9wGAIgASgIEhwKFHdpbGxfbm90aWZ5X29uX3N0YXJ0GAMgASgIEicKH2hhbmRsZXNfaW5jcmVtZW50YWxfc3RhdGVfY2xlYXIYBCABKAgSEAoIbm9fZmx1c2gYCSABKAgSSQoWZ3B1X2NvdW50ZXJfZGVzY3JpcHRvchgFIAEoCzIlLnBlcmZldHRvLnByb3Rvcy5HcHVDb3VudGVyRGVzY3JpcHRvckICKAESSQoWdHJhY2tfZXZlbnRfZGVzY3JpcHRvchgGIAEoCzIlLnBlcmZldHRvLnByb3Rvcy5UcmFja0V2ZW50RGVzY3JpcHRvckICKAESQAoRZnRyYWNlX2Rlc2NyaXB0b3IYCCABKAsyIS5wZXJmZXR0by5wcm90b3MuRnRyYWNlRGVzY3JpcHRvckICKAE", [file_protos_perfetto_common_ftrace_descriptor, file_protos_perfetto_common_gpu_counter_descriptor, file_protos_perfetto_common_track_event_descriptor]);

/**
 * This message is sent from Producer(s) to the tracing Service when registering
 * to advertise their capabilities. It describes the structure of tracing
 * protos that will be produced by the data source and the supported filters.
 *
 * @generated from message perfetto.protos.DataSourceDescriptor
 */
export type DataSourceDescriptor = Message<"perfetto.protos.DataSourceDescriptor"> & {
  /**
   * e.g., "linux.ftrace", "chromium.tracing"
   *
   * @generated from field: optional string name = 1;
   */
  name: string;

  /**
   * When non-zero, this is a unique ID within the scope of the Producer for
   * this data source (it is NOT globally unique). This is useful to
   * differentiate between data sources with matching names when calling
   * UpdateDataSource(). This field has been introduced in November 2021
   * (v22, Android T) and is not supported on older versions.
   *
   * @generated from field: optional uint64 id = 7;
   */
  id: bigint;

  /**
   * When true the data source is expected to ack the stop request through the
   * NotifyDataSourceStopped() IPC. This field has been introduced after
   * Android P in Jul 2018 and is not supported on older versions.
   *
   * @generated from field: optional bool will_notify_on_stop = 2;
   */
  willNotifyOnStop: boolean;

  /**
   * When true the data source is expected to ack the start request through the
   * NotifyDataSourceStarted() IPC. This field has been introduced after
   * Android P in March 2019 and is not supported on older versions.
   *
   * @generated from field: optional bool will_notify_on_start = 3;
   */
  willNotifyOnStart: boolean;

  /**
   * If true, opt into receiving the ClearIncrementalState() IPC. This should be
   * set if the data source writes packets that refer to previous trace
   * contents, and knows how to stop referring to the already-emitted data.
   *
   * @generated from field: optional bool handles_incremental_state_clear = 4;
   */
  handlesIncrementalStateClear: boolean;

  /**
   * If true, indicates that the data source does nothing upon Flush. This
   * allows the service to reduce the flush-related IPC traffic and better deal
   * with frozen producers (see go/perfetto-frozen). This is usually the case
   * for data sources like 'track_event' that don't have access to the various
   * thread task runners to post a flush task and rely purely on server-side
   * scraping.
   * Introduced in v39 / Android V.
   *
   * @generated from field: optional bool no_flush = 9;
   */
  noFlush: boolean;

  /**
   * Optional specification about available GPU counters.
   *
   * @generated from field: optional perfetto.protos.GpuCounterDescriptor gpu_counter_descriptor = 5;
   */
  gpuCounterDescriptor?: GpuCounterDescriptor;

  /**
   * @generated from field: optional perfetto.protos.TrackEventDescriptor track_event_descriptor = 6;
   */
  trackEventDescriptor?: TrackEventDescriptor;

  /**
   * @generated from field: optional perfetto.protos.FtraceDescriptor ftrace_descriptor = 8;
   */
  ftraceDescriptor?: FtraceDescriptor;
};

/**
 * Describes the message perfetto.protos.DataSourceDescriptor.
 * Use `create(DataSourceDescriptorSchema)` to create a new message.
 */
export const DataSourceDescriptorSchema: GenMessage<DataSourceDescriptor> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_common_data_source_descriptor, 0);

