google_cloud_rust_raw/api/servicecontrol/v1/
quota_controller.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/servicecontrol/v1/quota_controller.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 AllocateQuotaRequest {
28    // message fields
29    pub service_name: ::std::string::String,
30    pub allocate_operation: ::protobuf::SingularPtrField<QuotaOperation>,
31    pub service_config_id: ::std::string::String,
32    // special fields
33    pub unknown_fields: ::protobuf::UnknownFields,
34    pub cached_size: ::protobuf::CachedSize,
35}
36
37impl<'a> ::std::default::Default for &'a AllocateQuotaRequest {
38    fn default() -> &'a AllocateQuotaRequest {
39        <AllocateQuotaRequest as ::protobuf::Message>::default_instance()
40    }
41}
42
43impl AllocateQuotaRequest {
44    pub fn new() -> AllocateQuotaRequest {
45        ::std::default::Default::default()
46    }
47
48    // string service_name = 1;
49
50
51    pub fn get_service_name(&self) -> &str {
52        &self.service_name
53    }
54    pub fn clear_service_name(&mut self) {
55        self.service_name.clear();
56    }
57
58    // Param is passed by value, moved
59    pub fn set_service_name(&mut self, v: ::std::string::String) {
60        self.service_name = v;
61    }
62
63    // Mutable pointer to the field.
64    // If field is not initialized, it is initialized with default value first.
65    pub fn mut_service_name(&mut self) -> &mut ::std::string::String {
66        &mut self.service_name
67    }
68
69    // Take field
70    pub fn take_service_name(&mut self) -> ::std::string::String {
71        ::std::mem::replace(&mut self.service_name, ::std::string::String::new())
72    }
73
74    // .google.api.servicecontrol.v1.QuotaOperation allocate_operation = 2;
75
76
77    pub fn get_allocate_operation(&self) -> &QuotaOperation {
78        self.allocate_operation.as_ref().unwrap_or_else(|| <QuotaOperation as ::protobuf::Message>::default_instance())
79    }
80    pub fn clear_allocate_operation(&mut self) {
81        self.allocate_operation.clear();
82    }
83
84    pub fn has_allocate_operation(&self) -> bool {
85        self.allocate_operation.is_some()
86    }
87
88    // Param is passed by value, moved
89    pub fn set_allocate_operation(&mut self, v: QuotaOperation) {
90        self.allocate_operation = ::protobuf::SingularPtrField::some(v);
91    }
92
93    // Mutable pointer to the field.
94    // If field is not initialized, it is initialized with default value first.
95    pub fn mut_allocate_operation(&mut self) -> &mut QuotaOperation {
96        if self.allocate_operation.is_none() {
97            self.allocate_operation.set_default();
98        }
99        self.allocate_operation.as_mut().unwrap()
100    }
101
102    // Take field
103    pub fn take_allocate_operation(&mut self) -> QuotaOperation {
104        self.allocate_operation.take().unwrap_or_else(|| QuotaOperation::new())
105    }
106
107    // string service_config_id = 4;
108
109
110    pub fn get_service_config_id(&self) -> &str {
111        &self.service_config_id
112    }
113    pub fn clear_service_config_id(&mut self) {
114        self.service_config_id.clear();
115    }
116
117    // Param is passed by value, moved
118    pub fn set_service_config_id(&mut self, v: ::std::string::String) {
119        self.service_config_id = v;
120    }
121
122    // Mutable pointer to the field.
123    // If field is not initialized, it is initialized with default value first.
124    pub fn mut_service_config_id(&mut self) -> &mut ::std::string::String {
125        &mut self.service_config_id
126    }
127
128    // Take field
129    pub fn take_service_config_id(&mut self) -> ::std::string::String {
130        ::std::mem::replace(&mut self.service_config_id, ::std::string::String::new())
131    }
132}
133
134impl ::protobuf::Message for AllocateQuotaRequest {
135    fn is_initialized(&self) -> bool {
136        for v in &self.allocate_operation {
137            if !v.is_initialized() {
138                return false;
139            }
140        };
141        true
142    }
143
144    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
145        while !is.eof()? {
146            let (field_number, wire_type) = is.read_tag_unpack()?;
147            match field_number {
148                1 => {
149                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.service_name)?;
150                },
151                2 => {
152                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.allocate_operation)?;
153                },
154                4 => {
155                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.service_config_id)?;
156                },
157                _ => {
158                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
159                },
160            };
161        }
162        ::std::result::Result::Ok(())
163    }
164
165    // Compute sizes of nested messages
166    #[allow(unused_variables)]
167    fn compute_size(&self) -> u32 {
168        let mut my_size = 0;
169        if !self.service_name.is_empty() {
170            my_size += ::protobuf::rt::string_size(1, &self.service_name);
171        }
172        if let Some(ref v) = self.allocate_operation.as_ref() {
173            let len = v.compute_size();
174            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
175        }
176        if !self.service_config_id.is_empty() {
177            my_size += ::protobuf::rt::string_size(4, &self.service_config_id);
178        }
179        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
180        self.cached_size.set(my_size);
181        my_size
182    }
183
184    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
185        if !self.service_name.is_empty() {
186            os.write_string(1, &self.service_name)?;
187        }
188        if let Some(ref v) = self.allocate_operation.as_ref() {
189            os.write_tag(2, ::protobuf::wire_format::WireTypeLengthDelimited)?;
190            os.write_raw_varint32(v.get_cached_size())?;
191            v.write_to_with_cached_sizes(os)?;
192        }
193        if !self.service_config_id.is_empty() {
194            os.write_string(4, &self.service_config_id)?;
195        }
196        os.write_unknown_fields(self.get_unknown_fields())?;
197        ::std::result::Result::Ok(())
198    }
199
200    fn get_cached_size(&self) -> u32 {
201        self.cached_size.get()
202    }
203
204    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
205        &self.unknown_fields
206    }
207
208    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
209        &mut self.unknown_fields
210    }
211
212    fn as_any(&self) -> &dyn (::std::any::Any) {
213        self as &dyn (::std::any::Any)
214    }
215    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
216        self as &mut dyn (::std::any::Any)
217    }
218    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
219        self
220    }
221
222    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
223        Self::descriptor_static()
224    }
225
226    fn new() -> AllocateQuotaRequest {
227        AllocateQuotaRequest::new()
228    }
229
230    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
231        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
232        descriptor.get(|| {
233            let mut fields = ::std::vec::Vec::new();
234            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
235                "service_name",
236                |m: &AllocateQuotaRequest| { &m.service_name },
237                |m: &mut AllocateQuotaRequest| { &mut m.service_name },
238            ));
239            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<QuotaOperation>>(
240                "allocate_operation",
241                |m: &AllocateQuotaRequest| { &m.allocate_operation },
242                |m: &mut AllocateQuotaRequest| { &mut m.allocate_operation },
243            ));
244            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
245                "service_config_id",
246                |m: &AllocateQuotaRequest| { &m.service_config_id },
247                |m: &mut AllocateQuotaRequest| { &mut m.service_config_id },
248            ));
249            ::protobuf::reflect::MessageDescriptor::new_pb_name::<AllocateQuotaRequest>(
250                "AllocateQuotaRequest",
251                fields,
252                file_descriptor_proto()
253            )
254        })
255    }
256
257    fn default_instance() -> &'static AllocateQuotaRequest {
258        static instance: ::protobuf::rt::LazyV2<AllocateQuotaRequest> = ::protobuf::rt::LazyV2::INIT;
259        instance.get(AllocateQuotaRequest::new)
260    }
261}
262
263impl ::protobuf::Clear for AllocateQuotaRequest {
264    fn clear(&mut self) {
265        self.service_name.clear();
266        self.allocate_operation.clear();
267        self.service_config_id.clear();
268        self.unknown_fields.clear();
269    }
270}
271
272impl ::std::fmt::Debug for AllocateQuotaRequest {
273    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
274        ::protobuf::text_format::fmt(self, f)
275    }
276}
277
278impl ::protobuf::reflect::ProtobufValue for AllocateQuotaRequest {
279    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
280        ::protobuf::reflect::ReflectValueRef::Message(self)
281    }
282}
283
284#[derive(PartialEq,Clone,Default)]
285pub struct QuotaOperation {
286    // message fields
287    pub operation_id: ::std::string::String,
288    pub method_name: ::std::string::String,
289    pub consumer_id: ::std::string::String,
290    pub labels: ::std::collections::HashMap<::std::string::String, ::std::string::String>,
291    pub quota_metrics: ::protobuf::RepeatedField<super::metric_value::MetricValueSet>,
292    pub quota_mode: QuotaOperation_QuotaMode,
293    // special fields
294    pub unknown_fields: ::protobuf::UnknownFields,
295    pub cached_size: ::protobuf::CachedSize,
296}
297
298impl<'a> ::std::default::Default for &'a QuotaOperation {
299    fn default() -> &'a QuotaOperation {
300        <QuotaOperation as ::protobuf::Message>::default_instance()
301    }
302}
303
304impl QuotaOperation {
305    pub fn new() -> QuotaOperation {
306        ::std::default::Default::default()
307    }
308
309    // string operation_id = 1;
310
311
312    pub fn get_operation_id(&self) -> &str {
313        &self.operation_id
314    }
315    pub fn clear_operation_id(&mut self) {
316        self.operation_id.clear();
317    }
318
319    // Param is passed by value, moved
320    pub fn set_operation_id(&mut self, v: ::std::string::String) {
321        self.operation_id = v;
322    }
323
324    // Mutable pointer to the field.
325    // If field is not initialized, it is initialized with default value first.
326    pub fn mut_operation_id(&mut self) -> &mut ::std::string::String {
327        &mut self.operation_id
328    }
329
330    // Take field
331    pub fn take_operation_id(&mut self) -> ::std::string::String {
332        ::std::mem::replace(&mut self.operation_id, ::std::string::String::new())
333    }
334
335    // string method_name = 2;
336
337
338    pub fn get_method_name(&self) -> &str {
339        &self.method_name
340    }
341    pub fn clear_method_name(&mut self) {
342        self.method_name.clear();
343    }
344
345    // Param is passed by value, moved
346    pub fn set_method_name(&mut self, v: ::std::string::String) {
347        self.method_name = v;
348    }
349
350    // Mutable pointer to the field.
351    // If field is not initialized, it is initialized with default value first.
352    pub fn mut_method_name(&mut self) -> &mut ::std::string::String {
353        &mut self.method_name
354    }
355
356    // Take field
357    pub fn take_method_name(&mut self) -> ::std::string::String {
358        ::std::mem::replace(&mut self.method_name, ::std::string::String::new())
359    }
360
361    // string consumer_id = 3;
362
363
364    pub fn get_consumer_id(&self) -> &str {
365        &self.consumer_id
366    }
367    pub fn clear_consumer_id(&mut self) {
368        self.consumer_id.clear();
369    }
370
371    // Param is passed by value, moved
372    pub fn set_consumer_id(&mut self, v: ::std::string::String) {
373        self.consumer_id = v;
374    }
375
376    // Mutable pointer to the field.
377    // If field is not initialized, it is initialized with default value first.
378    pub fn mut_consumer_id(&mut self) -> &mut ::std::string::String {
379        &mut self.consumer_id
380    }
381
382    // Take field
383    pub fn take_consumer_id(&mut self) -> ::std::string::String {
384        ::std::mem::replace(&mut self.consumer_id, ::std::string::String::new())
385    }
386
387    // repeated .google.api.servicecontrol.v1.QuotaOperation.LabelsEntry labels = 4;
388
389
390    pub fn get_labels(&self) -> &::std::collections::HashMap<::std::string::String, ::std::string::String> {
391        &self.labels
392    }
393    pub fn clear_labels(&mut self) {
394        self.labels.clear();
395    }
396
397    // Param is passed by value, moved
398    pub fn set_labels(&mut self, v: ::std::collections::HashMap<::std::string::String, ::std::string::String>) {
399        self.labels = v;
400    }
401
402    // Mutable pointer to the field.
403    pub fn mut_labels(&mut self) -> &mut ::std::collections::HashMap<::std::string::String, ::std::string::String> {
404        &mut self.labels
405    }
406
407    // Take field
408    pub fn take_labels(&mut self) -> ::std::collections::HashMap<::std::string::String, ::std::string::String> {
409        ::std::mem::replace(&mut self.labels, ::std::collections::HashMap::new())
410    }
411
412    // repeated .google.api.servicecontrol.v1.MetricValueSet quota_metrics = 5;
413
414
415    pub fn get_quota_metrics(&self) -> &[super::metric_value::MetricValueSet] {
416        &self.quota_metrics
417    }
418    pub fn clear_quota_metrics(&mut self) {
419        self.quota_metrics.clear();
420    }
421
422    // Param is passed by value, moved
423    pub fn set_quota_metrics(&mut self, v: ::protobuf::RepeatedField<super::metric_value::MetricValueSet>) {
424        self.quota_metrics = v;
425    }
426
427    // Mutable pointer to the field.
428    pub fn mut_quota_metrics(&mut self) -> &mut ::protobuf::RepeatedField<super::metric_value::MetricValueSet> {
429        &mut self.quota_metrics
430    }
431
432    // Take field
433    pub fn take_quota_metrics(&mut self) -> ::protobuf::RepeatedField<super::metric_value::MetricValueSet> {
434        ::std::mem::replace(&mut self.quota_metrics, ::protobuf::RepeatedField::new())
435    }
436
437    // .google.api.servicecontrol.v1.QuotaOperation.QuotaMode quota_mode = 6;
438
439
440    pub fn get_quota_mode(&self) -> QuotaOperation_QuotaMode {
441        self.quota_mode
442    }
443    pub fn clear_quota_mode(&mut self) {
444        self.quota_mode = QuotaOperation_QuotaMode::UNSPECIFIED;
445    }
446
447    // Param is passed by value, moved
448    pub fn set_quota_mode(&mut self, v: QuotaOperation_QuotaMode) {
449        self.quota_mode = v;
450    }
451}
452
453impl ::protobuf::Message for QuotaOperation {
454    fn is_initialized(&self) -> bool {
455        for v in &self.quota_metrics {
456            if !v.is_initialized() {
457                return false;
458            }
459        };
460        true
461    }
462
463    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
464        while !is.eof()? {
465            let (field_number, wire_type) = is.read_tag_unpack()?;
466            match field_number {
467                1 => {
468                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.operation_id)?;
469                },
470                2 => {
471                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.method_name)?;
472                },
473                3 => {
474                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.consumer_id)?;
475                },
476                4 => {
477                    ::protobuf::rt::read_map_into::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeString>(wire_type, is, &mut self.labels)?;
478                },
479                5 => {
480                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.quota_metrics)?;
481                },
482                6 => {
483                    ::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.quota_mode, 6, &mut self.unknown_fields)?
484                },
485                _ => {
486                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
487                },
488            };
489        }
490        ::std::result::Result::Ok(())
491    }
492
493    // Compute sizes of nested messages
494    #[allow(unused_variables)]
495    fn compute_size(&self) -> u32 {
496        let mut my_size = 0;
497        if !self.operation_id.is_empty() {
498            my_size += ::protobuf::rt::string_size(1, &self.operation_id);
499        }
500        if !self.method_name.is_empty() {
501            my_size += ::protobuf::rt::string_size(2, &self.method_name);
502        }
503        if !self.consumer_id.is_empty() {
504            my_size += ::protobuf::rt::string_size(3, &self.consumer_id);
505        }
506        my_size += ::protobuf::rt::compute_map_size::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeString>(4, &self.labels);
507        for value in &self.quota_metrics {
508            let len = value.compute_size();
509            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
510        };
511        if self.quota_mode != QuotaOperation_QuotaMode::UNSPECIFIED {
512            my_size += ::protobuf::rt::enum_size(6, self.quota_mode);
513        }
514        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
515        self.cached_size.set(my_size);
516        my_size
517    }
518
519    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
520        if !self.operation_id.is_empty() {
521            os.write_string(1, &self.operation_id)?;
522        }
523        if !self.method_name.is_empty() {
524            os.write_string(2, &self.method_name)?;
525        }
526        if !self.consumer_id.is_empty() {
527            os.write_string(3, &self.consumer_id)?;
528        }
529        ::protobuf::rt::write_map_with_cached_sizes::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeString>(4, &self.labels, os)?;
530        for v in &self.quota_metrics {
531            os.write_tag(5, ::protobuf::wire_format::WireTypeLengthDelimited)?;
532            os.write_raw_varint32(v.get_cached_size())?;
533            v.write_to_with_cached_sizes(os)?;
534        };
535        if self.quota_mode != QuotaOperation_QuotaMode::UNSPECIFIED {
536            os.write_enum(6, ::protobuf::ProtobufEnum::value(&self.quota_mode))?;
537        }
538        os.write_unknown_fields(self.get_unknown_fields())?;
539        ::std::result::Result::Ok(())
540    }
541
542    fn get_cached_size(&self) -> u32 {
543        self.cached_size.get()
544    }
545
546    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
547        &self.unknown_fields
548    }
549
550    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
551        &mut self.unknown_fields
552    }
553
554    fn as_any(&self) -> &dyn (::std::any::Any) {
555        self as &dyn (::std::any::Any)
556    }
557    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
558        self as &mut dyn (::std::any::Any)
559    }
560    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
561        self
562    }
563
564    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
565        Self::descriptor_static()
566    }
567
568    fn new() -> QuotaOperation {
569        QuotaOperation::new()
570    }
571
572    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
573        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
574        descriptor.get(|| {
575            let mut fields = ::std::vec::Vec::new();
576            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
577                "operation_id",
578                |m: &QuotaOperation| { &m.operation_id },
579                |m: &mut QuotaOperation| { &mut m.operation_id },
580            ));
581            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
582                "method_name",
583                |m: &QuotaOperation| { &m.method_name },
584                |m: &mut QuotaOperation| { &mut m.method_name },
585            ));
586            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
587                "consumer_id",
588                |m: &QuotaOperation| { &m.consumer_id },
589                |m: &mut QuotaOperation| { &mut m.consumer_id },
590            ));
591            fields.push(::protobuf::reflect::accessor::make_map_accessor::<_, ::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeString>(
592                "labels",
593                |m: &QuotaOperation| { &m.labels },
594                |m: &mut QuotaOperation| { &mut m.labels },
595            ));
596            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::metric_value::MetricValueSet>>(
597                "quota_metrics",
598                |m: &QuotaOperation| { &m.quota_metrics },
599                |m: &mut QuotaOperation| { &mut m.quota_metrics },
600            ));
601            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<QuotaOperation_QuotaMode>>(
602                "quota_mode",
603                |m: &QuotaOperation| { &m.quota_mode },
604                |m: &mut QuotaOperation| { &mut m.quota_mode },
605            ));
606            ::protobuf::reflect::MessageDescriptor::new_pb_name::<QuotaOperation>(
607                "QuotaOperation",
608                fields,
609                file_descriptor_proto()
610            )
611        })
612    }
613
614    fn default_instance() -> &'static QuotaOperation {
615        static instance: ::protobuf::rt::LazyV2<QuotaOperation> = ::protobuf::rt::LazyV2::INIT;
616        instance.get(QuotaOperation::new)
617    }
618}
619
620impl ::protobuf::Clear for QuotaOperation {
621    fn clear(&mut self) {
622        self.operation_id.clear();
623        self.method_name.clear();
624        self.consumer_id.clear();
625        self.labels.clear();
626        self.quota_metrics.clear();
627        self.quota_mode = QuotaOperation_QuotaMode::UNSPECIFIED;
628        self.unknown_fields.clear();
629    }
630}
631
632impl ::std::fmt::Debug for QuotaOperation {
633    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
634        ::protobuf::text_format::fmt(self, f)
635    }
636}
637
638impl ::protobuf::reflect::ProtobufValue for QuotaOperation {
639    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
640        ::protobuf::reflect::ReflectValueRef::Message(self)
641    }
642}
643
644#[derive(Clone,PartialEq,Eq,Debug,Hash)]
645pub enum QuotaOperation_QuotaMode {
646    UNSPECIFIED = 0,
647    NORMAL = 1,
648    BEST_EFFORT = 2,
649    CHECK_ONLY = 3,
650    QUERY_ONLY = 4,
651    ADJUST_ONLY = 5,
652}
653
654impl ::protobuf::ProtobufEnum for QuotaOperation_QuotaMode {
655    fn value(&self) -> i32 {
656        *self as i32
657    }
658
659    fn from_i32(value: i32) -> ::std::option::Option<QuotaOperation_QuotaMode> {
660        match value {
661            0 => ::std::option::Option::Some(QuotaOperation_QuotaMode::UNSPECIFIED),
662            1 => ::std::option::Option::Some(QuotaOperation_QuotaMode::NORMAL),
663            2 => ::std::option::Option::Some(QuotaOperation_QuotaMode::BEST_EFFORT),
664            3 => ::std::option::Option::Some(QuotaOperation_QuotaMode::CHECK_ONLY),
665            4 => ::std::option::Option::Some(QuotaOperation_QuotaMode::QUERY_ONLY),
666            5 => ::std::option::Option::Some(QuotaOperation_QuotaMode::ADJUST_ONLY),
667            _ => ::std::option::Option::None
668        }
669    }
670
671    fn values() -> &'static [Self] {
672        static values: &'static [QuotaOperation_QuotaMode] = &[
673            QuotaOperation_QuotaMode::UNSPECIFIED,
674            QuotaOperation_QuotaMode::NORMAL,
675            QuotaOperation_QuotaMode::BEST_EFFORT,
676            QuotaOperation_QuotaMode::CHECK_ONLY,
677            QuotaOperation_QuotaMode::QUERY_ONLY,
678            QuotaOperation_QuotaMode::ADJUST_ONLY,
679        ];
680        values
681    }
682
683    fn enum_descriptor_static() -> &'static ::protobuf::reflect::EnumDescriptor {
684        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::LazyV2::INIT;
685        descriptor.get(|| {
686            ::protobuf::reflect::EnumDescriptor::new_pb_name::<QuotaOperation_QuotaMode>("QuotaOperation.QuotaMode", file_descriptor_proto())
687        })
688    }
689}
690
691impl ::std::marker::Copy for QuotaOperation_QuotaMode {
692}
693
694impl ::std::default::Default for QuotaOperation_QuotaMode {
695    fn default() -> Self {
696        QuotaOperation_QuotaMode::UNSPECIFIED
697    }
698}
699
700impl ::protobuf::reflect::ProtobufValue for QuotaOperation_QuotaMode {
701    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
702        ::protobuf::reflect::ReflectValueRef::Enum(::protobuf::ProtobufEnum::descriptor(self))
703    }
704}
705
706#[derive(PartialEq,Clone,Default)]
707pub struct AllocateQuotaResponse {
708    // message fields
709    pub operation_id: ::std::string::String,
710    pub allocate_errors: ::protobuf::RepeatedField<QuotaError>,
711    pub quota_metrics: ::protobuf::RepeatedField<super::metric_value::MetricValueSet>,
712    pub service_config_id: ::std::string::String,
713    // special fields
714    pub unknown_fields: ::protobuf::UnknownFields,
715    pub cached_size: ::protobuf::CachedSize,
716}
717
718impl<'a> ::std::default::Default for &'a AllocateQuotaResponse {
719    fn default() -> &'a AllocateQuotaResponse {
720        <AllocateQuotaResponse as ::protobuf::Message>::default_instance()
721    }
722}
723
724impl AllocateQuotaResponse {
725    pub fn new() -> AllocateQuotaResponse {
726        ::std::default::Default::default()
727    }
728
729    // string operation_id = 1;
730
731
732    pub fn get_operation_id(&self) -> &str {
733        &self.operation_id
734    }
735    pub fn clear_operation_id(&mut self) {
736        self.operation_id.clear();
737    }
738
739    // Param is passed by value, moved
740    pub fn set_operation_id(&mut self, v: ::std::string::String) {
741        self.operation_id = v;
742    }
743
744    // Mutable pointer to the field.
745    // If field is not initialized, it is initialized with default value first.
746    pub fn mut_operation_id(&mut self) -> &mut ::std::string::String {
747        &mut self.operation_id
748    }
749
750    // Take field
751    pub fn take_operation_id(&mut self) -> ::std::string::String {
752        ::std::mem::replace(&mut self.operation_id, ::std::string::String::new())
753    }
754
755    // repeated .google.api.servicecontrol.v1.QuotaError allocate_errors = 2;
756
757
758    pub fn get_allocate_errors(&self) -> &[QuotaError] {
759        &self.allocate_errors
760    }
761    pub fn clear_allocate_errors(&mut self) {
762        self.allocate_errors.clear();
763    }
764
765    // Param is passed by value, moved
766    pub fn set_allocate_errors(&mut self, v: ::protobuf::RepeatedField<QuotaError>) {
767        self.allocate_errors = v;
768    }
769
770    // Mutable pointer to the field.
771    pub fn mut_allocate_errors(&mut self) -> &mut ::protobuf::RepeatedField<QuotaError> {
772        &mut self.allocate_errors
773    }
774
775    // Take field
776    pub fn take_allocate_errors(&mut self) -> ::protobuf::RepeatedField<QuotaError> {
777        ::std::mem::replace(&mut self.allocate_errors, ::protobuf::RepeatedField::new())
778    }
779
780    // repeated .google.api.servicecontrol.v1.MetricValueSet quota_metrics = 3;
781
782
783    pub fn get_quota_metrics(&self) -> &[super::metric_value::MetricValueSet] {
784        &self.quota_metrics
785    }
786    pub fn clear_quota_metrics(&mut self) {
787        self.quota_metrics.clear();
788    }
789
790    // Param is passed by value, moved
791    pub fn set_quota_metrics(&mut self, v: ::protobuf::RepeatedField<super::metric_value::MetricValueSet>) {
792        self.quota_metrics = v;
793    }
794
795    // Mutable pointer to the field.
796    pub fn mut_quota_metrics(&mut self) -> &mut ::protobuf::RepeatedField<super::metric_value::MetricValueSet> {
797        &mut self.quota_metrics
798    }
799
800    // Take field
801    pub fn take_quota_metrics(&mut self) -> ::protobuf::RepeatedField<super::metric_value::MetricValueSet> {
802        ::std::mem::replace(&mut self.quota_metrics, ::protobuf::RepeatedField::new())
803    }
804
805    // string service_config_id = 4;
806
807
808    pub fn get_service_config_id(&self) -> &str {
809        &self.service_config_id
810    }
811    pub fn clear_service_config_id(&mut self) {
812        self.service_config_id.clear();
813    }
814
815    // Param is passed by value, moved
816    pub fn set_service_config_id(&mut self, v: ::std::string::String) {
817        self.service_config_id = v;
818    }
819
820    // Mutable pointer to the field.
821    // If field is not initialized, it is initialized with default value first.
822    pub fn mut_service_config_id(&mut self) -> &mut ::std::string::String {
823        &mut self.service_config_id
824    }
825
826    // Take field
827    pub fn take_service_config_id(&mut self) -> ::std::string::String {
828        ::std::mem::replace(&mut self.service_config_id, ::std::string::String::new())
829    }
830}
831
832impl ::protobuf::Message for AllocateQuotaResponse {
833    fn is_initialized(&self) -> bool {
834        for v in &self.allocate_errors {
835            if !v.is_initialized() {
836                return false;
837            }
838        };
839        for v in &self.quota_metrics {
840            if !v.is_initialized() {
841                return false;
842            }
843        };
844        true
845    }
846
847    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
848        while !is.eof()? {
849            let (field_number, wire_type) = is.read_tag_unpack()?;
850            match field_number {
851                1 => {
852                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.operation_id)?;
853                },
854                2 => {
855                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.allocate_errors)?;
856                },
857                3 => {
858                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.quota_metrics)?;
859                },
860                4 => {
861                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.service_config_id)?;
862                },
863                _ => {
864                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
865                },
866            };
867        }
868        ::std::result::Result::Ok(())
869    }
870
871    // Compute sizes of nested messages
872    #[allow(unused_variables)]
873    fn compute_size(&self) -> u32 {
874        let mut my_size = 0;
875        if !self.operation_id.is_empty() {
876            my_size += ::protobuf::rt::string_size(1, &self.operation_id);
877        }
878        for value in &self.allocate_errors {
879            let len = value.compute_size();
880            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
881        };
882        for value in &self.quota_metrics {
883            let len = value.compute_size();
884            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
885        };
886        if !self.service_config_id.is_empty() {
887            my_size += ::protobuf::rt::string_size(4, &self.service_config_id);
888        }
889        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
890        self.cached_size.set(my_size);
891        my_size
892    }
893
894    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
895        if !self.operation_id.is_empty() {
896            os.write_string(1, &self.operation_id)?;
897        }
898        for v in &self.allocate_errors {
899            os.write_tag(2, ::protobuf::wire_format::WireTypeLengthDelimited)?;
900            os.write_raw_varint32(v.get_cached_size())?;
901            v.write_to_with_cached_sizes(os)?;
902        };
903        for v in &self.quota_metrics {
904            os.write_tag(3, ::protobuf::wire_format::WireTypeLengthDelimited)?;
905            os.write_raw_varint32(v.get_cached_size())?;
906            v.write_to_with_cached_sizes(os)?;
907        };
908        if !self.service_config_id.is_empty() {
909            os.write_string(4, &self.service_config_id)?;
910        }
911        os.write_unknown_fields(self.get_unknown_fields())?;
912        ::std::result::Result::Ok(())
913    }
914
915    fn get_cached_size(&self) -> u32 {
916        self.cached_size.get()
917    }
918
919    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
920        &self.unknown_fields
921    }
922
923    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
924        &mut self.unknown_fields
925    }
926
927    fn as_any(&self) -> &dyn (::std::any::Any) {
928        self as &dyn (::std::any::Any)
929    }
930    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
931        self as &mut dyn (::std::any::Any)
932    }
933    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
934        self
935    }
936
937    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
938        Self::descriptor_static()
939    }
940
941    fn new() -> AllocateQuotaResponse {
942        AllocateQuotaResponse::new()
943    }
944
945    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
946        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
947        descriptor.get(|| {
948            let mut fields = ::std::vec::Vec::new();
949            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
950                "operation_id",
951                |m: &AllocateQuotaResponse| { &m.operation_id },
952                |m: &mut AllocateQuotaResponse| { &mut m.operation_id },
953            ));
954            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<QuotaError>>(
955                "allocate_errors",
956                |m: &AllocateQuotaResponse| { &m.allocate_errors },
957                |m: &mut AllocateQuotaResponse| { &mut m.allocate_errors },
958            ));
959            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::metric_value::MetricValueSet>>(
960                "quota_metrics",
961                |m: &AllocateQuotaResponse| { &m.quota_metrics },
962                |m: &mut AllocateQuotaResponse| { &mut m.quota_metrics },
963            ));
964            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
965                "service_config_id",
966                |m: &AllocateQuotaResponse| { &m.service_config_id },
967                |m: &mut AllocateQuotaResponse| { &mut m.service_config_id },
968            ));
969            ::protobuf::reflect::MessageDescriptor::new_pb_name::<AllocateQuotaResponse>(
970                "AllocateQuotaResponse",
971                fields,
972                file_descriptor_proto()
973            )
974        })
975    }
976
977    fn default_instance() -> &'static AllocateQuotaResponse {
978        static instance: ::protobuf::rt::LazyV2<AllocateQuotaResponse> = ::protobuf::rt::LazyV2::INIT;
979        instance.get(AllocateQuotaResponse::new)
980    }
981}
982
983impl ::protobuf::Clear for AllocateQuotaResponse {
984    fn clear(&mut self) {
985        self.operation_id.clear();
986        self.allocate_errors.clear();
987        self.quota_metrics.clear();
988        self.service_config_id.clear();
989        self.unknown_fields.clear();
990    }
991}
992
993impl ::std::fmt::Debug for AllocateQuotaResponse {
994    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
995        ::protobuf::text_format::fmt(self, f)
996    }
997}
998
999impl ::protobuf::reflect::ProtobufValue for AllocateQuotaResponse {
1000    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
1001        ::protobuf::reflect::ReflectValueRef::Message(self)
1002    }
1003}
1004
1005#[derive(PartialEq,Clone,Default)]
1006pub struct QuotaError {
1007    // message fields
1008    pub code: QuotaError_Code,
1009    pub subject: ::std::string::String,
1010    pub description: ::std::string::String,
1011    pub status: ::protobuf::SingularPtrField<super::status::Status>,
1012    // special fields
1013    pub unknown_fields: ::protobuf::UnknownFields,
1014    pub cached_size: ::protobuf::CachedSize,
1015}
1016
1017impl<'a> ::std::default::Default for &'a QuotaError {
1018    fn default() -> &'a QuotaError {
1019        <QuotaError as ::protobuf::Message>::default_instance()
1020    }
1021}
1022
1023impl QuotaError {
1024    pub fn new() -> QuotaError {
1025        ::std::default::Default::default()
1026    }
1027
1028    // .google.api.servicecontrol.v1.QuotaError.Code code = 1;
1029
1030
1031    pub fn get_code(&self) -> QuotaError_Code {
1032        self.code
1033    }
1034    pub fn clear_code(&mut self) {
1035        self.code = QuotaError_Code::UNSPECIFIED;
1036    }
1037
1038    // Param is passed by value, moved
1039    pub fn set_code(&mut self, v: QuotaError_Code) {
1040        self.code = v;
1041    }
1042
1043    // string subject = 2;
1044
1045
1046    pub fn get_subject(&self) -> &str {
1047        &self.subject
1048    }
1049    pub fn clear_subject(&mut self) {
1050        self.subject.clear();
1051    }
1052
1053    // Param is passed by value, moved
1054    pub fn set_subject(&mut self, v: ::std::string::String) {
1055        self.subject = v;
1056    }
1057
1058    // Mutable pointer to the field.
1059    // If field is not initialized, it is initialized with default value first.
1060    pub fn mut_subject(&mut self) -> &mut ::std::string::String {
1061        &mut self.subject
1062    }
1063
1064    // Take field
1065    pub fn take_subject(&mut self) -> ::std::string::String {
1066        ::std::mem::replace(&mut self.subject, ::std::string::String::new())
1067    }
1068
1069    // string description = 3;
1070
1071
1072    pub fn get_description(&self) -> &str {
1073        &self.description
1074    }
1075    pub fn clear_description(&mut self) {
1076        self.description.clear();
1077    }
1078
1079    // Param is passed by value, moved
1080    pub fn set_description(&mut self, v: ::std::string::String) {
1081        self.description = v;
1082    }
1083
1084    // Mutable pointer to the field.
1085    // If field is not initialized, it is initialized with default value first.
1086    pub fn mut_description(&mut self) -> &mut ::std::string::String {
1087        &mut self.description
1088    }
1089
1090    // Take field
1091    pub fn take_description(&mut self) -> ::std::string::String {
1092        ::std::mem::replace(&mut self.description, ::std::string::String::new())
1093    }
1094
1095    // .google.rpc.Status status = 4;
1096
1097
1098    pub fn get_status(&self) -> &super::status::Status {
1099        self.status.as_ref().unwrap_or_else(|| <super::status::Status as ::protobuf::Message>::default_instance())
1100    }
1101    pub fn clear_status(&mut self) {
1102        self.status.clear();
1103    }
1104
1105    pub fn has_status(&self) -> bool {
1106        self.status.is_some()
1107    }
1108
1109    // Param is passed by value, moved
1110    pub fn set_status(&mut self, v: super::status::Status) {
1111        self.status = ::protobuf::SingularPtrField::some(v);
1112    }
1113
1114    // Mutable pointer to the field.
1115    // If field is not initialized, it is initialized with default value first.
1116    pub fn mut_status(&mut self) -> &mut super::status::Status {
1117        if self.status.is_none() {
1118            self.status.set_default();
1119        }
1120        self.status.as_mut().unwrap()
1121    }
1122
1123    // Take field
1124    pub fn take_status(&mut self) -> super::status::Status {
1125        self.status.take().unwrap_or_else(|| super::status::Status::new())
1126    }
1127}
1128
1129impl ::protobuf::Message for QuotaError {
1130    fn is_initialized(&self) -> bool {
1131        for v in &self.status {
1132            if !v.is_initialized() {
1133                return false;
1134            }
1135        };
1136        true
1137    }
1138
1139    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1140        while !is.eof()? {
1141            let (field_number, wire_type) = is.read_tag_unpack()?;
1142            match field_number {
1143                1 => {
1144                    ::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.code, 1, &mut self.unknown_fields)?
1145                },
1146                2 => {
1147                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.subject)?;
1148                },
1149                3 => {
1150                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.description)?;
1151                },
1152                4 => {
1153                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.status)?;
1154                },
1155                _ => {
1156                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
1157                },
1158            };
1159        }
1160        ::std::result::Result::Ok(())
1161    }
1162
1163    // Compute sizes of nested messages
1164    #[allow(unused_variables)]
1165    fn compute_size(&self) -> u32 {
1166        let mut my_size = 0;
1167        if self.code != QuotaError_Code::UNSPECIFIED {
1168            my_size += ::protobuf::rt::enum_size(1, self.code);
1169        }
1170        if !self.subject.is_empty() {
1171            my_size += ::protobuf::rt::string_size(2, &self.subject);
1172        }
1173        if !self.description.is_empty() {
1174            my_size += ::protobuf::rt::string_size(3, &self.description);
1175        }
1176        if let Some(ref v) = self.status.as_ref() {
1177            let len = v.compute_size();
1178            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
1179        }
1180        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
1181        self.cached_size.set(my_size);
1182        my_size
1183    }
1184
1185    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1186        if self.code != QuotaError_Code::UNSPECIFIED {
1187            os.write_enum(1, ::protobuf::ProtobufEnum::value(&self.code))?;
1188        }
1189        if !self.subject.is_empty() {
1190            os.write_string(2, &self.subject)?;
1191        }
1192        if !self.description.is_empty() {
1193            os.write_string(3, &self.description)?;
1194        }
1195        if let Some(ref v) = self.status.as_ref() {
1196            os.write_tag(4, ::protobuf::wire_format::WireTypeLengthDelimited)?;
1197            os.write_raw_varint32(v.get_cached_size())?;
1198            v.write_to_with_cached_sizes(os)?;
1199        }
1200        os.write_unknown_fields(self.get_unknown_fields())?;
1201        ::std::result::Result::Ok(())
1202    }
1203
1204    fn get_cached_size(&self) -> u32 {
1205        self.cached_size.get()
1206    }
1207
1208    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
1209        &self.unknown_fields
1210    }
1211
1212    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
1213        &mut self.unknown_fields
1214    }
1215
1216    fn as_any(&self) -> &dyn (::std::any::Any) {
1217        self as &dyn (::std::any::Any)
1218    }
1219    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
1220        self as &mut dyn (::std::any::Any)
1221    }
1222    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
1223        self
1224    }
1225
1226    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
1227        Self::descriptor_static()
1228    }
1229
1230    fn new() -> QuotaError {
1231        QuotaError::new()
1232    }
1233
1234    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
1235        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
1236        descriptor.get(|| {
1237            let mut fields = ::std::vec::Vec::new();
1238            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<QuotaError_Code>>(
1239                "code",
1240                |m: &QuotaError| { &m.code },
1241                |m: &mut QuotaError| { &mut m.code },
1242            ));
1243            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
1244                "subject",
1245                |m: &QuotaError| { &m.subject },
1246                |m: &mut QuotaError| { &mut m.subject },
1247            ));
1248            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
1249                "description",
1250                |m: &QuotaError| { &m.description },
1251                |m: &mut QuotaError| { &mut m.description },
1252            ));
1253            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::status::Status>>(
1254                "status",
1255                |m: &QuotaError| { &m.status },
1256                |m: &mut QuotaError| { &mut m.status },
1257            ));
1258            ::protobuf::reflect::MessageDescriptor::new_pb_name::<QuotaError>(
1259                "QuotaError",
1260                fields,
1261                file_descriptor_proto()
1262            )
1263        })
1264    }
1265
1266    fn default_instance() -> &'static QuotaError {
1267        static instance: ::protobuf::rt::LazyV2<QuotaError> = ::protobuf::rt::LazyV2::INIT;
1268        instance.get(QuotaError::new)
1269    }
1270}
1271
1272impl ::protobuf::Clear for QuotaError {
1273    fn clear(&mut self) {
1274        self.code = QuotaError_Code::UNSPECIFIED;
1275        self.subject.clear();
1276        self.description.clear();
1277        self.status.clear();
1278        self.unknown_fields.clear();
1279    }
1280}
1281
1282impl ::std::fmt::Debug for QuotaError {
1283    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1284        ::protobuf::text_format::fmt(self, f)
1285    }
1286}
1287
1288impl ::protobuf::reflect::ProtobufValue for QuotaError {
1289    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
1290        ::protobuf::reflect::ReflectValueRef::Message(self)
1291    }
1292}
1293
1294#[derive(Clone,PartialEq,Eq,Debug,Hash)]
1295pub enum QuotaError_Code {
1296    UNSPECIFIED = 0,
1297    RESOURCE_EXHAUSTED = 8,
1298    BILLING_NOT_ACTIVE = 107,
1299    PROJECT_DELETED = 108,
1300    API_KEY_INVALID = 105,
1301    API_KEY_EXPIRED = 112,
1302}
1303
1304impl ::protobuf::ProtobufEnum for QuotaError_Code {
1305    fn value(&self) -> i32 {
1306        *self as i32
1307    }
1308
1309    fn from_i32(value: i32) -> ::std::option::Option<QuotaError_Code> {
1310        match value {
1311            0 => ::std::option::Option::Some(QuotaError_Code::UNSPECIFIED),
1312            8 => ::std::option::Option::Some(QuotaError_Code::RESOURCE_EXHAUSTED),
1313            107 => ::std::option::Option::Some(QuotaError_Code::BILLING_NOT_ACTIVE),
1314            108 => ::std::option::Option::Some(QuotaError_Code::PROJECT_DELETED),
1315            105 => ::std::option::Option::Some(QuotaError_Code::API_KEY_INVALID),
1316            112 => ::std::option::Option::Some(QuotaError_Code::API_KEY_EXPIRED),
1317            _ => ::std::option::Option::None
1318        }
1319    }
1320
1321    fn values() -> &'static [Self] {
1322        static values: &'static [QuotaError_Code] = &[
1323            QuotaError_Code::UNSPECIFIED,
1324            QuotaError_Code::RESOURCE_EXHAUSTED,
1325            QuotaError_Code::BILLING_NOT_ACTIVE,
1326            QuotaError_Code::PROJECT_DELETED,
1327            QuotaError_Code::API_KEY_INVALID,
1328            QuotaError_Code::API_KEY_EXPIRED,
1329        ];
1330        values
1331    }
1332
1333    fn enum_descriptor_static() -> &'static ::protobuf::reflect::EnumDescriptor {
1334        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::LazyV2::INIT;
1335        descriptor.get(|| {
1336            ::protobuf::reflect::EnumDescriptor::new_pb_name::<QuotaError_Code>("QuotaError.Code", file_descriptor_proto())
1337        })
1338    }
1339}
1340
1341impl ::std::marker::Copy for QuotaError_Code {
1342}
1343
1344impl ::std::default::Default for QuotaError_Code {
1345    fn default() -> Self {
1346        QuotaError_Code::UNSPECIFIED
1347    }
1348}
1349
1350impl ::protobuf::reflect::ProtobufValue for QuotaError_Code {
1351    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
1352        ::protobuf::reflect::ReflectValueRef::Enum(::protobuf::ProtobufEnum::descriptor(self))
1353    }
1354}
1355
1356static file_descriptor_proto_data: &'static [u8] = b"\
1357    \n3google/api/servicecontrol/v1/quota_controller.proto\x12\x1cgoogle.api\
1358    .servicecontrol.v1\x1a\x1cgoogle/api/annotations.proto\x1a/google/api/se\
1359    rvicecontrol/v1/metric_value.proto\x1a\x17google/rpc/status.proto\x1a\
1360    \x17google/api/client.proto\"\xc2\x01\n\x14AllocateQuotaRequest\x12!\n\
1361    \x0cservice_name\x18\x01\x20\x01(\tR\x0bserviceName\x12[\n\x12allocate_o\
1362    peration\x18\x02\x20\x01(\x0b2,.google.api.servicecontrol.v1.QuotaOperat\
1363    ionR\x11allocateOperation\x12*\n\x11service_config_id\x18\x04\x20\x01(\t\
1364    R\x0fserviceConfigId\"\x98\x04\n\x0eQuotaOperation\x12!\n\x0coperation_i\
1365    d\x18\x01\x20\x01(\tR\x0boperationId\x12\x1f\n\x0bmethod_name\x18\x02\
1366    \x20\x01(\tR\nmethodName\x12\x1f\n\x0bconsumer_id\x18\x03\x20\x01(\tR\nc\
1367    onsumerId\x12P\n\x06labels\x18\x04\x20\x03(\x0b28.google.api.servicecont\
1368    rol.v1.QuotaOperation.LabelsEntryR\x06labels\x12Q\n\rquota_metrics\x18\
1369    \x05\x20\x03(\x0b2,.google.api.servicecontrol.v1.MetricValueSetR\x0cquot\
1370    aMetrics\x12U\n\nquota_mode\x18\x06\x20\x01(\x0e26.google.api.servicecon\
1371    trol.v1.QuotaOperation.QuotaModeR\tquotaMode\x1a9\n\x0bLabelsEntry\x12\
1372    \x10\n\x03key\x18\x01\x20\x01(\tR\x03key\x12\x14\n\x05value\x18\x02\x20\
1373    \x01(\tR\x05value:\x028\x01\"j\n\tQuotaMode\x12\x0f\n\x0bUNSPECIFIED\x10\
1374    \0\x12\n\n\x06NORMAL\x10\x01\x12\x0f\n\x0bBEST_EFFORT\x10\x02\x12\x0e\n\
1375    \nCHECK_ONLY\x10\x03\x12\x0e\n\nQUERY_ONLY\x10\x04\x12\x0f\n\x0bADJUST_O\
1376    NLY\x10\x05\"\x8c\x02\n\x15AllocateQuotaResponse\x12!\n\x0coperation_id\
1377    \x18\x01\x20\x01(\tR\x0boperationId\x12Q\n\x0fallocate_errors\x18\x02\
1378    \x20\x03(\x0b2(.google.api.servicecontrol.v1.QuotaErrorR\x0eallocateErro\
1379    rs\x12Q\n\rquota_metrics\x18\x03\x20\x03(\x0b2,.google.api.servicecontro\
1380    l.v1.MetricValueSetR\x0cquotaMetrics\x12*\n\x11service_config_id\x18\x04\
1381    \x20\x01(\tR\x0fserviceConfigId\"\xc0\x02\n\nQuotaError\x12A\n\x04code\
1382    \x18\x01\x20\x01(\x0e2-.google.api.servicecontrol.v1.QuotaError.CodeR\
1383    \x04code\x12\x18\n\x07subject\x18\x02\x20\x01(\tR\x07subject\x12\x20\n\
1384    \x0bdescription\x18\x03\x20\x01(\tR\x0bdescription\x12*\n\x06status\x18\
1385    \x04\x20\x01(\x0b2\x12.google.rpc.StatusR\x06status\"\x86\x01\n\x04Code\
1386    \x12\x0f\n\x0bUNSPECIFIED\x10\0\x12\x16\n\x12RESOURCE_EXHAUSTED\x10\x08\
1387    \x12\x16\n\x12BILLING_NOT_ACTIVE\x10k\x12\x13\n\x0fPROJECT_DELETED\x10l\
1388    \x12\x13\n\x0fAPI_KEY_INVALID\x10i\x12\x13\n\x0fAPI_KEY_EXPIRED\x10p2\
1389    \xc5\x02\n\x0fQuotaController\x12\xae\x01\n\rAllocateQuota\x122.google.a\
1390    pi.servicecontrol.v1.AllocateQuotaRequest\x1a3.google.api.servicecontrol\
1391    .v1.AllocateQuotaResponse\"4\x82\xd3\xe4\x93\x02.\")/v1/services/{servic\
1392    e_name}:allocateQuota:\x01*\x1a\x80\x01\xd2A]https://www.googleapis.com/\
1393    auth/cloud-platform,https://www.googleapis.com/auth/servicecontrol\xcaA\
1394    \x1dservicecontrol.googleapis.comB\xef\x01\n\x20com.google.api.serviceco\
1395    ntrol.v1B\x14QuotaControllerProtoP\x01ZJcloud.google.com/go/servicecontr\
1396    ol/apiv1/servicecontrolpb;servicecontrolpb\xf8\x01\x01\xaa\x02\x1eGoogle\
1397    .Cloud.ServiceControl.V1\xca\x02\x1eGoogle\\Cloud\\ServiceControl\\V1\
1398    \xea\x02!Google::Cloud::ServiceControl::V1J\xbcJ\n\x07\x12\x05\x0e\0\xf4\
1399    \x01\x01\n\xbc\x04\n\x01\x0c\x12\x03\x0e\0\x122\xb1\x04\x20Copyright\x20\
1400    2021\x20Google\x20LLC\n\n\x20Licensed\x20under\x20the\x20Apache\x20Licen\
1401    se,\x20Version\x202.0\x20(the\x20\"License\");\n\x20you\x20may\x20not\
1402    \x20use\x20this\x20file\x20except\x20in\x20compliance\x20with\x20the\x20\
1403    License.\n\x20You\x20may\x20obtain\x20a\x20copy\x20of\x20the\x20License\
1404    \x20at\n\n\x20\x20\x20\x20\x20http://www.apache.org/licenses/LICENSE-2.0\
1405    \n\n\x20Unless\x20required\x20by\x20applicable\x20law\x20or\x20agreed\
1406    \x20to\x20in\x20writing,\x20software\n\x20distributed\x20under\x20the\
1407    \x20License\x20is\x20distributed\x20on\x20an\x20\"AS\x20IS\"\x20BASIS,\n\
1408    \x20WITHOUT\x20WARRANTIES\x20OR\x20CONDITIONS\x20OF\x20ANY\x20KIND,\x20e\
1409    ither\x20express\x20or\x20implied.\n\x20See\x20the\x20License\x20for\x20\
1410    the\x20specific\x20language\x20governing\x20permissions\x20and\n\x20limi\
1411    tations\x20under\x20the\x20License.\n\n\x08\n\x01\x02\x12\x03\x10\0%\n\t\
1412    \n\x02\x03\0\x12\x03\x12\0&\n\t\n\x02\x03\x01\x12\x03\x13\09\n\t\n\x02\
1413    \x03\x02\x12\x03\x14\0!\n\t\n\x02\x03\x03\x12\x03\x15\0!\n\x08\n\x01\x08\
1414    \x12\x03\x17\0\x1f\n\t\n\x02\x08\x1f\x12\x03\x17\0\x1f\n\x08\n\x01\x08\
1415    \x12\x03\x18\0;\n\t\n\x02\x08%\x12\x03\x18\0;\n\x08\n\x01\x08\x12\x03\
1416    \x19\0a\n\t\n\x02\x08\x0b\x12\x03\x19\0a\n\x08\n\x01\x08\x12\x03\x1a\0\"\
1417    \n\t\n\x02\x08\n\x12\x03\x1a\0\"\n\x08\n\x01\x08\x12\x03\x1b\05\n\t\n\
1418    \x02\x08\x08\x12\x03\x1b\05\n\x08\n\x01\x08\x12\x03\x1c\09\n\t\n\x02\x08\
1419    \x01\x12\x03\x1c\09\n\x08\n\x01\x08\x12\x03\x1d\0;\n\t\n\x02\x08)\x12\
1420    \x03\x1d\0;\n\x08\n\x01\x08\x12\x03\x1e\0:\n\t\n\x02\x08-\x12\x03\x1e\0:\
1421    \n\x9b\x02\n\x02\x06\0\x12\x04$\0;\x01\x1a\x8e\x02\x20[Google\x20Quota\
1422    \x20Control\x20API](/service-control/overview)\n\n\x20Allows\x20clients\
1423    \x20to\x20allocate\x20and\x20release\x20quota\x20against\x20a\x20[manage\
1424    d\n\x20service](https://cloud.google.com/service-management/reference/rp\
1425    c/google.api/servicemanagement.v1#google.api.servicemanagement.v1.Manage\
1426    dService).\n\n\n\n\x03\x06\0\x01\x12\x03$\x08\x17\n\n\n\x03\x06\0\x03\
1427    \x12\x03%\x02E\n\x0c\n\x05\x06\0\x03\x99\x08\x12\x03%\x02E\n\x0b\n\x03\
1428    \x06\0\x03\x12\x04&\x02(7\n\r\n\x05\x06\0\x03\x9a\x08\x12\x04&\x02(7\n\
1429    \xa2\x04\n\x04\x06\0\x02\0\x12\x045\x02:\x03\x1a\x93\x04\x20Attempts\x20\
1430    to\x20allocate\x20quota\x20for\x20the\x20specified\x20consumer.\x20It\
1431    \x20should\x20be\x20called\n\x20before\x20the\x20operation\x20is\x20exec\
1432    uted.\n\n\x20This\x20method\x20requires\x20the\x20`servicemanagement.ser\
1433    vices.quota`\n\x20permission\x20on\x20the\x20specified\x20service.\x20Fo\
1434    r\x20more\x20information,\x20see\n\x20[Cloud\x20IAM](https://cloud.googl\
1435    e.com/iam).\n\n\x20**NOTE:**\x20The\x20client\x20**must**\x20fail-open\
1436    \x20on\x20server\x20errors\x20`INTERNAL`,\n\x20`UNKNOWN`,\x20`DEADLINE_E\
1437    XCEEDED`,\x20and\x20`UNAVAILABLE`.\x20To\x20ensure\x20system\n\x20reliab\
1438    ility,\x20the\x20server\x20may\x20inject\x20these\x20errors\x20to\x20pro\
1439    hibit\x20any\x20hard\n\x20dependency\x20on\x20the\x20quota\x20functional\
1440    ity.\n\n\x0c\n\x05\x06\0\x02\0\x01\x12\x035\x06\x13\n\x0c\n\x05\x06\0\
1441    \x02\0\x02\x12\x035\x14(\n\x0c\n\x05\x06\0\x02\0\x03\x12\x0353H\n\r\n\
1442    \x05\x06\0\x02\0\x04\x12\x046\x049\x06\n\x11\n\t\x06\0\x02\0\x04\xb0\xca\
1443    \xbc\"\x12\x046\x049\x06\n;\n\x02\x04\0\x12\x04>\0L\x01\x1a/\x20Request\
1444    \x20message\x20for\x20the\x20AllocateQuota\x20method.\n\n\n\n\x03\x04\0\
1445    \x01\x12\x03>\x08\x1c\n\xcc\x01\n\x04\x04\0\x02\0\x12\x03C\x02\x1a\x1a\
1446    \xbe\x01\x20Name\x20of\x20the\x20service\x20as\x20specified\x20in\x20the\
1447    \x20service\x20configuration.\x20For\x20example,\n\x20`\"pubsub.googleap\
1448    is.com\"`.\n\n\x20See\x20[google.api.Service][google.api.Service]\x20for\
1449    \x20the\x20definition\x20of\x20a\x20service\x20name.\n\n\x0c\n\x05\x04\0\
1450    \x02\0\x05\x12\x03C\x02\x08\n\x0c\n\x05\x04\0\x02\0\x01\x12\x03C\t\x15\n\
1451    \x0c\n\x05\x04\0\x02\0\x03\x12\x03C\x18\x19\n=\n\x04\x04\0\x02\x01\x12\
1452    \x03F\x02(\x1a0\x20Operation\x20that\x20describes\x20the\x20quota\x20all\
1453    ocation.\n\n\x0c\n\x05\x04\0\x02\x01\x06\x12\x03F\x02\x10\n\x0c\n\x05\
1454    \x04\0\x02\x01\x01\x12\x03F\x11#\n\x0c\n\x05\x04\0\x02\x01\x03\x12\x03F&\
1455    '\n\xba\x01\n\x04\x04\0\x02\x02\x12\x03K\x02\x1f\x1a\xac\x01\x20Specifie\
1456    s\x20which\x20version\x20of\x20service\x20configuration\x20should\x20be\
1457    \x20used\x20to\x20process\n\x20the\x20request.\x20If\x20unspecified\x20o\
1458    r\x20no\x20matching\x20version\x20can\x20be\x20found,\x20the\x20latest\n\
1459    \x20one\x20will\x20be\x20used.\n\n\x0c\n\x05\x04\0\x02\x02\x05\x12\x03K\
1460    \x02\x08\n\x0c\n\x05\x04\0\x02\x02\x01\x12\x03K\t\x1a\n\x0c\n\x05\x04\0\
1461    \x02\x02\x03\x12\x03K\x1d\x1e\nB\n\x02\x04\x01\x12\x05O\0\xae\x01\x01\
1462    \x1a5\x20Represents\x20information\x20regarding\x20a\x20quota\x20operati\
1463    on.\n\n\n\n\x03\x04\x01\x01\x12\x03O\x08\x16\n&\n\x04\x04\x01\x04\0\x12\
1464    \x04Q\x02y\x03\x1a\x18\x20Supported\x20quota\x20modes.\n\n\x0c\n\x05\x04\
1465    \x01\x04\0\x01\x12\x03Q\x07\x10\nB\n\x06\x04\x01\x04\0\x02\0\x12\x03S\
1466    \x04\x14\x1a3\x20Guard\x20against\x20implicit\x20default.\x20Must\x20not\
1467    \x20be\x20used.\n\n\x0e\n\x07\x04\x01\x04\0\x02\0\x01\x12\x03S\x04\x0f\n\
1468    \x0e\n\x07\x04\x01\x04\0\x02\0\x02\x12\x03S\x12\x13\n\xfa\x02\n\x06\x04\
1469    \x01\x04\0\x02\x01\x12\x03[\x04\x0f\x1a\xea\x02\x20For\x20AllocateQuota\
1470    \x20request,\x20allocates\x20quota\x20for\x20the\x20amount\x20specified\
1471    \x20in\n\x20the\x20service\x20configuration\x20or\x20specified\x20using\
1472    \x20the\x20quota\x20metrics.\x20If\x20the\n\x20amount\x20is\x20higher\
1473    \x20than\x20the\x20available\x20quota,\x20allocation\x20error\x20will\
1474    \x20be\n\x20returned\x20and\x20no\x20quota\x20will\x20be\x20allocated.\n\
1475    \x20If\x20multiple\x20quotas\x20are\x20part\x20of\x20the\x20request,\x20\
1476    and\x20one\x20fails,\x20none\x20of\x20the\n\x20quotas\x20are\x20allocate\
1477    d\x20or\x20released.\n\n\x0e\n\x07\x04\x01\x04\0\x02\x01\x01\x12\x03[\
1478    \x04\n\n\x0e\n\x07\x04\x01\x04\0\x02\x01\x02\x12\x03[\r\x0e\n\xf4\x03\n\
1479    \x06\x04\x01\x04\0\x02\x02\x12\x03e\x04\x14\x1a\xe4\x03\x20The\x20operat\
1480    ion\x20allocates\x20quota\x20for\x20the\x20amount\x20specified\x20in\x20\
1481    the\x20service\n\x20configuration\x20or\x20specified\x20using\x20the\x20\
1482    quota\x20metrics.\x20If\x20the\x20amount\x20is\n\x20higher\x20than\x20th\
1483    e\x20available\x20quota,\x20request\x20does\x20not\x20fail\x20but\x20all\
1484    \x20available\n\x20quota\x20will\x20be\x20allocated.\n\x20For\x20rate\
1485    \x20quota,\x20BEST_EFFORT\x20will\x20continue\x20to\x20deduct\x20from\
1486    \x20other\x20groups\n\x20even\x20if\x20one\x20does\x20not\x20have\x20eno\
1487    ugh\x20quota.\x20For\x20allocation,\x20it\x20will\x20find\x20the\n\x20mi\
1488    nimum\x20available\x20amount\x20across\x20all\x20groups\x20and\x20deduct\
1489    \x20that\x20amount\x20from\n\x20all\x20the\x20affected\x20groups.\n\n\
1490    \x0e\n\x07\x04\x01\x04\0\x02\x02\x01\x12\x03e\x04\x0f\n\x0e\n\x07\x04\
1491    \x01\x04\0\x02\x02\x02\x12\x03e\x12\x13\n\xb7\x01\n\x06\x04\x01\x04\0\
1492    \x02\x03\x12\x03j\x04\x13\x1a\xa7\x01\x20For\x20AllocateQuota\x20request\
1493    ,\x20only\x20checks\x20if\x20there\x20is\x20enough\x20quota\n\x20availab\
1494    le\x20and\x20does\x20not\x20change\x20the\x20available\x20quota.\x20No\
1495    \x20lock\x20is\x20placed\x20on\n\x20the\x20available\x20quota\x20either.\
1496    \n\n\x0e\n\x07\x04\x01\x04\0\x02\x03\x01\x12\x03j\x04\x0e\n\x0e\n\x07\
1497    \x04\x01\x04\0\x02\x03\x02\x12\x03j\x11\x12\n\xa8\x02\n\x06\x04\x01\x04\
1498    \0\x02\x04\x12\x03q\x04\x13\x1a\x98\x02\x20Unimplemented.\x20When\x20use\
1499    d\x20in\x20AllocateQuotaRequest,\x20this\x20returns\x20the\n\x20effectiv\
1500    e\x20quota\x20limit(s)\x20in\x20the\x20response,\x20and\x20no\x20quota\
1501    \x20check\x20will\x20be\n\x20performed.\x20Not\x20supported\x20for\x20ot\
1502    her\x20requests,\x20and\x20even\x20for\n\x20AllocateQuotaRequest,\x20thi\
1503    s\x20is\x20currently\x20supported\x20only\x20for\x20allowlisted\n\x20ser\
1504    vices.\n\n\x0e\n\x07\x04\x01\x04\0\x02\x04\x01\x12\x03q\x04\x0e\n\x0e\n\
1505    \x07\x04\x01\x04\0\x02\x04\x02\x12\x03q\x11\x12\n\xc1\x02\n\x06\x04\x01\
1506    \x04\0\x02\x05\x12\x03x\x04\x14\x1a\xb1\x02\x20The\x20operation\x20alloc\
1507    ates\x20quota\x20for\x20the\x20amount\x20specified\x20in\x20the\x20servi\
1508    ce\n\x20configuration\x20or\x20specified\x20using\x20the\x20quota\x20met\
1509    rics.\x20If\x20the\x20requested\n\x20amount\x20is\x20higher\x20than\x20t\
1510    he\x20available\x20quota,\x20request\x20does\x20not\x20fail\x20and\n\x20\
1511    remaining\x20quota\x20would\x20become\x20negative\x20(going\x20over\x20t\
1512    he\x20limit).\n\x20Not\x20supported\x20for\x20Rate\x20Quota.\n\n\x0e\n\
1513    \x07\x04\x01\x04\0\x02\x05\x01\x12\x03x\x04\x0f\n\x0e\n\x07\x04\x01\x04\
1514    \0\x02\x05\x02\x12\x03x\x12\x13\n\xe9\x03\n\x04\x04\x01\x02\0\x12\x04\
1515    \x84\x01\x02\x1a\x1a\xda\x03\x20Identity\x20of\x20the\x20operation.\x20T\
1516    his\x20is\x20expected\x20to\x20be\x20unique\x20within\x20the\x20scope\n\
1517    \x20of\x20the\x20service\x20that\x20generated\x20the\x20operation,\x20an\
1518    d\x20guarantees\x20idempotency\x20in\n\x20case\x20of\x20retries.\n\n\x20\
1519    In\x20order\x20to\x20ensure\x20best\x20performance\x20and\x20latency\x20\
1520    in\x20the\x20Quota\x20backends,\n\x20operation_ids\x20are\x20optimally\
1521    \x20associated\x20with\x20time,\x20so\x20that\x20related\n\x20operations\
1522    \x20can\x20be\x20accessed\x20fast\x20in\x20storage.\x20For\x20this\x20re\
1523    ason,\x20the\n\x20recommended\x20token\x20for\x20services\x20that\x20int\
1524    end\x20to\x20operate\x20at\x20a\x20high\x20QPS\x20is\n\x20Unix\x20time\
1525    \x20in\x20nanos\x20+\x20UUID\n\n\r\n\x05\x04\x01\x02\0\x05\x12\x04\x84\
1526    \x01\x02\x08\n\r\n\x05\x04\x01\x02\0\x01\x12\x04\x84\x01\t\x15\n\r\n\x05\
1527    \x04\x01\x02\0\x03\x12\x04\x84\x01\x18\x19\n\xfa\x03\n\x04\x04\x01\x02\
1528    \x01\x12\x04\x91\x01\x02\x19\x1a\xeb\x03\x20Fully\x20qualified\x20name\
1529    \x20of\x20the\x20API\x20method\x20for\x20which\x20this\x20quota\x20opera\
1530    tion\x20is\n\x20requested.\x20This\x20name\x20is\x20used\x20for\x20match\
1531    ing\x20quota\x20rules\x20or\x20metric\x20rules\x20and\n\x20billing\x20st\
1532    atus\x20rules\x20defined\x20in\x20service\x20configuration.\n\n\x20This\
1533    \x20field\x20should\x20not\x20be\x20set\x20if\x20any\x20of\x20the\x20fol\
1534    lowing\x20is\x20true:\n\x20(1)\x20the\x20quota\x20operation\x20is\x20per\
1535    formed\x20on\x20non-API\x20resources.\n\x20(2)\x20quota_metrics\x20is\
1536    \x20set\x20because\x20the\x20caller\x20is\x20doing\x20quota\x20override.\
1537    \n\n\n\x20Example\x20of\x20an\x20RPC\x20method\x20name:\n\x20\x20\x20\
1538    \x20\x20google.example.library.v1.LibraryService.CreateShelf\n\n\r\n\x05\
1539    \x04\x01\x02\x01\x05\x12\x04\x91\x01\x02\x08\n\r\n\x05\x04\x01\x02\x01\
1540    \x01\x12\x04\x91\x01\t\x14\n\r\n\x05\x04\x01\x02\x01\x03\x12\x04\x91\x01\
1541    \x17\x18\n\xdd\x01\n\x04\x04\x01\x02\x02\x12\x04\x99\x01\x02\x19\x1a\xce\
1542    \x01\x20Identity\x20of\x20the\x20consumer\x20for\x20whom\x20this\x20quot\
1543    a\x20operation\x20is\x20being\x20performed.\n\n\x20This\x20can\x20be\x20\
1544    in\x20one\x20of\x20the\x20following\x20formats:\n\x20\x20\x20project:<pr\
1545    oject_id>,\n\x20\x20\x20project_number:<project_number>,\n\x20\x20\x20ap\
1546    i_key:<api_key>.\n\n\r\n\x05\x04\x01\x02\x02\x05\x12\x04\x99\x01\x02\x08\
1547    \n\r\n\x05\x04\x01\x02\x02\x01\x12\x04\x99\x01\t\x14\n\r\n\x05\x04\x01\
1548    \x02\x02\x03\x12\x04\x99\x01\x17\x18\n0\n\x04\x04\x01\x02\x03\x12\x04\
1549    \x9c\x01\x02!\x1a\"\x20Labels\x20describing\x20the\x20operation.\n\n\r\n\
1550    \x05\x04\x01\x02\x03\x06\x12\x04\x9c\x01\x02\x15\n\r\n\x05\x04\x01\x02\
1551    \x03\x01\x12\x04\x9c\x01\x16\x1c\n\r\n\x05\x04\x01\x02\x03\x03\x12\x04\
1552    \x9c\x01\x1f\x20\n\xd0\x04\n\x04\x04\x01\x02\x04\x12\x04\xaa\x01\x02,\
1553    \x1a\xc1\x04\x20Represents\x20information\x20about\x20this\x20operation.\
1554    \x20Each\x20MetricValueSet\n\x20corresponds\x20to\x20a\x20metric\x20defi\
1555    ned\x20in\x20the\x20service\x20configuration.\n\x20The\x20data\x20type\
1556    \x20used\x20in\x20the\x20MetricValueSet\x20must\x20agree\x20with\n\x20th\
1557    e\x20data\x20type\x20specified\x20in\x20the\x20metric\x20definition.\n\n\
1558    \x20Within\x20a\x20single\x20operation,\x20it\x20is\x20not\x20allowed\
1559    \x20to\x20have\x20more\x20than\x20one\n\x20MetricValue\x20instances\x20t\
1560    hat\x20have\x20the\x20same\x20metric\x20names\x20and\x20identical\n\x20l\
1561    abel\x20value\x20combinations.\x20If\x20a\x20request\x20has\x20such\x20d\
1562    uplicated\x20MetricValue\n\x20instances,\x20the\x20entire\x20request\x20\
1563    is\x20rejected\x20with\n\x20an\x20invalid\x20argument\x20error.\n\n\x20T\
1564    his\x20field\x20is\x20mutually\x20exclusive\x20with\x20method_name.\n\n\
1565    \r\n\x05\x04\x01\x02\x04\x04\x12\x04\xaa\x01\x02\n\n\r\n\x05\x04\x01\x02\
1566    \x04\x06\x12\x04\xaa\x01\x0b\x19\n\r\n\x05\x04\x01\x02\x04\x01\x12\x04\
1567    \xaa\x01\x1a'\n\r\n\x05\x04\x01\x02\x04\x03\x12\x04\xaa\x01*+\n.\n\x04\
1568    \x04\x01\x02\x05\x12\x04\xad\x01\x02\x1b\x1a\x20\x20Quota\x20mode\x20for\
1569    \x20this\x20operation.\n\n\r\n\x05\x04\x01\x02\x05\x06\x12\x04\xad\x01\
1570    \x02\x0b\n\r\n\x05\x04\x01\x02\x05\x01\x12\x04\xad\x01\x0c\x16\n\r\n\x05\
1571    \x04\x01\x02\x05\x03\x12\x04\xad\x01\x19\x1a\n>\n\x02\x04\x02\x12\x06\
1572    \xb1\x01\0\xc7\x01\x01\x1a0\x20Response\x20message\x20for\x20the\x20Allo\
1573    cateQuota\x20method.\n\n\x0b\n\x03\x04\x02\x01\x12\x04\xb1\x01\x08\x1d\n\
1574    y\n\x04\x04\x02\x02\0\x12\x04\xb4\x01\x02\x1a\x1ak\x20The\x20same\x20ope\
1575    ration_id\x20value\x20used\x20in\x20the\x20AllocateQuotaRequest.\x20Used\
1576    \x20for\n\x20logging\x20and\x20diagnostics\x20purposes.\n\n\r\n\x05\x04\
1577    \x02\x02\0\x05\x12\x04\xb4\x01\x02\x08\n\r\n\x05\x04\x02\x02\0\x01\x12\
1578    \x04\xb4\x01\t\x15\n\r\n\x05\x04\x02\x02\0\x03\x12\x04\xb4\x01\x18\x19\n\
1579    7\n\x04\x04\x02\x02\x01\x12\x04\xb7\x01\x02*\x1a)\x20Indicates\x20the\
1580    \x20decision\x20of\x20the\x20allocate.\n\n\r\n\x05\x04\x02\x02\x01\x04\
1581    \x12\x04\xb7\x01\x02\n\n\r\n\x05\x04\x02\x02\x01\x06\x12\x04\xb7\x01\x0b\
1582    \x15\n\r\n\x05\x04\x02\x02\x01\x01\x12\x04\xb7\x01\x16%\n\r\n\x05\x04\
1583    \x02\x02\x01\x03\x12\x04\xb7\x01()\n\xd9\x03\n\x04\x04\x02\x02\x02\x12\
1584    \x04\xc3\x01\x02,\x1a\xca\x03\x20Quota\x20metrics\x20to\x20indicate\x20t\
1585    he\x20result\x20of\x20allocation.\x20Depending\x20on\x20the\n\x20request\
1586    ,\x20one\x20or\x20more\x20of\x20the\x20following\x20metrics\x20will\x20b\
1587    e\x20included:\n\n\x201.\x20Per\x20quota\x20group\x20or\x20per\x20quota\
1588    \x20metric\x20incremental\x20usage\x20will\x20be\x20specified\n\x20using\
1589    \x20the\x20following\x20delta\x20metric\x20:\n\x20\x20\x20\"servicerunti\
1590    me.googleapis.com/api/consumer/quota_used_count\"\n\n\x202.\x20The\x20qu\
1591    ota\x20limit\x20reached\x20condition\x20will\x20be\x20specified\x20using\
1592    \x20the\x20following\n\x20boolean\x20metric\x20:\n\x20\x20\x20\"servicer\
1593    untime.googleapis.com/quota/exceeded\"\n\n\r\n\x05\x04\x02\x02\x02\x04\
1594    \x12\x04\xc3\x01\x02\n\n\r\n\x05\x04\x02\x02\x02\x06\x12\x04\xc3\x01\x0b\
1595    \x19\n\r\n\x05\x04\x02\x02\x02\x01\x12\x04\xc3\x01\x1a'\n\r\n\x05\x04\
1596    \x02\x02\x02\x03\x12\x04\xc3\x01*+\nD\n\x04\x04\x02\x02\x03\x12\x04\xc6\
1597    \x01\x02\x1f\x1a6\x20ID\x20of\x20the\x20actual\x20config\x20used\x20to\
1598    \x20process\x20the\x20request.\n\n\r\n\x05\x04\x02\x02\x03\x05\x12\x04\
1599    \xc6\x01\x02\x08\n\r\n\x05\x04\x02\x02\x03\x01\x12\x04\xc6\x01\t\x1a\n\r\
1600    \n\x05\x04\x02\x02\x03\x03\x12\x04\xc6\x01\x1d\x1e\no\n\x02\x04\x03\x12\
1601    \x06\xca\x01\0\xf4\x01\x01\x1aa\x20Represents\x20error\x20information\
1602    \x20for\x20[QuotaOperation][google.api.servicecontrol.v1.QuotaOperation]\
1603    .\n\n\x0b\n\x03\x04\x03\x01\x12\x04\xca\x01\x08\x12\n\xfe\x02\n\x04\x04\
1604    \x03\x04\0\x12\x06\xd0\x01\x02\xe4\x01\x03\x1a\xed\x02\x20Error\x20codes\
1605    \x20related\x20to\x20project\x20config\x20validations\x20are\x20deprecat\
1606    ed\x20since\x20the\n\x20quota\x20controller\x20methods\x20do\x20not\x20p\
1607    erform\x20these\x20validations.\x20Instead\x20services\n\x20have\x20to\
1608    \x20call\x20the\x20Check\x20method,\x20without\x20quota_properties\x20fi\
1609    eld,\x20to\x20perform\n\x20these\x20validations\x20before\x20calling\x20\
1610    the\x20quota\x20controller\x20methods.\x20These\n\x20methods\x20check\
1611    \x20only\x20for\x20project\x20deletion\x20to\x20be\x20wipe\x20out\x20com\
1612    pliant.\n\n\r\n\x05\x04\x03\x04\0\x01\x12\x04\xd0\x01\x07\x0b\n%\n\x06\
1613    \x04\x03\x04\0\x02\0\x12\x04\xd2\x01\x04\x14\x1a\x15\x20This\x20is\x20ne\
1614    ver\x20used.\n\n\x0f\n\x07\x04\x03\x04\0\x02\0\x01\x12\x04\xd2\x01\x04\
1615    \x0f\n\x0f\n\x07\x04\x03\x04\0\x02\0\x02\x12\x04\xd2\x01\x12\x13\n}\n\
1616    \x06\x04\x03\x04\0\x02\x01\x12\x04\xd6\x01\x04\x1b\x1am\x20Quota\x20allo\
1617    cation\x20failed.\n\x20Same\x20as\x20[google.rpc.Code.RESOURCE_EXHAUSTED\
1618    ][google.rpc.Code.RESOURCE_EXHAUSTED].\n\n\x0f\n\x07\x04\x03\x04\0\x02\
1619    \x01\x01\x12\x04\xd6\x01\x04\x16\n\x0f\n\x07\x04\x03\x04\0\x02\x01\x02\
1620    \x12\x04\xd6\x01\x19\x1a\nb\n\x06\x04\x03\x04\0\x02\x02\x12\x04\xda\x01\
1621    \x04\x1d\x1aR\x20Consumer\x20cannot\x20access\x20the\x20service\x20becau\
1622    se\x20the\x20service\x20requires\x20active\n\x20billing.\n\n\x0f\n\x07\
1623    \x04\x03\x04\0\x02\x02\x01\x12\x04\xda\x01\x04\x16\n\x0f\n\x07\x04\x03\
1624    \x04\0\x02\x02\x02\x12\x04\xda\x01\x19\x1c\nP\n\x06\x04\x03\x04\0\x02\
1625    \x03\x12\x04\xdd\x01\x04\x1a\x1a@\x20Consumer's\x20project\x20has\x20bee\
1626    n\x20marked\x20as\x20deleted\x20(soft\x20deletion).\n\n\x0f\n\x07\x04\
1627    \x03\x04\0\x02\x03\x01\x12\x04\xdd\x01\x04\x13\n\x0f\n\x07\x04\x03\x04\0\
1628    \x02\x03\x02\x12\x04\xdd\x01\x16\x19\n/\n\x06\x04\x03\x04\0\x02\x04\x12\
1629    \x04\xe0\x01\x04\x1a\x1a\x1f\x20Specified\x20API\x20key\x20is\x20invalid\
1630    .\n\n\x0f\n\x07\x04\x03\x04\0\x02\x04\x01\x12\x04\xe0\x01\x04\x13\n\x0f\
1631    \n\x07\x04\x03\x04\0\x02\x04\x02\x12\x04\xe0\x01\x16\x19\n0\n\x06\x04\
1632    \x03\x04\0\x02\x05\x12\x04\xe3\x01\x04\x1a\x1a\x20\x20Specified\x20API\
1633    \x20Key\x20has\x20expired.\n\n\x0f\n\x07\x04\x03\x04\0\x02\x05\x01\x12\
1634    \x04\xe3\x01\x04\x13\n\x0f\n\x07\x04\x03\x04\0\x02\x05\x02\x12\x04\xe3\
1635    \x01\x16\x19\n\x1b\n\x04\x04\x03\x02\0\x12\x04\xe7\x01\x02\x10\x1a\r\x20\
1636    Error\x20code.\n\n\r\n\x05\x04\x03\x02\0\x06\x12\x04\xe7\x01\x02\x06\n\r\
1637    \n\x05\x04\x03\x02\0\x01\x12\x04\xe7\x01\x07\x0b\n\r\n\x05\x04\x03\x02\0\
1638    \x03\x12\x04\xe7\x01\x0e\x0f\n\xc7\x01\n\x04\x04\x03\x02\x01\x12\x04\xec\
1639    \x01\x02\x15\x1a\xb8\x01\x20Subject\x20to\x20whom\x20this\x20error\x20ap\
1640    plies.\x20See\x20the\x20specific\x20enum\x20for\x20more\x20details\n\x20\
1641    on\x20this\x20field.\x20For\x20example,\x20\"clientip:<ip\x20address\x20\
1642    of\x20client>\"\x20or\n\x20\"project:<Google\x20developer\x20project\x20\
1643    id>\".\n\n\r\n\x05\x04\x03\x02\x01\x05\x12\x04\xec\x01\x02\x08\n\r\n\x05\
1644    \x04\x03\x02\x01\x01\x12\x04\xec\x01\t\x10\n\r\n\x05\x04\x03\x02\x01\x03\
1645    \x12\x04\xec\x01\x13\x14\nO\n\x04\x04\x03\x02\x02\x12\x04\xef\x01\x02\
1646    \x19\x1aA\x20Free-form\x20text\x20that\x20provides\x20details\x20on\x20t\
1647    he\x20cause\x20of\x20the\x20error.\n\n\r\n\x05\x04\x03\x02\x02\x05\x12\
1648    \x04\xef\x01\x02\x08\n\r\n\x05\x04\x03\x02\x02\x01\x12\x04\xef\x01\t\x14\
1649    \n\r\n\x05\x04\x03\x02\x02\x03\x12\x04\xef\x01\x17\x18\nu\n\x04\x04\x03\
1650    \x02\x03\x12\x04\xf3\x01\x02\x1f\x1ag\x20Contains\x20additional\x20infor\
1651    mation\x20about\x20the\x20quota\x20error.\n\x20If\x20available,\x20`stat\
1652    us.code`\x20will\x20be\x20non\x20zero.\n\n\r\n\x05\x04\x03\x02\x03\x06\
1653    \x12\x04\xf3\x01\x02\x13\n\r\n\x05\x04\x03\x02\x03\x01\x12\x04\xf3\x01\
1654    \x14\x1a\n\r\n\x05\x04\x03\x02\x03\x03\x12\x04\xf3\x01\x1d\x1eb\x06proto\
1655    3\
1656";
1657
1658static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT;
1659
1660fn parse_descriptor_proto() -> ::protobuf::descriptor::FileDescriptorProto {
1661    ::protobuf::Message::parse_from_bytes(file_descriptor_proto_data).unwrap()
1662}
1663
1664pub fn file_descriptor_proto() -> &'static ::protobuf::descriptor::FileDescriptorProto {
1665    file_descriptor_proto_lazy.get(|| {
1666        parse_descriptor_proto()
1667    })
1668}