google_cloud_rust_raw/api/
quota.rs

1// This file is generated by rust-protobuf 2.28.0. Do not edit
2// @generated
3
4// https://github.com/rust-lang/rust-clippy/issues/702
5#![allow(unknown_lints)]
6#![allow(clippy::all)]
7
8#![allow(unused_attributes)]
9#![cfg_attr(rustfmt, rustfmt::skip)]
10
11#![allow(box_pointers)]
12#![allow(dead_code)]
13#![allow(missing_docs)]
14#![allow(non_camel_case_types)]
15#![allow(non_snake_case)]
16#![allow(non_upper_case_globals)]
17#![allow(trivial_casts)]
18#![allow(unused_imports)]
19#![allow(unused_results)]
20//! Generated file from `google/api/quota.proto`
21
22/// Generated files are compatible only with the same version
23/// of protobuf runtime.
24// const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_2_28_0;
25
26#[derive(PartialEq,Clone,Default)]
27pub struct Quota {
28    // message fields
29    pub limits: ::protobuf::RepeatedField<QuotaLimit>,
30    pub metric_rules: ::protobuf::RepeatedField<MetricRule>,
31    // special fields
32    pub unknown_fields: ::protobuf::UnknownFields,
33    pub cached_size: ::protobuf::CachedSize,
34}
35
36impl<'a> ::std::default::Default for &'a Quota {
37    fn default() -> &'a Quota {
38        <Quota as ::protobuf::Message>::default_instance()
39    }
40}
41
42impl Quota {
43    pub fn new() -> Quota {
44        ::std::default::Default::default()
45    }
46
47    // repeated .google.api.QuotaLimit limits = 3;
48
49
50    pub fn get_limits(&self) -> &[QuotaLimit] {
51        &self.limits
52    }
53    pub fn clear_limits(&mut self) {
54        self.limits.clear();
55    }
56
57    // Param is passed by value, moved
58    pub fn set_limits(&mut self, v: ::protobuf::RepeatedField<QuotaLimit>) {
59        self.limits = v;
60    }
61
62    // Mutable pointer to the field.
63    pub fn mut_limits(&mut self) -> &mut ::protobuf::RepeatedField<QuotaLimit> {
64        &mut self.limits
65    }
66
67    // Take field
68    pub fn take_limits(&mut self) -> ::protobuf::RepeatedField<QuotaLimit> {
69        ::std::mem::replace(&mut self.limits, ::protobuf::RepeatedField::new())
70    }
71
72    // repeated .google.api.MetricRule metric_rules = 4;
73
74
75    pub fn get_metric_rules(&self) -> &[MetricRule] {
76        &self.metric_rules
77    }
78    pub fn clear_metric_rules(&mut self) {
79        self.metric_rules.clear();
80    }
81
82    // Param is passed by value, moved
83    pub fn set_metric_rules(&mut self, v: ::protobuf::RepeatedField<MetricRule>) {
84        self.metric_rules = v;
85    }
86
87    // Mutable pointer to the field.
88    pub fn mut_metric_rules(&mut self) -> &mut ::protobuf::RepeatedField<MetricRule> {
89        &mut self.metric_rules
90    }
91
92    // Take field
93    pub fn take_metric_rules(&mut self) -> ::protobuf::RepeatedField<MetricRule> {
94        ::std::mem::replace(&mut self.metric_rules, ::protobuf::RepeatedField::new())
95    }
96}
97
98impl ::protobuf::Message for Quota {
99    fn is_initialized(&self) -> bool {
100        for v in &self.limits {
101            if !v.is_initialized() {
102                return false;
103            }
104        };
105        for v in &self.metric_rules {
106            if !v.is_initialized() {
107                return false;
108            }
109        };
110        true
111    }
112
113    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
114        while !is.eof()? {
115            let (field_number, wire_type) = is.read_tag_unpack()?;
116            match field_number {
117                3 => {
118                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.limits)?;
119                },
120                4 => {
121                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.metric_rules)?;
122                },
123                _ => {
124                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
125                },
126            };
127        }
128        ::std::result::Result::Ok(())
129    }
130
131    // Compute sizes of nested messages
132    #[allow(unused_variables)]
133    fn compute_size(&self) -> u32 {
134        let mut my_size = 0;
135        for value in &self.limits {
136            let len = value.compute_size();
137            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
138        };
139        for value in &self.metric_rules {
140            let len = value.compute_size();
141            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
142        };
143        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
144        self.cached_size.set(my_size);
145        my_size
146    }
147
148    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
149        for v in &self.limits {
150            os.write_tag(3, ::protobuf::wire_format::WireTypeLengthDelimited)?;
151            os.write_raw_varint32(v.get_cached_size())?;
152            v.write_to_with_cached_sizes(os)?;
153        };
154        for v in &self.metric_rules {
155            os.write_tag(4, ::protobuf::wire_format::WireTypeLengthDelimited)?;
156            os.write_raw_varint32(v.get_cached_size())?;
157            v.write_to_with_cached_sizes(os)?;
158        };
159        os.write_unknown_fields(self.get_unknown_fields())?;
160        ::std::result::Result::Ok(())
161    }
162
163    fn get_cached_size(&self) -> u32 {
164        self.cached_size.get()
165    }
166
167    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
168        &self.unknown_fields
169    }
170
171    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
172        &mut self.unknown_fields
173    }
174
175    fn as_any(&self) -> &dyn (::std::any::Any) {
176        self as &dyn (::std::any::Any)
177    }
178    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
179        self as &mut dyn (::std::any::Any)
180    }
181    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
182        self
183    }
184
185    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
186        Self::descriptor_static()
187    }
188
189    fn new() -> Quota {
190        Quota::new()
191    }
192
193    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
194        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
195        descriptor.get(|| {
196            let mut fields = ::std::vec::Vec::new();
197            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<QuotaLimit>>(
198                "limits",
199                |m: &Quota| { &m.limits },
200                |m: &mut Quota| { &mut m.limits },
201            ));
202            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<MetricRule>>(
203                "metric_rules",
204                |m: &Quota| { &m.metric_rules },
205                |m: &mut Quota| { &mut m.metric_rules },
206            ));
207            ::protobuf::reflect::MessageDescriptor::new_pb_name::<Quota>(
208                "Quota",
209                fields,
210                file_descriptor_proto()
211            )
212        })
213    }
214
215    fn default_instance() -> &'static Quota {
216        static instance: ::protobuf::rt::LazyV2<Quota> = ::protobuf::rt::LazyV2::INIT;
217        instance.get(Quota::new)
218    }
219}
220
221impl ::protobuf::Clear for Quota {
222    fn clear(&mut self) {
223        self.limits.clear();
224        self.metric_rules.clear();
225        self.unknown_fields.clear();
226    }
227}
228
229impl ::std::fmt::Debug for Quota {
230    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
231        ::protobuf::text_format::fmt(self, f)
232    }
233}
234
235impl ::protobuf::reflect::ProtobufValue for Quota {
236    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
237        ::protobuf::reflect::ReflectValueRef::Message(self)
238    }
239}
240
241#[derive(PartialEq,Clone,Default)]
242pub struct MetricRule {
243    // message fields
244    pub selector: ::std::string::String,
245    pub metric_costs: ::std::collections::HashMap<::std::string::String, i64>,
246    // special fields
247    pub unknown_fields: ::protobuf::UnknownFields,
248    pub cached_size: ::protobuf::CachedSize,
249}
250
251impl<'a> ::std::default::Default for &'a MetricRule {
252    fn default() -> &'a MetricRule {
253        <MetricRule as ::protobuf::Message>::default_instance()
254    }
255}
256
257impl MetricRule {
258    pub fn new() -> MetricRule {
259        ::std::default::Default::default()
260    }
261
262    // string selector = 1;
263
264
265    pub fn get_selector(&self) -> &str {
266        &self.selector
267    }
268    pub fn clear_selector(&mut self) {
269        self.selector.clear();
270    }
271
272    // Param is passed by value, moved
273    pub fn set_selector(&mut self, v: ::std::string::String) {
274        self.selector = v;
275    }
276
277    // Mutable pointer to the field.
278    // If field is not initialized, it is initialized with default value first.
279    pub fn mut_selector(&mut self) -> &mut ::std::string::String {
280        &mut self.selector
281    }
282
283    // Take field
284    pub fn take_selector(&mut self) -> ::std::string::String {
285        ::std::mem::replace(&mut self.selector, ::std::string::String::new())
286    }
287
288    // repeated .google.api.MetricRule.MetricCostsEntry metric_costs = 2;
289
290
291    pub fn get_metric_costs(&self) -> &::std::collections::HashMap<::std::string::String, i64> {
292        &self.metric_costs
293    }
294    pub fn clear_metric_costs(&mut self) {
295        self.metric_costs.clear();
296    }
297
298    // Param is passed by value, moved
299    pub fn set_metric_costs(&mut self, v: ::std::collections::HashMap<::std::string::String, i64>) {
300        self.metric_costs = v;
301    }
302
303    // Mutable pointer to the field.
304    pub fn mut_metric_costs(&mut self) -> &mut ::std::collections::HashMap<::std::string::String, i64> {
305        &mut self.metric_costs
306    }
307
308    // Take field
309    pub fn take_metric_costs(&mut self) -> ::std::collections::HashMap<::std::string::String, i64> {
310        ::std::mem::replace(&mut self.metric_costs, ::std::collections::HashMap::new())
311    }
312}
313
314impl ::protobuf::Message for MetricRule {
315    fn is_initialized(&self) -> bool {
316        true
317    }
318
319    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
320        while !is.eof()? {
321            let (field_number, wire_type) = is.read_tag_unpack()?;
322            match field_number {
323                1 => {
324                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.selector)?;
325                },
326                2 => {
327                    ::protobuf::rt::read_map_into::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeInt64>(wire_type, is, &mut self.metric_costs)?;
328                },
329                _ => {
330                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
331                },
332            };
333        }
334        ::std::result::Result::Ok(())
335    }
336
337    // Compute sizes of nested messages
338    #[allow(unused_variables)]
339    fn compute_size(&self) -> u32 {
340        let mut my_size = 0;
341        if !self.selector.is_empty() {
342            my_size += ::protobuf::rt::string_size(1, &self.selector);
343        }
344        my_size += ::protobuf::rt::compute_map_size::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeInt64>(2, &self.metric_costs);
345        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
346        self.cached_size.set(my_size);
347        my_size
348    }
349
350    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
351        if !self.selector.is_empty() {
352            os.write_string(1, &self.selector)?;
353        }
354        ::protobuf::rt::write_map_with_cached_sizes::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeInt64>(2, &self.metric_costs, os)?;
355        os.write_unknown_fields(self.get_unknown_fields())?;
356        ::std::result::Result::Ok(())
357    }
358
359    fn get_cached_size(&self) -> u32 {
360        self.cached_size.get()
361    }
362
363    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
364        &self.unknown_fields
365    }
366
367    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
368        &mut self.unknown_fields
369    }
370
371    fn as_any(&self) -> &dyn (::std::any::Any) {
372        self as &dyn (::std::any::Any)
373    }
374    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
375        self as &mut dyn (::std::any::Any)
376    }
377    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
378        self
379    }
380
381    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
382        Self::descriptor_static()
383    }
384
385    fn new() -> MetricRule {
386        MetricRule::new()
387    }
388
389    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
390        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
391        descriptor.get(|| {
392            let mut fields = ::std::vec::Vec::new();
393            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
394                "selector",
395                |m: &MetricRule| { &m.selector },
396                |m: &mut MetricRule| { &mut m.selector },
397            ));
398            fields.push(::protobuf::reflect::accessor::make_map_accessor::<_, ::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeInt64>(
399                "metric_costs",
400                |m: &MetricRule| { &m.metric_costs },
401                |m: &mut MetricRule| { &mut m.metric_costs },
402            ));
403            ::protobuf::reflect::MessageDescriptor::new_pb_name::<MetricRule>(
404                "MetricRule",
405                fields,
406                file_descriptor_proto()
407            )
408        })
409    }
410
411    fn default_instance() -> &'static MetricRule {
412        static instance: ::protobuf::rt::LazyV2<MetricRule> = ::protobuf::rt::LazyV2::INIT;
413        instance.get(MetricRule::new)
414    }
415}
416
417impl ::protobuf::Clear for MetricRule {
418    fn clear(&mut self) {
419        self.selector.clear();
420        self.metric_costs.clear();
421        self.unknown_fields.clear();
422    }
423}
424
425impl ::std::fmt::Debug for MetricRule {
426    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
427        ::protobuf::text_format::fmt(self, f)
428    }
429}
430
431impl ::protobuf::reflect::ProtobufValue for MetricRule {
432    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
433        ::protobuf::reflect::ReflectValueRef::Message(self)
434    }
435}
436
437#[derive(PartialEq,Clone,Default)]
438pub struct QuotaLimit {
439    // message fields
440    pub name: ::std::string::String,
441    pub description: ::std::string::String,
442    pub default_limit: i64,
443    pub max_limit: i64,
444    pub free_tier: i64,
445    pub duration: ::std::string::String,
446    pub metric: ::std::string::String,
447    pub unit: ::std::string::String,
448    pub values: ::std::collections::HashMap<::std::string::String, i64>,
449    pub display_name: ::std::string::String,
450    // special fields
451    pub unknown_fields: ::protobuf::UnknownFields,
452    pub cached_size: ::protobuf::CachedSize,
453}
454
455impl<'a> ::std::default::Default for &'a QuotaLimit {
456    fn default() -> &'a QuotaLimit {
457        <QuotaLimit as ::protobuf::Message>::default_instance()
458    }
459}
460
461impl QuotaLimit {
462    pub fn new() -> QuotaLimit {
463        ::std::default::Default::default()
464    }
465
466    // string name = 6;
467
468
469    pub fn get_name(&self) -> &str {
470        &self.name
471    }
472    pub fn clear_name(&mut self) {
473        self.name.clear();
474    }
475
476    // Param is passed by value, moved
477    pub fn set_name(&mut self, v: ::std::string::String) {
478        self.name = v;
479    }
480
481    // Mutable pointer to the field.
482    // If field is not initialized, it is initialized with default value first.
483    pub fn mut_name(&mut self) -> &mut ::std::string::String {
484        &mut self.name
485    }
486
487    // Take field
488    pub fn take_name(&mut self) -> ::std::string::String {
489        ::std::mem::replace(&mut self.name, ::std::string::String::new())
490    }
491
492    // string description = 2;
493
494
495    pub fn get_description(&self) -> &str {
496        &self.description
497    }
498    pub fn clear_description(&mut self) {
499        self.description.clear();
500    }
501
502    // Param is passed by value, moved
503    pub fn set_description(&mut self, v: ::std::string::String) {
504        self.description = v;
505    }
506
507    // Mutable pointer to the field.
508    // If field is not initialized, it is initialized with default value first.
509    pub fn mut_description(&mut self) -> &mut ::std::string::String {
510        &mut self.description
511    }
512
513    // Take field
514    pub fn take_description(&mut self) -> ::std::string::String {
515        ::std::mem::replace(&mut self.description, ::std::string::String::new())
516    }
517
518    // int64 default_limit = 3;
519
520
521    pub fn get_default_limit(&self) -> i64 {
522        self.default_limit
523    }
524    pub fn clear_default_limit(&mut self) {
525        self.default_limit = 0;
526    }
527
528    // Param is passed by value, moved
529    pub fn set_default_limit(&mut self, v: i64) {
530        self.default_limit = v;
531    }
532
533    // int64 max_limit = 4;
534
535
536    pub fn get_max_limit(&self) -> i64 {
537        self.max_limit
538    }
539    pub fn clear_max_limit(&mut self) {
540        self.max_limit = 0;
541    }
542
543    // Param is passed by value, moved
544    pub fn set_max_limit(&mut self, v: i64) {
545        self.max_limit = v;
546    }
547
548    // int64 free_tier = 7;
549
550
551    pub fn get_free_tier(&self) -> i64 {
552        self.free_tier
553    }
554    pub fn clear_free_tier(&mut self) {
555        self.free_tier = 0;
556    }
557
558    // Param is passed by value, moved
559    pub fn set_free_tier(&mut self, v: i64) {
560        self.free_tier = v;
561    }
562
563    // string duration = 5;
564
565
566    pub fn get_duration(&self) -> &str {
567        &self.duration
568    }
569    pub fn clear_duration(&mut self) {
570        self.duration.clear();
571    }
572
573    // Param is passed by value, moved
574    pub fn set_duration(&mut self, v: ::std::string::String) {
575        self.duration = v;
576    }
577
578    // Mutable pointer to the field.
579    // If field is not initialized, it is initialized with default value first.
580    pub fn mut_duration(&mut self) -> &mut ::std::string::String {
581        &mut self.duration
582    }
583
584    // Take field
585    pub fn take_duration(&mut self) -> ::std::string::String {
586        ::std::mem::replace(&mut self.duration, ::std::string::String::new())
587    }
588
589    // string metric = 8;
590
591
592    pub fn get_metric(&self) -> &str {
593        &self.metric
594    }
595    pub fn clear_metric(&mut self) {
596        self.metric.clear();
597    }
598
599    // Param is passed by value, moved
600    pub fn set_metric(&mut self, v: ::std::string::String) {
601        self.metric = v;
602    }
603
604    // Mutable pointer to the field.
605    // If field is not initialized, it is initialized with default value first.
606    pub fn mut_metric(&mut self) -> &mut ::std::string::String {
607        &mut self.metric
608    }
609
610    // Take field
611    pub fn take_metric(&mut self) -> ::std::string::String {
612        ::std::mem::replace(&mut self.metric, ::std::string::String::new())
613    }
614
615    // string unit = 9;
616
617
618    pub fn get_unit(&self) -> &str {
619        &self.unit
620    }
621    pub fn clear_unit(&mut self) {
622        self.unit.clear();
623    }
624
625    // Param is passed by value, moved
626    pub fn set_unit(&mut self, v: ::std::string::String) {
627        self.unit = v;
628    }
629
630    // Mutable pointer to the field.
631    // If field is not initialized, it is initialized with default value first.
632    pub fn mut_unit(&mut self) -> &mut ::std::string::String {
633        &mut self.unit
634    }
635
636    // Take field
637    pub fn take_unit(&mut self) -> ::std::string::String {
638        ::std::mem::replace(&mut self.unit, ::std::string::String::new())
639    }
640
641    // repeated .google.api.QuotaLimit.ValuesEntry values = 10;
642
643
644    pub fn get_values(&self) -> &::std::collections::HashMap<::std::string::String, i64> {
645        &self.values
646    }
647    pub fn clear_values(&mut self) {
648        self.values.clear();
649    }
650
651    // Param is passed by value, moved
652    pub fn set_values(&mut self, v: ::std::collections::HashMap<::std::string::String, i64>) {
653        self.values = v;
654    }
655
656    // Mutable pointer to the field.
657    pub fn mut_values(&mut self) -> &mut ::std::collections::HashMap<::std::string::String, i64> {
658        &mut self.values
659    }
660
661    // Take field
662    pub fn take_values(&mut self) -> ::std::collections::HashMap<::std::string::String, i64> {
663        ::std::mem::replace(&mut self.values, ::std::collections::HashMap::new())
664    }
665
666    // string display_name = 12;
667
668
669    pub fn get_display_name(&self) -> &str {
670        &self.display_name
671    }
672    pub fn clear_display_name(&mut self) {
673        self.display_name.clear();
674    }
675
676    // Param is passed by value, moved
677    pub fn set_display_name(&mut self, v: ::std::string::String) {
678        self.display_name = v;
679    }
680
681    // Mutable pointer to the field.
682    // If field is not initialized, it is initialized with default value first.
683    pub fn mut_display_name(&mut self) -> &mut ::std::string::String {
684        &mut self.display_name
685    }
686
687    // Take field
688    pub fn take_display_name(&mut self) -> ::std::string::String {
689        ::std::mem::replace(&mut self.display_name, ::std::string::String::new())
690    }
691}
692
693impl ::protobuf::Message for QuotaLimit {
694    fn is_initialized(&self) -> bool {
695        true
696    }
697
698    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
699        while !is.eof()? {
700            let (field_number, wire_type) = is.read_tag_unpack()?;
701            match field_number {
702                6 => {
703                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.name)?;
704                },
705                2 => {
706                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.description)?;
707                },
708                3 => {
709                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
710                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
711                    }
712                    let tmp = is.read_int64()?;
713                    self.default_limit = tmp;
714                },
715                4 => {
716                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
717                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
718                    }
719                    let tmp = is.read_int64()?;
720                    self.max_limit = tmp;
721                },
722                7 => {
723                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
724                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
725                    }
726                    let tmp = is.read_int64()?;
727                    self.free_tier = tmp;
728                },
729                5 => {
730                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.duration)?;
731                },
732                8 => {
733                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.metric)?;
734                },
735                9 => {
736                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.unit)?;
737                },
738                10 => {
739                    ::protobuf::rt::read_map_into::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeInt64>(wire_type, is, &mut self.values)?;
740                },
741                12 => {
742                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.display_name)?;
743                },
744                _ => {
745                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
746                },
747            };
748        }
749        ::std::result::Result::Ok(())
750    }
751
752    // Compute sizes of nested messages
753    #[allow(unused_variables)]
754    fn compute_size(&self) -> u32 {
755        let mut my_size = 0;
756        if !self.name.is_empty() {
757            my_size += ::protobuf::rt::string_size(6, &self.name);
758        }
759        if !self.description.is_empty() {
760            my_size += ::protobuf::rt::string_size(2, &self.description);
761        }
762        if self.default_limit != 0 {
763            my_size += ::protobuf::rt::value_size(3, self.default_limit, ::protobuf::wire_format::WireTypeVarint);
764        }
765        if self.max_limit != 0 {
766            my_size += ::protobuf::rt::value_size(4, self.max_limit, ::protobuf::wire_format::WireTypeVarint);
767        }
768        if self.free_tier != 0 {
769            my_size += ::protobuf::rt::value_size(7, self.free_tier, ::protobuf::wire_format::WireTypeVarint);
770        }
771        if !self.duration.is_empty() {
772            my_size += ::protobuf::rt::string_size(5, &self.duration);
773        }
774        if !self.metric.is_empty() {
775            my_size += ::protobuf::rt::string_size(8, &self.metric);
776        }
777        if !self.unit.is_empty() {
778            my_size += ::protobuf::rt::string_size(9, &self.unit);
779        }
780        my_size += ::protobuf::rt::compute_map_size::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeInt64>(10, &self.values);
781        if !self.display_name.is_empty() {
782            my_size += ::protobuf::rt::string_size(12, &self.display_name);
783        }
784        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
785        self.cached_size.set(my_size);
786        my_size
787    }
788
789    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
790        if !self.name.is_empty() {
791            os.write_string(6, &self.name)?;
792        }
793        if !self.description.is_empty() {
794            os.write_string(2, &self.description)?;
795        }
796        if self.default_limit != 0 {
797            os.write_int64(3, self.default_limit)?;
798        }
799        if self.max_limit != 0 {
800            os.write_int64(4, self.max_limit)?;
801        }
802        if self.free_tier != 0 {
803            os.write_int64(7, self.free_tier)?;
804        }
805        if !self.duration.is_empty() {
806            os.write_string(5, &self.duration)?;
807        }
808        if !self.metric.is_empty() {
809            os.write_string(8, &self.metric)?;
810        }
811        if !self.unit.is_empty() {
812            os.write_string(9, &self.unit)?;
813        }
814        ::protobuf::rt::write_map_with_cached_sizes::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeInt64>(10, &self.values, os)?;
815        if !self.display_name.is_empty() {
816            os.write_string(12, &self.display_name)?;
817        }
818        os.write_unknown_fields(self.get_unknown_fields())?;
819        ::std::result::Result::Ok(())
820    }
821
822    fn get_cached_size(&self) -> u32 {
823        self.cached_size.get()
824    }
825
826    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
827        &self.unknown_fields
828    }
829
830    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
831        &mut self.unknown_fields
832    }
833
834    fn as_any(&self) -> &dyn (::std::any::Any) {
835        self as &dyn (::std::any::Any)
836    }
837    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
838        self as &mut dyn (::std::any::Any)
839    }
840    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
841        self
842    }
843
844    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
845        Self::descriptor_static()
846    }
847
848    fn new() -> QuotaLimit {
849        QuotaLimit::new()
850    }
851
852    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
853        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
854        descriptor.get(|| {
855            let mut fields = ::std::vec::Vec::new();
856            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
857                "name",
858                |m: &QuotaLimit| { &m.name },
859                |m: &mut QuotaLimit| { &mut m.name },
860            ));
861            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
862                "description",
863                |m: &QuotaLimit| { &m.description },
864                |m: &mut QuotaLimit| { &mut m.description },
865            ));
866            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
867                "default_limit",
868                |m: &QuotaLimit| { &m.default_limit },
869                |m: &mut QuotaLimit| { &mut m.default_limit },
870            ));
871            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
872                "max_limit",
873                |m: &QuotaLimit| { &m.max_limit },
874                |m: &mut QuotaLimit| { &mut m.max_limit },
875            ));
876            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
877                "free_tier",
878                |m: &QuotaLimit| { &m.free_tier },
879                |m: &mut QuotaLimit| { &mut m.free_tier },
880            ));
881            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
882                "duration",
883                |m: &QuotaLimit| { &m.duration },
884                |m: &mut QuotaLimit| { &mut m.duration },
885            ));
886            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
887                "metric",
888                |m: &QuotaLimit| { &m.metric },
889                |m: &mut QuotaLimit| { &mut m.metric },
890            ));
891            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
892                "unit",
893                |m: &QuotaLimit| { &m.unit },
894                |m: &mut QuotaLimit| { &mut m.unit },
895            ));
896            fields.push(::protobuf::reflect::accessor::make_map_accessor::<_, ::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeInt64>(
897                "values",
898                |m: &QuotaLimit| { &m.values },
899                |m: &mut QuotaLimit| { &mut m.values },
900            ));
901            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
902                "display_name",
903                |m: &QuotaLimit| { &m.display_name },
904                |m: &mut QuotaLimit| { &mut m.display_name },
905            ));
906            ::protobuf::reflect::MessageDescriptor::new_pb_name::<QuotaLimit>(
907                "QuotaLimit",
908                fields,
909                file_descriptor_proto()
910            )
911        })
912    }
913
914    fn default_instance() -> &'static QuotaLimit {
915        static instance: ::protobuf::rt::LazyV2<QuotaLimit> = ::protobuf::rt::LazyV2::INIT;
916        instance.get(QuotaLimit::new)
917    }
918}
919
920impl ::protobuf::Clear for QuotaLimit {
921    fn clear(&mut self) {
922        self.name.clear();
923        self.description.clear();
924        self.default_limit = 0;
925        self.max_limit = 0;
926        self.free_tier = 0;
927        self.duration.clear();
928        self.metric.clear();
929        self.unit.clear();
930        self.values.clear();
931        self.display_name.clear();
932        self.unknown_fields.clear();
933    }
934}
935
936impl ::std::fmt::Debug for QuotaLimit {
937    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
938        ::protobuf::text_format::fmt(self, f)
939    }
940}
941
942impl ::protobuf::reflect::ProtobufValue for QuotaLimit {
943    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
944        ::protobuf::reflect::ReflectValueRef::Message(self)
945    }
946}
947
948static file_descriptor_proto_data: &'static [u8] = b"\
949    \n\x16google/api/quota.proto\x12\ngoogle.api\"r\n\x05Quota\x12.\n\x06lim\
950    its\x18\x03\x20\x03(\x0b2\x16.google.api.QuotaLimitR\x06limits\x129\n\
951    \x0cmetric_rules\x18\x04\x20\x03(\x0b2\x16.google.api.MetricRuleR\x0bmet\
952    ricRules\"\xb4\x01\n\nMetricRule\x12\x1a\n\x08selector\x18\x01\x20\x01(\
953    \tR\x08selector\x12J\n\x0cmetric_costs\x18\x02\x20\x03(\x0b2'.google.api\
954    .MetricRule.MetricCostsEntryR\x0bmetricCosts\x1a>\n\x10MetricCostsEntry\
955    \x12\x10\n\x03key\x18\x01\x20\x01(\tR\x03key\x12\x14\n\x05value\x18\x02\
956    \x20\x01(\x03R\x05value:\x028\x01\"\x83\x03\n\nQuotaLimit\x12\x12\n\x04n\
957    ame\x18\x06\x20\x01(\tR\x04name\x12\x20\n\x0bdescription\x18\x02\x20\x01\
958    (\tR\x0bdescription\x12#\n\rdefault_limit\x18\x03\x20\x01(\x03R\x0cdefau\
959    ltLimit\x12\x1b\n\tmax_limit\x18\x04\x20\x01(\x03R\x08maxLimit\x12\x1b\n\
960    \tfree_tier\x18\x07\x20\x01(\x03R\x08freeTier\x12\x1a\n\x08duration\x18\
961    \x05\x20\x01(\tR\x08duration\x12\x16\n\x06metric\x18\x08\x20\x01(\tR\x06\
962    metric\x12\x12\n\x04unit\x18\t\x20\x01(\tR\x04unit\x12:\n\x06values\x18\
963    \n\x20\x03(\x0b2\".google.api.QuotaLimit.ValuesEntryR\x06values\x12!\n\
964    \x0cdisplay_name\x18\x0c\x20\x01(\tR\x0bdisplayName\x1a9\n\x0bValuesEntr\
965    y\x12\x10\n\x03key\x18\x01\x20\x01(\tR\x03key\x12\x14\n\x05value\x18\x02\
966    \x20\x01(\x03R\x05value:\x028\x01Bl\n\x0ecom.google.apiB\nQuotaProtoP\
967    \x01ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;servicecon\
968    fig\xa2\x02\x04GAPIJ\xa17\n\x07\x12\x05\x0e\0\xb7\x01\x01\n\xbc\x04\n\
969    \x01\x0c\x12\x03\x0e\0\x122\xb1\x04\x20Copyright\x202023\x20Google\x20LL\
970    C\n\n\x20Licensed\x20under\x20the\x20Apache\x20License,\x20Version\x202.\
971    0\x20(the\x20\"License\");\n\x20you\x20may\x20not\x20use\x20this\x20file\
972    \x20except\x20in\x20compliance\x20with\x20the\x20License.\n\x20You\x20ma\
973    y\x20obtain\x20a\x20copy\x20of\x20the\x20License\x20at\n\n\x20\x20\x20\
974    \x20\x20http://www.apache.org/licenses/LICENSE-2.0\n\n\x20Unless\x20requ\
975    ired\x20by\x20applicable\x20law\x20or\x20agreed\x20to\x20in\x20writing,\
976    \x20software\n\x20distributed\x20under\x20the\x20License\x20is\x20distri\
977    buted\x20on\x20an\x20\"AS\x20IS\"\x20BASIS,\n\x20WITHOUT\x20WARRANTIES\
978    \x20OR\x20CONDITIONS\x20OF\x20ANY\x20KIND,\x20either\x20express\x20or\
979    \x20implied.\n\x20See\x20the\x20License\x20for\x20the\x20specific\x20lan\
980    guage\x20governing\x20permissions\x20and\n\x20limitations\x20under\x20th\
981    e\x20License.\n\n\x08\n\x01\x02\x12\x03\x10\0\x13\n\x08\n\x01\x08\x12\
982    \x03\x12\0\\\n\t\n\x02\x08\x0b\x12\x03\x12\0\\\n\x08\n\x01\x08\x12\x03\
983    \x13\0\"\n\t\n\x02\x08\n\x12\x03\x13\0\"\n\x08\n\x01\x08\x12\x03\x14\0+\
984    \n\t\n\x02\x08\x08\x12\x03\x14\0+\n\x08\n\x01\x08\x12\x03\x15\0'\n\t\n\
985    \x02\x08\x01\x12\x03\x15\0'\n\x08\n\x01\x08\x12\x03\x16\0\"\n\t\n\x02\
986    \x08$\x12\x03\x16\0\"\n\x84\r\n\x02\x04\0\x12\x04K\0R\x01\x1a\xf7\x0c\
987    \x20Quota\x20configuration\x20helps\x20to\x20achieve\x20fairness\x20and\
988    \x20budgeting\x20in\x20service\n\x20usage.\n\n\x20The\x20metric\x20based\
989    \x20quota\x20configuration\x20works\x20this\x20way:\n\x20-\x20The\x20ser\
990    vice\x20configuration\x20defines\x20a\x20set\x20of\x20metrics.\n\x20-\
991    \x20For\x20API\x20calls,\x20the\x20quota.metric_rules\x20maps\x20methods\
992    \x20to\x20metrics\x20with\n\x20\x20\x20corresponding\x20costs.\n\x20-\
993    \x20The\x20quota.limits\x20defines\x20limits\x20on\x20the\x20metrics,\
994    \x20which\x20will\x20be\x20used\x20for\n\x20\x20\x20quota\x20checks\x20a\
995    t\x20runtime.\n\n\x20An\x20example\x20quota\x20configuration\x20in\x20ya\
996    ml\x20format:\n\n\x20\x20\x20\x20quota:\n\x20\x20\x20\x20\x20\x20limits:\
997    \n\n\x20\x20\x20\x20\x20\x20-\x20name:\x20apiWriteQpsPerProject\n\x20\
998    \x20\x20\x20\x20\x20\x20\x20metric:\x20library.googleapis.com/write_call\
999    s\n\x20\x20\x20\x20\x20\x20\x20\x20unit:\x20\"1/min/{project}\"\x20\x20#\
1000    \x20rate\x20limit\x20for\x20consumer\x20projects\n\x20\x20\x20\x20\x20\
1001    \x20\x20\x20values:\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20STANDARD:\
1002    \x2010000\n\n\n\x20\x20\x20\x20\x20\x20(The\x20metric\x20rules\x20bind\
1003    \x20all\x20methods\x20to\x20the\x20read_calls\x20metric,\n\x20\x20\x20\
1004    \x20\x20\x20\x20except\x20for\x20the\x20UpdateBook\x20and\x20DeleteBook\
1005    \x20methods.\x20These\x20two\x20methods\n\x20\x20\x20\x20\x20\x20\x20are\
1006    \x20mapped\x20to\x20the\x20write_calls\x20metric,\x20with\x20the\x20Upda\
1007    teBook\x20method\n\x20\x20\x20\x20\x20\x20\x20consuming\x20at\x20twice\
1008    \x20rate\x20as\x20the\x20DeleteBook\x20method.)\n\x20\x20\x20\x20\x20\
1009    \x20metric_rules:\n\x20\x20\x20\x20\x20\x20-\x20selector:\x20\"*\"\n\x20\
1010    \x20\x20\x20\x20\x20\x20\x20metric_costs:\n\x20\x20\x20\x20\x20\x20\x20\
1011    \x20\x20\x20library.googleapis.com/read_calls:\x201\n\x20\x20\x20\x20\
1012    \x20\x20-\x20selector:\x20google.example.library.v1.LibraryService.Updat\
1013    eBook\n\x20\x20\x20\x20\x20\x20\x20\x20metric_costs:\n\x20\x20\x20\x20\
1014    \x20\x20\x20\x20\x20\x20library.googleapis.com/write_calls:\x202\n\x20\
1015    \x20\x20\x20\x20\x20-\x20selector:\x20google.example.library.v1.LibraryS\
1016    ervice.DeleteBook\n\x20\x20\x20\x20\x20\x20\x20\x20metric_costs:\n\x20\
1017    \x20\x20\x20\x20\x20\x20\x20\x20\x20library.googleapis.com/write_calls:\
1018    \x201\n\n\x20\x20Corresponding\x20Metric\x20definition:\n\n\x20\x20\x20\
1019    \x20\x20\x20metrics:\n\x20\x20\x20\x20\x20\x20-\x20name:\x20library.goog\
1020    leapis.com/read_calls\n\x20\x20\x20\x20\x20\x20\x20\x20display_name:\x20\
1021    Read\x20requests\n\x20\x20\x20\x20\x20\x20\x20\x20metric_kind:\x20DELTA\
1022    \n\x20\x20\x20\x20\x20\x20\x20\x20value_type:\x20INT64\n\n\x20\x20\x20\
1023    \x20\x20\x20-\x20name:\x20library.googleapis.com/write_calls\n\x20\x20\
1024    \x20\x20\x20\x20\x20\x20display_name:\x20Write\x20requests\n\x20\x20\x20\
1025    \x20\x20\x20\x20\x20metric_kind:\x20DELTA\n\x20\x20\x20\x20\x20\x20\x20\
1026    \x20value_type:\x20INT64\n\n\n\n\n\n\x03\x04\0\x01\x12\x03K\x08\r\n>\n\
1027    \x04\x04\0\x02\0\x12\x03M\x02!\x1a1\x20List\x20of\x20QuotaLimit\x20defin\
1028    itions\x20for\x20the\x20service.\n\n\x0c\n\x05\x04\0\x02\0\x04\x12\x03M\
1029    \x02\n\n\x0c\n\x05\x04\0\x02\0\x06\x12\x03M\x0b\x15\n\x0c\n\x05\x04\0\
1030    \x02\0\x01\x12\x03M\x16\x1c\n\x0c\n\x05\x04\0\x02\0\x03\x12\x03M\x1f\x20\
1031    \nj\n\x04\x04\0\x02\x01\x12\x03Q\x02'\x1a]\x20List\x20of\x20MetricRule\
1032    \x20definitions,\x20each\x20one\x20mapping\x20a\x20selected\x20method\
1033    \x20to\x20one\n\x20or\x20more\x20metrics.\n\n\x0c\n\x05\x04\0\x02\x01\
1034    \x04\x12\x03Q\x02\n\n\x0c\n\x05\x04\0\x02\x01\x06\x12\x03Q\x0b\x15\n\x0c\
1035    \n\x05\x04\0\x02\x01\x01\x12\x03Q\x16\"\n\x0c\n\x05\x04\0\x02\x01\x03\
1036    \x12\x03Q%&\n\x96\x01\n\x02\x04\x01\x12\x04V\0d\x01\x1a\x89\x01\x20Bind\
1037    \x20API\x20methods\x20to\x20metrics.\x20Binding\x20a\x20method\x20to\x20\
1038    a\x20metric\x20causes\x20that\n\x20metric's\x20configured\x20quota\x20be\
1039    haviors\x20to\x20apply\x20to\x20the\x20method\x20call.\n\n\n\n\x03\x04\
1040    \x01\x01\x12\x03V\x08\x12\n\x91\x01\n\x04\x04\x01\x02\0\x12\x03[\x02\x16\
1041    \x1a\x83\x01\x20Selects\x20the\x20methods\x20to\x20which\x20this\x20rule\
1042    \x20applies.\n\n\x20Refer\x20to\x20[selector][google.api.DocumentationRu\
1043    le.selector]\x20for\x20syntax\n\x20details.\n\n\x0c\n\x05\x04\x01\x02\0\
1044    \x05\x12\x03[\x02\x08\n\x0c\n\x05\x04\x01\x02\0\x01\x12\x03[\t\x11\n\x0c\
1045    \n\x05\x04\x01\x02\0\x03\x12\x03[\x14\x15\n\xa6\x02\n\x04\x04\x01\x02\
1046    \x01\x12\x03c\x02&\x1a\x98\x02\x20Metrics\x20to\x20update\x20when\x20the\
1047    \x20selected\x20methods\x20are\x20called,\x20and\x20the\x20associated\n\
1048    \x20cost\x20applied\x20to\x20each\x20metric.\n\n\x20The\x20key\x20of\x20\
1049    the\x20map\x20is\x20the\x20metric\x20name,\x20and\x20the\x20values\x20ar\
1050    e\x20the\x20amount\n\x20increased\x20for\x20the\x20metric\x20against\x20\
1051    which\x20the\x20quota\x20limits\x20are\x20defined.\n\x20The\x20value\x20\
1052    must\x20not\x20be\x20negative.\n\n\x0c\n\x05\x04\x01\x02\x01\x06\x12\x03\
1053    c\x02\x14\n\x0c\n\x05\x04\x01\x02\x01\x01\x12\x03c\x15!\n\x0c\n\x05\x04\
1054    \x01\x02\x01\x03\x12\x03c$%\n\xd8\x01\n\x02\x04\x02\x12\x05i\0\xb7\x01\
1055    \x01\x1a\xca\x01\x20`QuotaLimit`\x20defines\x20a\x20specific\x20limit\
1056    \x20that\x20applies\x20over\x20a\x20specified\x20duration\n\x20for\x20a\
1057    \x20limit\x20type.\x20There\x20can\x20be\x20at\x20most\x20one\x20limit\
1058    \x20for\x20a\x20duration\x20and\x20limit\n\x20type\x20combination\x20def\
1059    ined\x20within\x20a\x20`QuotaGroup`.\n\n\n\n\x03\x04\x02\x01\x12\x03i\
1060    \x08\x12\n\xeb\x01\n\x04\x04\x02\x02\0\x12\x03p\x02\x12\x1a\xdd\x01\x20N\
1061    ame\x20of\x20the\x20quota\x20limit.\n\n\x20The\x20name\x20must\x20be\x20\
1062    provided,\x20and\x20it\x20must\x20be\x20unique\x20within\x20the\x20servi\
1063    ce.\x20The\n\x20name\x20can\x20only\x20include\x20alphanumeric\x20charac\
1064    ters\x20as\x20well\x20as\x20'-'.\n\n\x20The\x20maximum\x20length\x20of\
1065    \x20the\x20limit\x20name\x20is\x2064\x20characters.\n\n\x0c\n\x05\x04\
1066    \x02\x02\0\x05\x12\x03p\x02\x08\n\x0c\n\x05\x04\x02\x02\0\x01\x12\x03p\t\
1067    \r\n\x0c\n\x05\x04\x02\x02\0\x03\x12\x03p\x10\x11\n\xde\x01\n\x04\x04\
1068    \x02\x02\x01\x12\x03u\x02\x19\x1a\xd0\x01\x20Optional.\x20User-visible,\
1069    \x20extended\x20description\x20for\x20this\x20quota\x20limit.\n\x20Shoul\
1070    d\x20be\x20used\x20only\x20when\x20more\x20context\x20is\x20needed\x20to\
1071    \x20understand\x20this\x20limit\n\x20than\x20provided\x20by\x20the\x20li\
1072    mit's\x20display\x20name\x20(see:\x20`display_name`).\n\n\x0c\n\x05\x04\
1073    \x02\x02\x01\x05\x12\x03u\x02\x08\n\x0c\n\x05\x04\x02\x02\x01\x01\x12\
1074    \x03u\t\x14\n\x0c\n\x05\x04\x02\x02\x01\x03\x12\x03u\x17\x18\n\xe8\x03\n\
1075    \x04\x04\x02\x02\x02\x12\x04\x81\x01\x02\x1a\x1a\xd9\x03\x20Default\x20n\
1076    umber\x20of\x20tokens\x20that\x20can\x20be\x20consumed\x20during\x20the\
1077    \x20specified\n\x20duration.\x20This\x20is\x20the\x20number\x20of\x20tok\
1078    ens\x20assigned\x20when\x20a\x20client\n\x20application\x20developer\x20\
1079    activates\x20the\x20service\x20for\x20his/her\x20project.\n\n\x20Specify\
1080    ing\x20a\x20value\x20of\x200\x20will\x20block\x20all\x20requests.\x20Thi\
1081    s\x20can\x20be\x20used\x20if\x20you\n\x20are\x20provisioning\x20quota\
1082    \x20to\x20selected\x20consumers\x20and\x20blocking\x20others.\n\x20Simil\
1083    arly,\x20a\x20value\x20of\x20-1\x20will\x20indicate\x20an\x20unlimited\
1084    \x20quota.\x20No\x20other\n\x20negative\x20values\x20are\x20allowed.\n\n\
1085    \x20Used\x20by\x20group-based\x20quotas\x20only.\n\n\r\n\x05\x04\x02\x02\
1086    \x02\x05\x12\x04\x81\x01\x02\x07\n\r\n\x05\x04\x02\x02\x02\x01\x12\x04\
1087    \x81\x01\x08\x15\n\r\n\x05\x04\x02\x02\x02\x03\x12\x04\x81\x01\x18\x19\n\
1088    \xc5\x03\n\x04\x04\x02\x02\x03\x12\x04\x8c\x01\x02\x16\x1a\xb6\x03\x20Ma\
1089    ximum\x20number\x20of\x20tokens\x20that\x20can\x20be\x20consumed\x20duri\
1090    ng\x20the\x20specified\n\x20duration.\x20Client\x20application\x20develo\
1091    pers\x20can\x20override\x20the\x20default\x20limit\x20up\n\x20to\x20this\
1092    \x20maximum.\x20If\x20specified,\x20this\x20value\x20cannot\x20be\x20set\
1093    \x20to\x20a\x20value\x20less\n\x20than\x20the\x20default\x20limit.\x20If\
1094    \x20not\x20specified,\x20it\x20is\x20set\x20to\x20the\x20default\x20limi\
1095    t.\n\n\x20To\x20allow\x20clients\x20to\x20apply\x20overrides\x20with\x20\
1096    no\x20upper\x20bound,\x20set\x20this\x20to\x20-1,\n\x20indicating\x20unl\
1097    imited\x20maximum\x20quota.\n\n\x20Used\x20by\x20group-based\x20quotas\
1098    \x20only.\n\n\r\n\x05\x04\x02\x02\x03\x05\x12\x04\x8c\x01\x02\x07\n\r\n\
1099    \x05\x04\x02\x02\x03\x01\x12\x04\x8c\x01\x08\x11\n\r\n\x05\x04\x02\x02\
1100    \x03\x03\x12\x04\x8c\x01\x14\x15\n\xbf\x03\n\x04\x04\x02\x02\x04\x12\x04\
1101    \x96\x01\x02\x16\x1a\xb0\x03\x20Free\x20tier\x20value\x20displayed\x20in\
1102    \x20the\x20Developers\x20Console\x20for\x20this\x20limit.\n\x20The\x20fr\
1103    ee\x20tier\x20is\x20the\x20number\x20of\x20tokens\x20that\x20will\x20be\
1104    \x20subtracted\x20from\x20the\n\x20billed\x20amount\x20when\x20billing\
1105    \x20is\x20enabled.\n\x20This\x20field\x20can\x20only\x20be\x20set\x20on\
1106    \x20a\x20limit\x20with\x20duration\x20\"1d\",\x20in\x20a\x20billable\n\
1107    \x20group;\x20it\x20is\x20invalid\x20on\x20any\x20other\x20limit.\x20If\
1108    \x20this\x20field\x20is\x20not\x20set,\x20it\n\x20defaults\x20to\x200,\
1109    \x20indicating\x20that\x20there\x20is\x20no\x20free\x20tier\x20for\x20th\
1110    is\x20service.\n\n\x20Used\x20by\x20group-based\x20quotas\x20only.\n\n\r\
1111    \n\x05\x04\x02\x02\x04\x05\x12\x04\x96\x01\x02\x07\n\r\n\x05\x04\x02\x02\
1112    \x04\x01\x12\x04\x96\x01\x08\x11\n\r\n\x05\x04\x02\x02\x04\x03\x12\x04\
1113    \x96\x01\x14\x15\nv\n\x04\x04\x02\x02\x05\x12\x04\x9b\x01\x02\x16\x1ah\
1114    \x20Duration\x20of\x20this\x20limit\x20in\x20textual\x20notation.\x20Mus\
1115    t\x20be\x20\"100s\"\x20or\x20\"1d\".\n\n\x20Used\x20by\x20group-based\
1116    \x20quotas\x20only.\n\n\r\n\x05\x04\x02\x02\x05\x05\x12\x04\x9b\x01\x02\
1117    \x08\n\r\n\x05\x04\x02\x02\x05\x01\x12\x04\x9b\x01\t\x11\n\r\n\x05\x04\
1118    \x02\x02\x05\x03\x12\x04\x9b\x01\x14\x15\n\xcb\x01\n\x04\x04\x02\x02\x06\
1119    \x12\x04\xa0\x01\x02\x14\x1a\xbc\x01\x20The\x20name\x20of\x20the\x20metr\
1120    ic\x20this\x20quota\x20limit\x20applies\x20to.\x20The\x20quota\x20limits\
1121    \x20with\n\x20the\x20same\x20metric\x20will\x20be\x20checked\x20together\
1122    \x20during\x20runtime.\x20The\x20metric\x20must\x20be\n\x20defined\x20wi\
1123    thin\x20the\x20service\x20config.\n\n\r\n\x05\x04\x02\x02\x06\x05\x12\
1124    \x04\xa0\x01\x02\x08\n\r\n\x05\x04\x02\x02\x06\x01\x12\x04\xa0\x01\t\x0f\
1125    \n\r\n\x05\x04\x02\x02\x06\x03\x12\x04\xa0\x01\x12\x13\n\xf8\x02\n\x04\
1126    \x04\x02\x02\x07\x12\x04\xab\x01\x02\x12\x1a\xe9\x02\x20Specify\x20the\
1127    \x20unit\x20of\x20the\x20quota\x20limit.\x20It\x20uses\x20the\x20same\
1128    \x20syntax\x20as\n\x20[Metric.unit][].\x20The\x20supported\x20unit\x20ki\
1129    nds\x20are\x20determined\x20by\x20the\x20quota\n\x20backend\x20system.\n\
1130    \n\x20Here\x20are\x20some\x20examples:\n\x20*\x20\"1/min/{project}\"\x20\
1131    for\x20quota\x20per\x20minute\x20per\x20project.\n\n\x20Note:\x20the\x20\
1132    order\x20of\x20unit\x20components\x20is\x20insignificant.\n\x20The\x20\"\
1133    1\"\x20at\x20the\x20beginning\x20is\x20required\x20to\x20follow\x20the\
1134    \x20metric\x20unit\x20syntax.\n\n\r\n\x05\x04\x02\x02\x07\x05\x12\x04\
1135    \xab\x01\x02\x08\n\r\n\x05\x04\x02\x02\x07\x01\x12\x04\xab\x01\t\r\n\r\n\
1136    \x05\x04\x02\x02\x07\x03\x12\x04\xab\x01\x10\x11\n\xd5\x01\n\x04\x04\x02\
1137    \x02\x08\x12\x04\xb0\x01\x02!\x1a\xc6\x01\x20Tiered\x20limit\x20values.\
1138    \x20You\x20must\x20specify\x20this\x20as\x20a\x20key:value\x20pair,\x20w\
1139    ith\x20an\n\x20integer\x20value\x20that\x20is\x20the\x20maximum\x20numbe\
1140    r\x20of\x20requests\x20allowed\x20for\x20the\n\x20specified\x20unit.\x20\
1141    Currently\x20only\x20STANDARD\x20is\x20supported.\n\n\r\n\x05\x04\x02\
1142    \x02\x08\x06\x12\x04\xb0\x01\x02\x14\n\r\n\x05\x04\x02\x02\x08\x01\x12\
1143    \x04\xb0\x01\x15\x1b\n\r\n\x05\x04\x02\x02\x08\x03\x12\x04\xb0\x01\x1e\
1144    \x20\n\xfe\x01\n\x04\x04\x02\x02\t\x12\x04\xb6\x01\x02\x1b\x1a\xef\x01\
1145    \x20User-visible\x20display\x20name\x20for\x20this\x20limit.\n\x20Option\
1146    al.\x20If\x20not\x20set,\x20the\x20UI\x20will\x20provide\x20a\x20default\
1147    \x20display\x20name\x20based\x20on\n\x20the\x20quota\x20configuration.\
1148    \x20This\x20field\x20can\x20be\x20used\x20to\x20override\x20the\x20defau\
1149    lt\n\x20display\x20name\x20generated\x20from\x20the\x20configuration.\n\
1150    \n\r\n\x05\x04\x02\x02\t\x05\x12\x04\xb6\x01\x02\x08\n\r\n\x05\x04\x02\
1151    \x02\t\x01\x12\x04\xb6\x01\t\x15\n\r\n\x05\x04\x02\x02\t\x03\x12\x04\xb6\
1152    \x01\x18\x1ab\x06proto3\
1153";
1154
1155static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT;
1156
1157fn parse_descriptor_proto() -> ::protobuf::descriptor::FileDescriptorProto {
1158    ::protobuf::Message::parse_from_bytes(file_descriptor_proto_data).unwrap()
1159}
1160
1161pub fn file_descriptor_proto() -> &'static ::protobuf::descriptor::FileDescriptorProto {
1162    file_descriptor_proto_lazy.get(|| {
1163        parse_descriptor_proto()
1164    })
1165}