1#![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#[derive(PartialEq,Clone,Default)]
27pub struct Quota {
28 pub limits: ::protobuf::RepeatedField<QuotaLimit>,
30 pub metric_rules: ::protobuf::RepeatedField<MetricRule>,
31 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 pub fn get_limits(&self) -> &[QuotaLimit] {
51 &self.limits
52 }
53 pub fn clear_limits(&mut self) {
54 self.limits.clear();
55 }
56
57 pub fn set_limits(&mut self, v: ::protobuf::RepeatedField<QuotaLimit>) {
59 self.limits = v;
60 }
61
62 pub fn mut_limits(&mut self) -> &mut ::protobuf::RepeatedField<QuotaLimit> {
64 &mut self.limits
65 }
66
67 pub fn take_limits(&mut self) -> ::protobuf::RepeatedField<QuotaLimit> {
69 ::std::mem::replace(&mut self.limits, ::protobuf::RepeatedField::new())
70 }
71
72 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 pub fn set_metric_rules(&mut self, v: ::protobuf::RepeatedField<MetricRule>) {
84 self.metric_rules = v;
85 }
86
87 pub fn mut_metric_rules(&mut self) -> &mut ::protobuf::RepeatedField<MetricRule> {
89 &mut self.metric_rules
90 }
91
92 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 #[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 pub selector: ::std::string::String,
245 pub metric_costs: ::std::collections::HashMap<::std::string::String, i64>,
246 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 pub fn get_selector(&self) -> &str {
266 &self.selector
267 }
268 pub fn clear_selector(&mut self) {
269 self.selector.clear();
270 }
271
272 pub fn set_selector(&mut self, v: ::std::string::String) {
274 self.selector = v;
275 }
276
277 pub fn mut_selector(&mut self) -> &mut ::std::string::String {
280 &mut self.selector
281 }
282
283 pub fn take_selector(&mut self) -> ::std::string::String {
285 ::std::mem::replace(&mut self.selector, ::std::string::String::new())
286 }
287
288 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 pub fn set_metric_costs(&mut self, v: ::std::collections::HashMap<::std::string::String, i64>) {
300 self.metric_costs = v;
301 }
302
303 pub fn mut_metric_costs(&mut self) -> &mut ::std::collections::HashMap<::std::string::String, i64> {
305 &mut self.metric_costs
306 }
307
308 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 #[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 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 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 pub fn get_name(&self) -> &str {
470 &self.name
471 }
472 pub fn clear_name(&mut self) {
473 self.name.clear();
474 }
475
476 pub fn set_name(&mut self, v: ::std::string::String) {
478 self.name = v;
479 }
480
481 pub fn mut_name(&mut self) -> &mut ::std::string::String {
484 &mut self.name
485 }
486
487 pub fn take_name(&mut self) -> ::std::string::String {
489 ::std::mem::replace(&mut self.name, ::std::string::String::new())
490 }
491
492 pub fn get_description(&self) -> &str {
496 &self.description
497 }
498 pub fn clear_description(&mut self) {
499 self.description.clear();
500 }
501
502 pub fn set_description(&mut self, v: ::std::string::String) {
504 self.description = v;
505 }
506
507 pub fn mut_description(&mut self) -> &mut ::std::string::String {
510 &mut self.description
511 }
512
513 pub fn take_description(&mut self) -> ::std::string::String {
515 ::std::mem::replace(&mut self.description, ::std::string::String::new())
516 }
517
518 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 pub fn set_default_limit(&mut self, v: i64) {
530 self.default_limit = v;
531 }
532
533 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 pub fn set_max_limit(&mut self, v: i64) {
545 self.max_limit = v;
546 }
547
548 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 pub fn set_free_tier(&mut self, v: i64) {
560 self.free_tier = v;
561 }
562
563 pub fn get_duration(&self) -> &str {
567 &self.duration
568 }
569 pub fn clear_duration(&mut self) {
570 self.duration.clear();
571 }
572
573 pub fn set_duration(&mut self, v: ::std::string::String) {
575 self.duration = v;
576 }
577
578 pub fn mut_duration(&mut self) -> &mut ::std::string::String {
581 &mut self.duration
582 }
583
584 pub fn take_duration(&mut self) -> ::std::string::String {
586 ::std::mem::replace(&mut self.duration, ::std::string::String::new())
587 }
588
589 pub fn get_metric(&self) -> &str {
593 &self.metric
594 }
595 pub fn clear_metric(&mut self) {
596 self.metric.clear();
597 }
598
599 pub fn set_metric(&mut self, v: ::std::string::String) {
601 self.metric = v;
602 }
603
604 pub fn mut_metric(&mut self) -> &mut ::std::string::String {
607 &mut self.metric
608 }
609
610 pub fn take_metric(&mut self) -> ::std::string::String {
612 ::std::mem::replace(&mut self.metric, ::std::string::String::new())
613 }
614
615 pub fn get_unit(&self) -> &str {
619 &self.unit
620 }
621 pub fn clear_unit(&mut self) {
622 self.unit.clear();
623 }
624
625 pub fn set_unit(&mut self, v: ::std::string::String) {
627 self.unit = v;
628 }
629
630 pub fn mut_unit(&mut self) -> &mut ::std::string::String {
633 &mut self.unit
634 }
635
636 pub fn take_unit(&mut self) -> ::std::string::String {
638 ::std::mem::replace(&mut self.unit, ::std::string::String::new())
639 }
640
641 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 pub fn set_values(&mut self, v: ::std::collections::HashMap<::std::string::String, i64>) {
653 self.values = v;
654 }
655
656 pub fn mut_values(&mut self) -> &mut ::std::collections::HashMap<::std::string::String, i64> {
658 &mut self.values
659 }
660
661 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 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 pub fn set_display_name(&mut self, v: ::std::string::String) {
678 self.display_name = v;
679 }
680
681 pub fn mut_display_name(&mut self) -> &mut ::std::string::String {
684 &mut self.display_name
685 }
686
687 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 #[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}