Home | History | Annotate | Download | only in core
      1 /*
      2  * Copyright (C) 2017 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 /*******************************************************************************
     18  * AUTOGENERATED - DO NOT EDIT
     19  *******************************************************************************
     20  * This file has been generated from the protobuf message
     21  * perfetto/config/trace_config.proto
     22  * by
     23  * ../../tools/proto_to_cpp/proto_to_cpp.cc.
     24  * If you need to make changes here, change the .proto file and then run
     25  * ./tools/gen_tracing_cpp_headers_from_protos
     26  */
     27 
     28 #ifndef INCLUDE_PERFETTO_TRACING_CORE_TRACE_CONFIG_H_
     29 #define INCLUDE_PERFETTO_TRACING_CORE_TRACE_CONFIG_H_
     30 
     31 #include <stdint.h>
     32 #include <string>
     33 #include <type_traits>
     34 #include <vector>
     35 
     36 #include "perfetto/base/export.h"
     37 
     38 #include "perfetto/tracing/core/data_source_config.h"
     39 
     40 // Forward declarations for protobuf types.
     41 namespace perfetto {
     42 namespace protos {
     43 class TraceConfig;
     44 class TraceConfig_BufferConfig;
     45 class TraceConfig_DataSource;
     46 class DataSourceConfig;
     47 class FtraceConfig;
     48 class ChromeConfig;
     49 class InodeFileConfig;
     50 class InodeFileConfig_MountPointMappingEntry;
     51 class ProcessStatsConfig;
     52 class SysStatsConfig;
     53 class HeapprofdConfig;
     54 class HeapprofdConfig_ContinuousDumpConfig;
     55 class AndroidPowerConfig;
     56 class AndroidLogConfig;
     57 class PackagesListConfig;
     58 class TestConfig;
     59 class TestConfig_DummyFields;
     60 class TraceConfig_BuiltinDataSource;
     61 class TraceConfig_ProducerConfig;
     62 class TraceConfig_StatsdMetadata;
     63 class TraceConfig_GuardrailOverrides;
     64 class TraceConfig_TriggerConfig;
     65 class TraceConfig_TriggerConfig_Trigger;
     66 class TraceConfig_IncrementalStateConfig;
     67 class TraceConfig_IncidentReportConfig;
     68 }  // namespace protos
     69 }  // namespace perfetto
     70 
     71 namespace perfetto {
     72 
     73 class PERFETTO_EXPORT TraceConfig {
     74  public:
     75   class PERFETTO_EXPORT BufferConfig {
     76    public:
     77     enum FillPolicy {
     78       UNSPECIFIED = 0,
     79       RING_BUFFER = 1,
     80       DISCARD = 2,
     81     };
     82     BufferConfig();
     83     ~BufferConfig();
     84     BufferConfig(BufferConfig&&) noexcept;
     85     BufferConfig& operator=(BufferConfig&&);
     86     BufferConfig(const BufferConfig&);
     87     BufferConfig& operator=(const BufferConfig&);
     88     bool operator==(const BufferConfig&) const;
     89     bool operator!=(const BufferConfig& other) const {
     90       return !(*this == other);
     91     }
     92 
     93     // Conversion methods from/to the corresponding protobuf types.
     94     void FromProto(const perfetto::protos::TraceConfig_BufferConfig&);
     95     void ToProto(perfetto::protos::TraceConfig_BufferConfig*) const;
     96 
     97     uint32_t size_kb() const { return size_kb_; }
     98     void set_size_kb(uint32_t value) { size_kb_ = value; }
     99 
    100     FillPolicy fill_policy() const { return fill_policy_; }
    101     void set_fill_policy(FillPolicy value) { fill_policy_ = value; }
    102 
    103    private:
    104     uint32_t size_kb_ = {};
    105     FillPolicy fill_policy_ = {};
    106 
    107     // Allows to preserve unknown protobuf fields for compatibility
    108     // with future versions of .proto files.
    109     std::string unknown_fields_;
    110   };
    111 
    112   class PERFETTO_EXPORT DataSource {
    113    public:
    114     DataSource();
    115     ~DataSource();
    116     DataSource(DataSource&&) noexcept;
    117     DataSource& operator=(DataSource&&);
    118     DataSource(const DataSource&);
    119     DataSource& operator=(const DataSource&);
    120     bool operator==(const DataSource&) const;
    121     bool operator!=(const DataSource& other) const { return !(*this == other); }
    122 
    123     // Conversion methods from/to the corresponding protobuf types.
    124     void FromProto(const perfetto::protos::TraceConfig_DataSource&);
    125     void ToProto(perfetto::protos::TraceConfig_DataSource*) const;
    126 
    127     const DataSourceConfig& config() const { return config_; }
    128     DataSourceConfig* mutable_config() { return &config_; }
    129 
    130     int producer_name_filter_size() const {
    131       return static_cast<int>(producer_name_filter_.size());
    132     }
    133     const std::vector<std::string>& producer_name_filter() const {
    134       return producer_name_filter_;
    135     }
    136     std::vector<std::string>* mutable_producer_name_filter() {
    137       return &producer_name_filter_;
    138     }
    139     void clear_producer_name_filter() { producer_name_filter_.clear(); }
    140     std::string* add_producer_name_filter() {
    141       producer_name_filter_.emplace_back();
    142       return &producer_name_filter_.back();
    143     }
    144 
    145    private:
    146     DataSourceConfig config_ = {};
    147     std::vector<std::string> producer_name_filter_;
    148 
    149     // Allows to preserve unknown protobuf fields for compatibility
    150     // with future versions of .proto files.
    151     std::string unknown_fields_;
    152   };
    153 
    154   class PERFETTO_EXPORT BuiltinDataSource {
    155    public:
    156     BuiltinDataSource();
    157     ~BuiltinDataSource();
    158     BuiltinDataSource(BuiltinDataSource&&) noexcept;
    159     BuiltinDataSource& operator=(BuiltinDataSource&&);
    160     BuiltinDataSource(const BuiltinDataSource&);
    161     BuiltinDataSource& operator=(const BuiltinDataSource&);
    162     bool operator==(const BuiltinDataSource&) const;
    163     bool operator!=(const BuiltinDataSource& other) const {
    164       return !(*this == other);
    165     }
    166 
    167     // Conversion methods from/to the corresponding protobuf types.
    168     void FromProto(const perfetto::protos::TraceConfig_BuiltinDataSource&);
    169     void ToProto(perfetto::protos::TraceConfig_BuiltinDataSource*) const;
    170 
    171     bool disable_clock_snapshotting() const {
    172       return disable_clock_snapshotting_;
    173     }
    174     void set_disable_clock_snapshotting(bool value) {
    175       disable_clock_snapshotting_ = value;
    176     }
    177 
    178     bool disable_trace_config() const { return disable_trace_config_; }
    179     void set_disable_trace_config(bool value) { disable_trace_config_ = value; }
    180 
    181     bool disable_system_info() const { return disable_system_info_; }
    182     void set_disable_system_info(bool value) { disable_system_info_ = value; }
    183 
    184    private:
    185     bool disable_clock_snapshotting_ = {};
    186     bool disable_trace_config_ = {};
    187     bool disable_system_info_ = {};
    188 
    189     // Allows to preserve unknown protobuf fields for compatibility
    190     // with future versions of .proto files.
    191     std::string unknown_fields_;
    192   };
    193 
    194   enum LockdownModeOperation {
    195     LOCKDOWN_UNCHANGED = 0,
    196     LOCKDOWN_CLEAR = 1,
    197     LOCKDOWN_SET = 2,
    198   };
    199 
    200   class PERFETTO_EXPORT ProducerConfig {
    201    public:
    202     ProducerConfig();
    203     ~ProducerConfig();
    204     ProducerConfig(ProducerConfig&&) noexcept;
    205     ProducerConfig& operator=(ProducerConfig&&);
    206     ProducerConfig(const ProducerConfig&);
    207     ProducerConfig& operator=(const ProducerConfig&);
    208     bool operator==(const ProducerConfig&) const;
    209     bool operator!=(const ProducerConfig& other) const {
    210       return !(*this == other);
    211     }
    212 
    213     // Conversion methods from/to the corresponding protobuf types.
    214     void FromProto(const perfetto::protos::TraceConfig_ProducerConfig&);
    215     void ToProto(perfetto::protos::TraceConfig_ProducerConfig*) const;
    216 
    217     const std::string& producer_name() const { return producer_name_; }
    218     void set_producer_name(const std::string& value) { producer_name_ = value; }
    219 
    220     uint32_t shm_size_kb() const { return shm_size_kb_; }
    221     void set_shm_size_kb(uint32_t value) { shm_size_kb_ = value; }
    222 
    223     uint32_t page_size_kb() const { return page_size_kb_; }
    224     void set_page_size_kb(uint32_t value) { page_size_kb_ = value; }
    225 
    226    private:
    227     std::string producer_name_ = {};
    228     uint32_t shm_size_kb_ = {};
    229     uint32_t page_size_kb_ = {};
    230 
    231     // Allows to preserve unknown protobuf fields for compatibility
    232     // with future versions of .proto files.
    233     std::string unknown_fields_;
    234   };
    235 
    236   class PERFETTO_EXPORT StatsdMetadata {
    237    public:
    238     StatsdMetadata();
    239     ~StatsdMetadata();
    240     StatsdMetadata(StatsdMetadata&&) noexcept;
    241     StatsdMetadata& operator=(StatsdMetadata&&);
    242     StatsdMetadata(const StatsdMetadata&);
    243     StatsdMetadata& operator=(const StatsdMetadata&);
    244     bool operator==(const StatsdMetadata&) const;
    245     bool operator!=(const StatsdMetadata& other) const {
    246       return !(*this == other);
    247     }
    248 
    249     // Conversion methods from/to the corresponding protobuf types.
    250     void FromProto(const perfetto::protos::TraceConfig_StatsdMetadata&);
    251     void ToProto(perfetto::protos::TraceConfig_StatsdMetadata*) const;
    252 
    253     int64_t triggering_alert_id() const { return triggering_alert_id_; }
    254     void set_triggering_alert_id(int64_t value) {
    255       triggering_alert_id_ = value;
    256     }
    257 
    258     int32_t triggering_config_uid() const { return triggering_config_uid_; }
    259     void set_triggering_config_uid(int32_t value) {
    260       triggering_config_uid_ = value;
    261     }
    262 
    263     int64_t triggering_config_id() const { return triggering_config_id_; }
    264     void set_triggering_config_id(int64_t value) {
    265       triggering_config_id_ = value;
    266     }
    267 
    268     int64_t triggering_subscription_id() const {
    269       return triggering_subscription_id_;
    270     }
    271     void set_triggering_subscription_id(int64_t value) {
    272       triggering_subscription_id_ = value;
    273     }
    274 
    275    private:
    276     int64_t triggering_alert_id_ = {};
    277     int32_t triggering_config_uid_ = {};
    278     int64_t triggering_config_id_ = {};
    279     int64_t triggering_subscription_id_ = {};
    280 
    281     // Allows to preserve unknown protobuf fields for compatibility
    282     // with future versions of .proto files.
    283     std::string unknown_fields_;
    284   };
    285 
    286   class PERFETTO_EXPORT GuardrailOverrides {
    287    public:
    288     GuardrailOverrides();
    289     ~GuardrailOverrides();
    290     GuardrailOverrides(GuardrailOverrides&&) noexcept;
    291     GuardrailOverrides& operator=(GuardrailOverrides&&);
    292     GuardrailOverrides(const GuardrailOverrides&);
    293     GuardrailOverrides& operator=(const GuardrailOverrides&);
    294     bool operator==(const GuardrailOverrides&) const;
    295     bool operator!=(const GuardrailOverrides& other) const {
    296       return !(*this == other);
    297     }
    298 
    299     // Conversion methods from/to the corresponding protobuf types.
    300     void FromProto(const perfetto::protos::TraceConfig_GuardrailOverrides&);
    301     void ToProto(perfetto::protos::TraceConfig_GuardrailOverrides*) const;
    302 
    303     uint64_t max_upload_per_day_bytes() const {
    304       return max_upload_per_day_bytes_;
    305     }
    306     void set_max_upload_per_day_bytes(uint64_t value) {
    307       max_upload_per_day_bytes_ = value;
    308     }
    309 
    310    private:
    311     uint64_t max_upload_per_day_bytes_ = {};
    312 
    313     // Allows to preserve unknown protobuf fields for compatibility
    314     // with future versions of .proto files.
    315     std::string unknown_fields_;
    316   };
    317 
    318   class PERFETTO_EXPORT TriggerConfig {
    319    public:
    320     enum TriggerMode {
    321       UNSPECIFIED = 0,
    322       START_TRACING = 1,
    323       STOP_TRACING = 2,
    324     };
    325 
    326     class PERFETTO_EXPORT Trigger {
    327      public:
    328       Trigger();
    329       ~Trigger();
    330       Trigger(Trigger&&) noexcept;
    331       Trigger& operator=(Trigger&&);
    332       Trigger(const Trigger&);
    333       Trigger& operator=(const Trigger&);
    334       bool operator==(const Trigger&) const;
    335       bool operator!=(const Trigger& other) const { return !(*this == other); }
    336 
    337       // Conversion methods from/to the corresponding protobuf types.
    338       void FromProto(
    339           const perfetto::protos::TraceConfig_TriggerConfig_Trigger&);
    340       void ToProto(perfetto::protos::TraceConfig_TriggerConfig_Trigger*) const;
    341 
    342       const std::string& name() const { return name_; }
    343       void set_name(const std::string& value) { name_ = value; }
    344 
    345       const std::string& producer_name_regex() const {
    346         return producer_name_regex_;
    347       }
    348       void set_producer_name_regex(const std::string& value) {
    349         producer_name_regex_ = value;
    350       }
    351 
    352       uint32_t stop_delay_ms() const { return stop_delay_ms_; }
    353       void set_stop_delay_ms(uint32_t value) { stop_delay_ms_ = value; }
    354 
    355      private:
    356       std::string name_ = {};
    357       std::string producer_name_regex_ = {};
    358       uint32_t stop_delay_ms_ = {};
    359 
    360       // Allows to preserve unknown protobuf fields for compatibility
    361       // with future versions of .proto files.
    362       std::string unknown_fields_;
    363     };
    364 
    365     TriggerConfig();
    366     ~TriggerConfig();
    367     TriggerConfig(TriggerConfig&&) noexcept;
    368     TriggerConfig& operator=(TriggerConfig&&);
    369     TriggerConfig(const TriggerConfig&);
    370     TriggerConfig& operator=(const TriggerConfig&);
    371     bool operator==(const TriggerConfig&) const;
    372     bool operator!=(const TriggerConfig& other) const {
    373       return !(*this == other);
    374     }
    375 
    376     // Conversion methods from/to the corresponding protobuf types.
    377     void FromProto(const perfetto::protos::TraceConfig_TriggerConfig&);
    378     void ToProto(perfetto::protos::TraceConfig_TriggerConfig*) const;
    379 
    380     TriggerMode trigger_mode() const { return trigger_mode_; }
    381     void set_trigger_mode(TriggerMode value) { trigger_mode_ = value; }
    382 
    383     int triggers_size() const { return static_cast<int>(triggers_.size()); }
    384     const std::vector<Trigger>& triggers() const { return triggers_; }
    385     std::vector<Trigger>* mutable_triggers() { return &triggers_; }
    386     void clear_triggers() { triggers_.clear(); }
    387     Trigger* add_triggers() {
    388       triggers_.emplace_back();
    389       return &triggers_.back();
    390     }
    391 
    392     uint32_t trigger_timeout_ms() const { return trigger_timeout_ms_; }
    393     void set_trigger_timeout_ms(uint32_t value) { trigger_timeout_ms_ = value; }
    394 
    395    private:
    396     TriggerMode trigger_mode_ = {};
    397     std::vector<Trigger> triggers_;
    398     uint32_t trigger_timeout_ms_ = {};
    399 
    400     // Allows to preserve unknown protobuf fields for compatibility
    401     // with future versions of .proto files.
    402     std::string unknown_fields_;
    403   };
    404 
    405   class PERFETTO_EXPORT IncrementalStateConfig {
    406    public:
    407     IncrementalStateConfig();
    408     ~IncrementalStateConfig();
    409     IncrementalStateConfig(IncrementalStateConfig&&) noexcept;
    410     IncrementalStateConfig& operator=(IncrementalStateConfig&&);
    411     IncrementalStateConfig(const IncrementalStateConfig&);
    412     IncrementalStateConfig& operator=(const IncrementalStateConfig&);
    413     bool operator==(const IncrementalStateConfig&) const;
    414     bool operator!=(const IncrementalStateConfig& other) const {
    415       return !(*this == other);
    416     }
    417 
    418     // Conversion methods from/to the corresponding protobuf types.
    419     void FromProto(const perfetto::protos::TraceConfig_IncrementalStateConfig&);
    420     void ToProto(perfetto::protos::TraceConfig_IncrementalStateConfig*) const;
    421 
    422     uint32_t clear_period_ms() const { return clear_period_ms_; }
    423     void set_clear_period_ms(uint32_t value) { clear_period_ms_ = value; }
    424 
    425    private:
    426     uint32_t clear_period_ms_ = {};
    427 
    428     // Allows to preserve unknown protobuf fields for compatibility
    429     // with future versions of .proto files.
    430     std::string unknown_fields_;
    431   };
    432 
    433   enum CompressionType {
    434     COMPRESSION_TYPE_UNSPECIFIED = 0,
    435     COMPRESSION_TYPE_DEFLATE = 1,
    436   };
    437 
    438   class PERFETTO_EXPORT IncidentReportConfig {
    439    public:
    440     IncidentReportConfig();
    441     ~IncidentReportConfig();
    442     IncidentReportConfig(IncidentReportConfig&&) noexcept;
    443     IncidentReportConfig& operator=(IncidentReportConfig&&);
    444     IncidentReportConfig(const IncidentReportConfig&);
    445     IncidentReportConfig& operator=(const IncidentReportConfig&);
    446     bool operator==(const IncidentReportConfig&) const;
    447     bool operator!=(const IncidentReportConfig& other) const {
    448       return !(*this == other);
    449     }
    450 
    451     // Conversion methods from/to the corresponding protobuf types.
    452     void FromProto(const perfetto::protos::TraceConfig_IncidentReportConfig&);
    453     void ToProto(perfetto::protos::TraceConfig_IncidentReportConfig*) const;
    454 
    455     const std::string& destination_package() const {
    456       return destination_package_;
    457     }
    458     void set_destination_package(const std::string& value) {
    459       destination_package_ = value;
    460     }
    461 
    462     const std::string& destination_class() const { return destination_class_; }
    463     void set_destination_class(const std::string& value) {
    464       destination_class_ = value;
    465     }
    466 
    467     int32_t privacy_level() const { return privacy_level_; }
    468     void set_privacy_level(int32_t value) { privacy_level_ = value; }
    469 
    470     bool skip_dropbox() const { return skip_dropbox_; }
    471     void set_skip_dropbox(bool value) { skip_dropbox_ = value; }
    472 
    473    private:
    474     std::string destination_package_ = {};
    475     std::string destination_class_ = {};
    476     int32_t privacy_level_ = {};
    477     bool skip_dropbox_ = {};
    478 
    479     // Allows to preserve unknown protobuf fields for compatibility
    480     // with future versions of .proto files.
    481     std::string unknown_fields_;
    482   };
    483 
    484   TraceConfig();
    485   ~TraceConfig();
    486   TraceConfig(TraceConfig&&) noexcept;
    487   TraceConfig& operator=(TraceConfig&&);
    488   TraceConfig(const TraceConfig&);
    489   TraceConfig& operator=(const TraceConfig&);
    490   bool operator==(const TraceConfig&) const;
    491   bool operator!=(const TraceConfig& other) const { return !(*this == other); }
    492 
    493   // Conversion methods from/to the corresponding protobuf types.
    494   void FromProto(const perfetto::protos::TraceConfig&);
    495   void ToProto(perfetto::protos::TraceConfig*) const;
    496 
    497   int buffers_size() const { return static_cast<int>(buffers_.size()); }
    498   const std::vector<BufferConfig>& buffers() const { return buffers_; }
    499   std::vector<BufferConfig>* mutable_buffers() { return &buffers_; }
    500   void clear_buffers() { buffers_.clear(); }
    501   BufferConfig* add_buffers() {
    502     buffers_.emplace_back();
    503     return &buffers_.back();
    504   }
    505 
    506   int data_sources_size() const {
    507     return static_cast<int>(data_sources_.size());
    508   }
    509   const std::vector<DataSource>& data_sources() const { return data_sources_; }
    510   std::vector<DataSource>* mutable_data_sources() { return &data_sources_; }
    511   void clear_data_sources() { data_sources_.clear(); }
    512   DataSource* add_data_sources() {
    513     data_sources_.emplace_back();
    514     return &data_sources_.back();
    515   }
    516 
    517   const BuiltinDataSource& builtin_data_sources() const {
    518     return builtin_data_sources_;
    519   }
    520   BuiltinDataSource* mutable_builtin_data_sources() {
    521     return &builtin_data_sources_;
    522   }
    523 
    524   uint32_t duration_ms() const { return duration_ms_; }
    525   void set_duration_ms(uint32_t value) { duration_ms_ = value; }
    526 
    527   bool enable_extra_guardrails() const { return enable_extra_guardrails_; }
    528   void set_enable_extra_guardrails(bool value) {
    529     enable_extra_guardrails_ = value;
    530   }
    531 
    532   LockdownModeOperation lockdown_mode() const { return lockdown_mode_; }
    533   void set_lockdown_mode(LockdownModeOperation value) {
    534     lockdown_mode_ = value;
    535   }
    536 
    537   int producers_size() const { return static_cast<int>(producers_.size()); }
    538   const std::vector<ProducerConfig>& producers() const { return producers_; }
    539   std::vector<ProducerConfig>* mutable_producers() { return &producers_; }
    540   void clear_producers() { producers_.clear(); }
    541   ProducerConfig* add_producers() {
    542     producers_.emplace_back();
    543     return &producers_.back();
    544   }
    545 
    546   const StatsdMetadata& statsd_metadata() const { return statsd_metadata_; }
    547   StatsdMetadata* mutable_statsd_metadata() { return &statsd_metadata_; }
    548 
    549   bool write_into_file() const { return write_into_file_; }
    550   void set_write_into_file(bool value) { write_into_file_ = value; }
    551 
    552   uint32_t file_write_period_ms() const { return file_write_period_ms_; }
    553   void set_file_write_period_ms(uint32_t value) {
    554     file_write_period_ms_ = value;
    555   }
    556 
    557   uint64_t max_file_size_bytes() const { return max_file_size_bytes_; }
    558   void set_max_file_size_bytes(uint64_t value) { max_file_size_bytes_ = value; }
    559 
    560   const GuardrailOverrides& guardrail_overrides() const {
    561     return guardrail_overrides_;
    562   }
    563   GuardrailOverrides* mutable_guardrail_overrides() {
    564     return &guardrail_overrides_;
    565   }
    566 
    567   bool deferred_start() const { return deferred_start_; }
    568   void set_deferred_start(bool value) { deferred_start_ = value; }
    569 
    570   uint32_t flush_period_ms() const { return flush_period_ms_; }
    571   void set_flush_period_ms(uint32_t value) { flush_period_ms_ = value; }
    572 
    573   uint32_t flush_timeout_ms() const { return flush_timeout_ms_; }
    574   void set_flush_timeout_ms(uint32_t value) { flush_timeout_ms_ = value; }
    575 
    576   bool notify_traceur() const { return notify_traceur_; }
    577   void set_notify_traceur(bool value) { notify_traceur_ = value; }
    578 
    579   const TriggerConfig& trigger_config() const { return trigger_config_; }
    580   TriggerConfig* mutable_trigger_config() { return &trigger_config_; }
    581 
    582   int activate_triggers_size() const {
    583     return static_cast<int>(activate_triggers_.size());
    584   }
    585   const std::vector<std::string>& activate_triggers() const {
    586     return activate_triggers_;
    587   }
    588   std::vector<std::string>* mutable_activate_triggers() {
    589     return &activate_triggers_;
    590   }
    591   void clear_activate_triggers() { activate_triggers_.clear(); }
    592   std::string* add_activate_triggers() {
    593     activate_triggers_.emplace_back();
    594     return &activate_triggers_.back();
    595   }
    596 
    597   const IncrementalStateConfig& incremental_state_config() const {
    598     return incremental_state_config_;
    599   }
    600   IncrementalStateConfig* mutable_incremental_state_config() {
    601     return &incremental_state_config_;
    602   }
    603 
    604   bool allow_user_build_tracing() const { return allow_user_build_tracing_; }
    605   void set_allow_user_build_tracing(bool value) {
    606     allow_user_build_tracing_ = value;
    607   }
    608 
    609   const std::string& unique_session_name() const {
    610     return unique_session_name_;
    611   }
    612   void set_unique_session_name(const std::string& value) {
    613     unique_session_name_ = value;
    614   }
    615 
    616   CompressionType compression_type() const { return compression_type_; }
    617   void set_compression_type(CompressionType value) {
    618     compression_type_ = value;
    619   }
    620 
    621   const IncidentReportConfig& incident_report_config() const {
    622     return incident_report_config_;
    623   }
    624   IncidentReportConfig* mutable_incident_report_config() {
    625     return &incident_report_config_;
    626   }
    627 
    628  private:
    629   std::vector<BufferConfig> buffers_;
    630   std::vector<DataSource> data_sources_;
    631   BuiltinDataSource builtin_data_sources_ = {};
    632   uint32_t duration_ms_ = {};
    633   bool enable_extra_guardrails_ = {};
    634   LockdownModeOperation lockdown_mode_ = {};
    635   std::vector<ProducerConfig> producers_;
    636   StatsdMetadata statsd_metadata_ = {};
    637   bool write_into_file_ = {};
    638   uint32_t file_write_period_ms_ = {};
    639   uint64_t max_file_size_bytes_ = {};
    640   GuardrailOverrides guardrail_overrides_ = {};
    641   bool deferred_start_ = {};
    642   uint32_t flush_period_ms_ = {};
    643   uint32_t flush_timeout_ms_ = {};
    644   bool notify_traceur_ = {};
    645   TriggerConfig trigger_config_ = {};
    646   std::vector<std::string> activate_triggers_;
    647   IncrementalStateConfig incremental_state_config_ = {};
    648   bool allow_user_build_tracing_ = {};
    649   std::string unique_session_name_ = {};
    650   CompressionType compression_type_ = {};
    651   IncidentReportConfig incident_report_config_ = {};
    652 
    653   // Allows to preserve unknown protobuf fields for compatibility
    654   // with future versions of .proto files.
    655   std::string unknown_fields_;
    656 };
    657 
    658 }  // namespace perfetto
    659 
    660 #endif  // INCLUDE_PERFETTO_TRACING_CORE_TRACE_CONFIG_H_
    661