// f9f855b960d01b292a3c2642e263e6156d52631e78e0177fe51416ed5bbecc81 proto/profile.proto #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct Profile { /// A description of the samples associated with each Sample.value. /// For a cpu profile this might be: /// \[["cpu","nanoseconds"]\] or \[["wall","seconds"]\] or \[["syscall","count"]\] /// For a heap profile, this might be: /// \[["allocations","count"\], \["space","bytes"]\], /// If one of the values represents the number of events represented /// by the sample, by convention it should be at index 0 and use /// sample_type.unit == "count". #[prost(message, repeated, tag = "1")] pub sample_type: ::prost::alloc::vec::Vec, /// The set of samples recorded in this profile. #[prost(message, repeated, tag = "2")] pub sample: ::prost::alloc::vec::Vec, /// Mapping from address ranges to the image/binary/library mapped /// into that address range. mapping\[0\] will be the main binary. #[prost(message, repeated, tag = "3")] pub mapping: ::prost::alloc::vec::Vec, /// Useful program location #[prost(message, repeated, tag = "4")] pub location: ::prost::alloc::vec::Vec, /// Functions referenced by locations #[prost(message, repeated, tag = "5")] pub function: ::prost::alloc::vec::Vec, /// A common table for strings referenced by various messages. /// string_table\[0\] must always be "". #[prost(string, repeated, tag = "6")] pub string_table: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, /// frames with Function.function_name fully matching the following /// regexp will be dropped from the samples, along with their successors. /// /// Index into string table. #[prost(int64, tag = "7")] pub drop_frames: i64, /// frames with Function.function_name fully matching the following /// regexp will be kept, even if it matches drop_functions. /// /// Index into string table. #[prost(int64, tag = "8")] pub keep_frames: i64, /// Time of collection (UTC) represented as nanoseconds past the epoch. #[prost(int64, tag = "9")] pub time_nanos: i64, /// Duration of the profile, if a duration makes sense. #[prost(int64, tag = "10")] pub duration_nanos: i64, /// The kind of events between sampled ocurrences. /// e.g \[ "cpu","cycles" \] or \[ "heap","bytes" \] #[prost(message, optional, tag = "11")] pub period_type: ::core::option::Option, /// The number of events between sampled occurrences. #[prost(int64, tag = "12")] pub period: i64, /// Freeform text associated to the profile. /// /// Indices into string table. #[prost(int64, repeated, tag = "13")] pub comment: ::prost::alloc::vec::Vec, /// Index into the string table of the type of the preferred sample /// value. If unset, clients should default to the last sample value. #[prost(int64, tag = "14")] pub default_sample_type: i64, } /// ValueType describes the semantics and measurement units of a value. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct ValueType { /// Rename it from type to ty to avoid using keyword in Rust. /// /// Index into string table. #[prost(int64, tag = "1")] pub ty: i64, /// Index into string table. #[prost(int64, tag = "2")] pub unit: i64, } /// Each Sample records values encountered in some program /// context. The program context is typically a stack trace, perhaps /// augmented with auxiliary information like the thread-id, some /// indicator of a higher level request being handled etc. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct Sample { /// The ids recorded here correspond to a Profile.location.id. /// The leaf is at location_id\[0\]. #[prost(uint64, repeated, tag = "1")] pub location_id: ::prost::alloc::vec::Vec, /// The type and unit of each value is defined by the corresponding /// entry in Profile.sample_type. All samples must have the same /// number of values, the same as the length of Profile.sample_type. /// When aggregating multiple samples into a single sample, the /// result has a list of values that is the elemntwise sum of the /// lists of the originals. #[prost(int64, repeated, tag = "2")] pub value: ::prost::alloc::vec::Vec, /// label includes additional context for this sample. It can include /// things like a thread id, allocation size, etc #[prost(message, repeated, tag = "3")] pub label: ::prost::alloc::vec::Vec