google_cloud_rust_raw/api/
backend.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/backend.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 Backend {
28    // message fields
29    pub rules: ::protobuf::RepeatedField<BackendRule>,
30    // special fields
31    pub unknown_fields: ::protobuf::UnknownFields,
32    pub cached_size: ::protobuf::CachedSize,
33}
34
35impl<'a> ::std::default::Default for &'a Backend {
36    fn default() -> &'a Backend {
37        <Backend as ::protobuf::Message>::default_instance()
38    }
39}
40
41impl Backend {
42    pub fn new() -> Backend {
43        ::std::default::Default::default()
44    }
45
46    // repeated .google.api.BackendRule rules = 1;
47
48
49    pub fn get_rules(&self) -> &[BackendRule] {
50        &self.rules
51    }
52    pub fn clear_rules(&mut self) {
53        self.rules.clear();
54    }
55
56    // Param is passed by value, moved
57    pub fn set_rules(&mut self, v: ::protobuf::RepeatedField<BackendRule>) {
58        self.rules = v;
59    }
60
61    // Mutable pointer to the field.
62    pub fn mut_rules(&mut self) -> &mut ::protobuf::RepeatedField<BackendRule> {
63        &mut self.rules
64    }
65
66    // Take field
67    pub fn take_rules(&mut self) -> ::protobuf::RepeatedField<BackendRule> {
68        ::std::mem::replace(&mut self.rules, ::protobuf::RepeatedField::new())
69    }
70}
71
72impl ::protobuf::Message for Backend {
73    fn is_initialized(&self) -> bool {
74        for v in &self.rules {
75            if !v.is_initialized() {
76                return false;
77            }
78        };
79        true
80    }
81
82    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
83        while !is.eof()? {
84            let (field_number, wire_type) = is.read_tag_unpack()?;
85            match field_number {
86                1 => {
87                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.rules)?;
88                },
89                _ => {
90                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
91                },
92            };
93        }
94        ::std::result::Result::Ok(())
95    }
96
97    // Compute sizes of nested messages
98    #[allow(unused_variables)]
99    fn compute_size(&self) -> u32 {
100        let mut my_size = 0;
101        for value in &self.rules {
102            let len = value.compute_size();
103            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
104        };
105        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
106        self.cached_size.set(my_size);
107        my_size
108    }
109
110    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
111        for v in &self.rules {
112            os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?;
113            os.write_raw_varint32(v.get_cached_size())?;
114            v.write_to_with_cached_sizes(os)?;
115        };
116        os.write_unknown_fields(self.get_unknown_fields())?;
117        ::std::result::Result::Ok(())
118    }
119
120    fn get_cached_size(&self) -> u32 {
121        self.cached_size.get()
122    }
123
124    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
125        &self.unknown_fields
126    }
127
128    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
129        &mut self.unknown_fields
130    }
131
132    fn as_any(&self) -> &dyn (::std::any::Any) {
133        self as &dyn (::std::any::Any)
134    }
135    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
136        self as &mut dyn (::std::any::Any)
137    }
138    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
139        self
140    }
141
142    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
143        Self::descriptor_static()
144    }
145
146    fn new() -> Backend {
147        Backend::new()
148    }
149
150    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
151        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
152        descriptor.get(|| {
153            let mut fields = ::std::vec::Vec::new();
154            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<BackendRule>>(
155                "rules",
156                |m: &Backend| { &m.rules },
157                |m: &mut Backend| { &mut m.rules },
158            ));
159            ::protobuf::reflect::MessageDescriptor::new_pb_name::<Backend>(
160                "Backend",
161                fields,
162                file_descriptor_proto()
163            )
164        })
165    }
166
167    fn default_instance() -> &'static Backend {
168        static instance: ::protobuf::rt::LazyV2<Backend> = ::protobuf::rt::LazyV2::INIT;
169        instance.get(Backend::new)
170    }
171}
172
173impl ::protobuf::Clear for Backend {
174    fn clear(&mut self) {
175        self.rules.clear();
176        self.unknown_fields.clear();
177    }
178}
179
180impl ::std::fmt::Debug for Backend {
181    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
182        ::protobuf::text_format::fmt(self, f)
183    }
184}
185
186impl ::protobuf::reflect::ProtobufValue for Backend {
187    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
188        ::protobuf::reflect::ReflectValueRef::Message(self)
189    }
190}
191
192#[derive(PartialEq,Clone,Default)]
193pub struct BackendRule {
194    // message fields
195    pub selector: ::std::string::String,
196    pub address: ::std::string::String,
197    pub deadline: f64,
198    pub min_deadline: f64,
199    pub operation_deadline: f64,
200    pub path_translation: BackendRule_PathTranslation,
201    pub protocol: ::std::string::String,
202    pub overrides_by_request_protocol: ::std::collections::HashMap<::std::string::String, BackendRule>,
203    // message oneof groups
204    pub authentication: ::std::option::Option<BackendRule_oneof_authentication>,
205    // special fields
206    pub unknown_fields: ::protobuf::UnknownFields,
207    pub cached_size: ::protobuf::CachedSize,
208}
209
210impl<'a> ::std::default::Default for &'a BackendRule {
211    fn default() -> &'a BackendRule {
212        <BackendRule as ::protobuf::Message>::default_instance()
213    }
214}
215
216#[derive(Clone,PartialEq,Debug)]
217pub enum BackendRule_oneof_authentication {
218    jwt_audience(::std::string::String),
219    disable_auth(bool),
220}
221
222impl BackendRule {
223    pub fn new() -> BackendRule {
224        ::std::default::Default::default()
225    }
226
227    // string selector = 1;
228
229
230    pub fn get_selector(&self) -> &str {
231        &self.selector
232    }
233    pub fn clear_selector(&mut self) {
234        self.selector.clear();
235    }
236
237    // Param is passed by value, moved
238    pub fn set_selector(&mut self, v: ::std::string::String) {
239        self.selector = v;
240    }
241
242    // Mutable pointer to the field.
243    // If field is not initialized, it is initialized with default value first.
244    pub fn mut_selector(&mut self) -> &mut ::std::string::String {
245        &mut self.selector
246    }
247
248    // Take field
249    pub fn take_selector(&mut self) -> ::std::string::String {
250        ::std::mem::replace(&mut self.selector, ::std::string::String::new())
251    }
252
253    // string address = 2;
254
255
256    pub fn get_address(&self) -> &str {
257        &self.address
258    }
259    pub fn clear_address(&mut self) {
260        self.address.clear();
261    }
262
263    // Param is passed by value, moved
264    pub fn set_address(&mut self, v: ::std::string::String) {
265        self.address = v;
266    }
267
268    // Mutable pointer to the field.
269    // If field is not initialized, it is initialized with default value first.
270    pub fn mut_address(&mut self) -> &mut ::std::string::String {
271        &mut self.address
272    }
273
274    // Take field
275    pub fn take_address(&mut self) -> ::std::string::String {
276        ::std::mem::replace(&mut self.address, ::std::string::String::new())
277    }
278
279    // double deadline = 3;
280
281
282    pub fn get_deadline(&self) -> f64 {
283        self.deadline
284    }
285    pub fn clear_deadline(&mut self) {
286        self.deadline = 0.;
287    }
288
289    // Param is passed by value, moved
290    pub fn set_deadline(&mut self, v: f64) {
291        self.deadline = v;
292    }
293
294    // double min_deadline = 4;
295
296
297    pub fn get_min_deadline(&self) -> f64 {
298        self.min_deadline
299    }
300    pub fn clear_min_deadline(&mut self) {
301        self.min_deadline = 0.;
302    }
303
304    // Param is passed by value, moved
305    pub fn set_min_deadline(&mut self, v: f64) {
306        self.min_deadline = v;
307    }
308
309    // double operation_deadline = 5;
310
311
312    pub fn get_operation_deadline(&self) -> f64 {
313        self.operation_deadline
314    }
315    pub fn clear_operation_deadline(&mut self) {
316        self.operation_deadline = 0.;
317    }
318
319    // Param is passed by value, moved
320    pub fn set_operation_deadline(&mut self, v: f64) {
321        self.operation_deadline = v;
322    }
323
324    // .google.api.BackendRule.PathTranslation path_translation = 6;
325
326
327    pub fn get_path_translation(&self) -> BackendRule_PathTranslation {
328        self.path_translation
329    }
330    pub fn clear_path_translation(&mut self) {
331        self.path_translation = BackendRule_PathTranslation::PATH_TRANSLATION_UNSPECIFIED;
332    }
333
334    // Param is passed by value, moved
335    pub fn set_path_translation(&mut self, v: BackendRule_PathTranslation) {
336        self.path_translation = v;
337    }
338
339    // string jwt_audience = 7;
340
341
342    pub fn get_jwt_audience(&self) -> &str {
343        match self.authentication {
344            ::std::option::Option::Some(BackendRule_oneof_authentication::jwt_audience(ref v)) => v,
345            _ => "",
346        }
347    }
348    pub fn clear_jwt_audience(&mut self) {
349        self.authentication = ::std::option::Option::None;
350    }
351
352    pub fn has_jwt_audience(&self) -> bool {
353        match self.authentication {
354            ::std::option::Option::Some(BackendRule_oneof_authentication::jwt_audience(..)) => true,
355            _ => false,
356        }
357    }
358
359    // Param is passed by value, moved
360    pub fn set_jwt_audience(&mut self, v: ::std::string::String) {
361        self.authentication = ::std::option::Option::Some(BackendRule_oneof_authentication::jwt_audience(v))
362    }
363
364    // Mutable pointer to the field.
365    pub fn mut_jwt_audience(&mut self) -> &mut ::std::string::String {
366        if let ::std::option::Option::Some(BackendRule_oneof_authentication::jwt_audience(_)) = self.authentication {
367        } else {
368            self.authentication = ::std::option::Option::Some(BackendRule_oneof_authentication::jwt_audience(::std::string::String::new()));
369        }
370        match self.authentication {
371            ::std::option::Option::Some(BackendRule_oneof_authentication::jwt_audience(ref mut v)) => v,
372            _ => panic!(),
373        }
374    }
375
376    // Take field
377    pub fn take_jwt_audience(&mut self) -> ::std::string::String {
378        if self.has_jwt_audience() {
379            match self.authentication.take() {
380                ::std::option::Option::Some(BackendRule_oneof_authentication::jwt_audience(v)) => v,
381                _ => panic!(),
382            }
383        } else {
384            ::std::string::String::new()
385        }
386    }
387
388    // bool disable_auth = 8;
389
390
391    pub fn get_disable_auth(&self) -> bool {
392        match self.authentication {
393            ::std::option::Option::Some(BackendRule_oneof_authentication::disable_auth(v)) => v,
394            _ => false,
395        }
396    }
397    pub fn clear_disable_auth(&mut self) {
398        self.authentication = ::std::option::Option::None;
399    }
400
401    pub fn has_disable_auth(&self) -> bool {
402        match self.authentication {
403            ::std::option::Option::Some(BackendRule_oneof_authentication::disable_auth(..)) => true,
404            _ => false,
405        }
406    }
407
408    // Param is passed by value, moved
409    pub fn set_disable_auth(&mut self, v: bool) {
410        self.authentication = ::std::option::Option::Some(BackendRule_oneof_authentication::disable_auth(v))
411    }
412
413    // string protocol = 9;
414
415
416    pub fn get_protocol(&self) -> &str {
417        &self.protocol
418    }
419    pub fn clear_protocol(&mut self) {
420        self.protocol.clear();
421    }
422
423    // Param is passed by value, moved
424    pub fn set_protocol(&mut self, v: ::std::string::String) {
425        self.protocol = v;
426    }
427
428    // Mutable pointer to the field.
429    // If field is not initialized, it is initialized with default value first.
430    pub fn mut_protocol(&mut self) -> &mut ::std::string::String {
431        &mut self.protocol
432    }
433
434    // Take field
435    pub fn take_protocol(&mut self) -> ::std::string::String {
436        ::std::mem::replace(&mut self.protocol, ::std::string::String::new())
437    }
438
439    // repeated .google.api.BackendRule.OverridesByRequestProtocolEntry overrides_by_request_protocol = 10;
440
441
442    pub fn get_overrides_by_request_protocol(&self) -> &::std::collections::HashMap<::std::string::String, BackendRule> {
443        &self.overrides_by_request_protocol
444    }
445    pub fn clear_overrides_by_request_protocol(&mut self) {
446        self.overrides_by_request_protocol.clear();
447    }
448
449    // Param is passed by value, moved
450    pub fn set_overrides_by_request_protocol(&mut self, v: ::std::collections::HashMap<::std::string::String, BackendRule>) {
451        self.overrides_by_request_protocol = v;
452    }
453
454    // Mutable pointer to the field.
455    pub fn mut_overrides_by_request_protocol(&mut self) -> &mut ::std::collections::HashMap<::std::string::String, BackendRule> {
456        &mut self.overrides_by_request_protocol
457    }
458
459    // Take field
460    pub fn take_overrides_by_request_protocol(&mut self) -> ::std::collections::HashMap<::std::string::String, BackendRule> {
461        ::std::mem::replace(&mut self.overrides_by_request_protocol, ::std::collections::HashMap::new())
462    }
463}
464
465impl ::protobuf::Message for BackendRule {
466    fn is_initialized(&self) -> bool {
467        true
468    }
469
470    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
471        while !is.eof()? {
472            let (field_number, wire_type) = is.read_tag_unpack()?;
473            match field_number {
474                1 => {
475                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.selector)?;
476                },
477                2 => {
478                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.address)?;
479                },
480                3 => {
481                    if wire_type != ::protobuf::wire_format::WireTypeFixed64 {
482                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
483                    }
484                    let tmp = is.read_double()?;
485                    self.deadline = tmp;
486                },
487                4 => {
488                    if wire_type != ::protobuf::wire_format::WireTypeFixed64 {
489                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
490                    }
491                    let tmp = is.read_double()?;
492                    self.min_deadline = tmp;
493                },
494                5 => {
495                    if wire_type != ::protobuf::wire_format::WireTypeFixed64 {
496                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
497                    }
498                    let tmp = is.read_double()?;
499                    self.operation_deadline = tmp;
500                },
501                6 => {
502                    ::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.path_translation, 6, &mut self.unknown_fields)?
503                },
504                7 => {
505                    if wire_type != ::protobuf::wire_format::WireTypeLengthDelimited {
506                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
507                    }
508                    self.authentication = ::std::option::Option::Some(BackendRule_oneof_authentication::jwt_audience(is.read_string()?));
509                },
510                8 => {
511                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
512                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
513                    }
514                    self.authentication = ::std::option::Option::Some(BackendRule_oneof_authentication::disable_auth(is.read_bool()?));
515                },
516                9 => {
517                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.protocol)?;
518                },
519                10 => {
520                    ::protobuf::rt::read_map_into::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeMessage<BackendRule>>(wire_type, is, &mut self.overrides_by_request_protocol)?;
521                },
522                _ => {
523                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
524                },
525            };
526        }
527        ::std::result::Result::Ok(())
528    }
529
530    // Compute sizes of nested messages
531    #[allow(unused_variables)]
532    fn compute_size(&self) -> u32 {
533        let mut my_size = 0;
534        if !self.selector.is_empty() {
535            my_size += ::protobuf::rt::string_size(1, &self.selector);
536        }
537        if !self.address.is_empty() {
538            my_size += ::protobuf::rt::string_size(2, &self.address);
539        }
540        if self.deadline != 0. {
541            my_size += 9;
542        }
543        if self.min_deadline != 0. {
544            my_size += 9;
545        }
546        if self.operation_deadline != 0. {
547            my_size += 9;
548        }
549        if self.path_translation != BackendRule_PathTranslation::PATH_TRANSLATION_UNSPECIFIED {
550            my_size += ::protobuf::rt::enum_size(6, self.path_translation);
551        }
552        if !self.protocol.is_empty() {
553            my_size += ::protobuf::rt::string_size(9, &self.protocol);
554        }
555        my_size += ::protobuf::rt::compute_map_size::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeMessage<BackendRule>>(10, &self.overrides_by_request_protocol);
556        if let ::std::option::Option::Some(ref v) = self.authentication {
557            match v {
558                &BackendRule_oneof_authentication::jwt_audience(ref v) => {
559                    my_size += ::protobuf::rt::string_size(7, &v);
560                },
561                &BackendRule_oneof_authentication::disable_auth(v) => {
562                    my_size += 2;
563                },
564            };
565        }
566        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
567        self.cached_size.set(my_size);
568        my_size
569    }
570
571    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
572        if !self.selector.is_empty() {
573            os.write_string(1, &self.selector)?;
574        }
575        if !self.address.is_empty() {
576            os.write_string(2, &self.address)?;
577        }
578        if self.deadline != 0. {
579            os.write_double(3, self.deadline)?;
580        }
581        if self.min_deadline != 0. {
582            os.write_double(4, self.min_deadline)?;
583        }
584        if self.operation_deadline != 0. {
585            os.write_double(5, self.operation_deadline)?;
586        }
587        if self.path_translation != BackendRule_PathTranslation::PATH_TRANSLATION_UNSPECIFIED {
588            os.write_enum(6, ::protobuf::ProtobufEnum::value(&self.path_translation))?;
589        }
590        if !self.protocol.is_empty() {
591            os.write_string(9, &self.protocol)?;
592        }
593        ::protobuf::rt::write_map_with_cached_sizes::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeMessage<BackendRule>>(10, &self.overrides_by_request_protocol, os)?;
594        if let ::std::option::Option::Some(ref v) = self.authentication {
595            match v {
596                &BackendRule_oneof_authentication::jwt_audience(ref v) => {
597                    os.write_string(7, v)?;
598                },
599                &BackendRule_oneof_authentication::disable_auth(v) => {
600                    os.write_bool(8, v)?;
601                },
602            };
603        }
604        os.write_unknown_fields(self.get_unknown_fields())?;
605        ::std::result::Result::Ok(())
606    }
607
608    fn get_cached_size(&self) -> u32 {
609        self.cached_size.get()
610    }
611
612    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
613        &self.unknown_fields
614    }
615
616    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
617        &mut self.unknown_fields
618    }
619
620    fn as_any(&self) -> &dyn (::std::any::Any) {
621        self as &dyn (::std::any::Any)
622    }
623    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
624        self as &mut dyn (::std::any::Any)
625    }
626    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
627        self
628    }
629
630    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
631        Self::descriptor_static()
632    }
633
634    fn new() -> BackendRule {
635        BackendRule::new()
636    }
637
638    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
639        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
640        descriptor.get(|| {
641            let mut fields = ::std::vec::Vec::new();
642            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
643                "selector",
644                |m: &BackendRule| { &m.selector },
645                |m: &mut BackendRule| { &mut m.selector },
646            ));
647            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
648                "address",
649                |m: &BackendRule| { &m.address },
650                |m: &mut BackendRule| { &mut m.address },
651            ));
652            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeDouble>(
653                "deadline",
654                |m: &BackendRule| { &m.deadline },
655                |m: &mut BackendRule| { &mut m.deadline },
656            ));
657            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeDouble>(
658                "min_deadline",
659                |m: &BackendRule| { &m.min_deadline },
660                |m: &mut BackendRule| { &mut m.min_deadline },
661            ));
662            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeDouble>(
663                "operation_deadline",
664                |m: &BackendRule| { &m.operation_deadline },
665                |m: &mut BackendRule| { &mut m.operation_deadline },
666            ));
667            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<BackendRule_PathTranslation>>(
668                "path_translation",
669                |m: &BackendRule| { &m.path_translation },
670                |m: &mut BackendRule| { &mut m.path_translation },
671            ));
672            fields.push(::protobuf::reflect::accessor::make_singular_string_accessor::<_>(
673                "jwt_audience",
674                BackendRule::has_jwt_audience,
675                BackendRule::get_jwt_audience,
676            ));
677            fields.push(::protobuf::reflect::accessor::make_singular_bool_accessor::<_>(
678                "disable_auth",
679                BackendRule::has_disable_auth,
680                BackendRule::get_disable_auth,
681            ));
682            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
683                "protocol",
684                |m: &BackendRule| { &m.protocol },
685                |m: &mut BackendRule| { &mut m.protocol },
686            ));
687            fields.push(::protobuf::reflect::accessor::make_map_accessor::<_, ::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeMessage<BackendRule>>(
688                "overrides_by_request_protocol",
689                |m: &BackendRule| { &m.overrides_by_request_protocol },
690                |m: &mut BackendRule| { &mut m.overrides_by_request_protocol },
691            ));
692            ::protobuf::reflect::MessageDescriptor::new_pb_name::<BackendRule>(
693                "BackendRule",
694                fields,
695                file_descriptor_proto()
696            )
697        })
698    }
699
700    fn default_instance() -> &'static BackendRule {
701        static instance: ::protobuf::rt::LazyV2<BackendRule> = ::protobuf::rt::LazyV2::INIT;
702        instance.get(BackendRule::new)
703    }
704}
705
706impl ::protobuf::Clear for BackendRule {
707    fn clear(&mut self) {
708        self.selector.clear();
709        self.address.clear();
710        self.deadline = 0.;
711        self.min_deadline = 0.;
712        self.operation_deadline = 0.;
713        self.path_translation = BackendRule_PathTranslation::PATH_TRANSLATION_UNSPECIFIED;
714        self.authentication = ::std::option::Option::None;
715        self.authentication = ::std::option::Option::None;
716        self.protocol.clear();
717        self.overrides_by_request_protocol.clear();
718        self.unknown_fields.clear();
719    }
720}
721
722impl ::std::fmt::Debug for BackendRule {
723    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
724        ::protobuf::text_format::fmt(self, f)
725    }
726}
727
728impl ::protobuf::reflect::ProtobufValue for BackendRule {
729    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
730        ::protobuf::reflect::ReflectValueRef::Message(self)
731    }
732}
733
734#[derive(Clone,PartialEq,Eq,Debug,Hash)]
735pub enum BackendRule_PathTranslation {
736    PATH_TRANSLATION_UNSPECIFIED = 0,
737    CONSTANT_ADDRESS = 1,
738    APPEND_PATH_TO_ADDRESS = 2,
739}
740
741impl ::protobuf::ProtobufEnum for BackendRule_PathTranslation {
742    fn value(&self) -> i32 {
743        *self as i32
744    }
745
746    fn from_i32(value: i32) -> ::std::option::Option<BackendRule_PathTranslation> {
747        match value {
748            0 => ::std::option::Option::Some(BackendRule_PathTranslation::PATH_TRANSLATION_UNSPECIFIED),
749            1 => ::std::option::Option::Some(BackendRule_PathTranslation::CONSTANT_ADDRESS),
750            2 => ::std::option::Option::Some(BackendRule_PathTranslation::APPEND_PATH_TO_ADDRESS),
751            _ => ::std::option::Option::None
752        }
753    }
754
755    fn values() -> &'static [Self] {
756        static values: &'static [BackendRule_PathTranslation] = &[
757            BackendRule_PathTranslation::PATH_TRANSLATION_UNSPECIFIED,
758            BackendRule_PathTranslation::CONSTANT_ADDRESS,
759            BackendRule_PathTranslation::APPEND_PATH_TO_ADDRESS,
760        ];
761        values
762    }
763
764    fn enum_descriptor_static() -> &'static ::protobuf::reflect::EnumDescriptor {
765        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::LazyV2::INIT;
766        descriptor.get(|| {
767            ::protobuf::reflect::EnumDescriptor::new_pb_name::<BackendRule_PathTranslation>("BackendRule.PathTranslation", file_descriptor_proto())
768        })
769    }
770}
771
772impl ::std::marker::Copy for BackendRule_PathTranslation {
773}
774
775impl ::std::default::Default for BackendRule_PathTranslation {
776    fn default() -> Self {
777        BackendRule_PathTranslation::PATH_TRANSLATION_UNSPECIFIED
778    }
779}
780
781impl ::protobuf::reflect::ProtobufValue for BackendRule_PathTranslation {
782    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
783        ::protobuf::reflect::ReflectValueRef::Enum(::protobuf::ProtobufEnum::descriptor(self))
784    }
785}
786
787static file_descriptor_proto_data: &'static [u8] = b"\
788    \n\x18google/api/backend.proto\x12\ngoogle.api\"8\n\x07Backend\x12-\n\
789    \x05rules\x18\x01\x20\x03(\x0b2\x17.google.api.BackendRuleR\x05rules\"\
790    \xcc\x05\n\x0bBackendRule\x12\x1a\n\x08selector\x18\x01\x20\x01(\tR\x08s\
791    elector\x12\x18\n\x07address\x18\x02\x20\x01(\tR\x07address\x12\x1a\n\
792    \x08deadline\x18\x03\x20\x01(\x01R\x08deadline\x12%\n\x0cmin_deadline\
793    \x18\x04\x20\x01(\x01R\x0bminDeadlineB\x02\x18\x01\x12-\n\x12operation_d\
794    eadline\x18\x05\x20\x01(\x01R\x11operationDeadline\x12R\n\x10path_transl\
795    ation\x18\x06\x20\x01(\x0e2'.google.api.BackendRule.PathTranslationR\x0f\
796    pathTranslation\x12#\n\x0cjwt_audience\x18\x07\x20\x01(\tH\0R\x0bjwtAudi\
797    ence\x12#\n\x0cdisable_auth\x18\x08\x20\x01(\x08H\0R\x0bdisableAuth\x12\
798    \x1a\n\x08protocol\x18\t\x20\x01(\tR\x08protocol\x12z\n\x1doverrides_by_\
799    request_protocol\x18\n\x20\x03(\x0b27.google.api.BackendRule.OverridesBy\
800    RequestProtocolEntryR\x1aoverridesByRequestProtocol\x1af\n\x1fOverridesB\
801    yRequestProtocolEntry\x12\x10\n\x03key\x18\x01\x20\x01(\tR\x03key\x12-\n\
802    \x05value\x18\x02\x20\x01(\x0b2\x17.google.api.BackendRuleR\x05value:\
803    \x028\x01\"e\n\x0fPathTranslation\x12\x20\n\x1cPATH_TRANSLATION_UNSPECIF\
804    IED\x10\0\x12\x14\n\x10CONSTANT_ADDRESS\x10\x01\x12\x1a\n\x16APPEND_PATH\
805    _TO_ADDRESS\x10\x02B\x10\n\x0eauthenticationBn\n\x0ecom.google.apiB\x0cB\
806    ackendProtoP\x01ZEgoogle.golang.org/genproto/googleapis/api/serviceconfi\
807    g;serviceconfig\xa2\x02\x04GAPIJ\xec3\n\x07\x12\x05\x0e\0\xb8\x01\x01\n\
808    \xbc\x04\n\x01\x0c\x12\x03\x0e\0\x122\xb1\x04\x20Copyright\x202023\x20Go\
809    ogle\x20LLC\n\n\x20Licensed\x20under\x20the\x20Apache\x20License,\x20Ver\
810    sion\x202.0\x20(the\x20\"License\");\n\x20you\x20may\x20not\x20use\x20th\
811    is\x20file\x20except\x20in\x20compliance\x20with\x20the\x20License.\n\
812    \x20You\x20may\x20obtain\x20a\x20copy\x20of\x20the\x20License\x20at\n\n\
813    \x20\x20\x20\x20\x20http://www.apache.org/licenses/LICENSE-2.0\n\n\x20Un\
814    less\x20required\x20by\x20applicable\x20law\x20or\x20agreed\x20to\x20in\
815    \x20writing,\x20software\n\x20distributed\x20under\x20the\x20License\x20\
816    is\x20distributed\x20on\x20an\x20\"AS\x20IS\"\x20BASIS,\n\x20WITHOUT\x20\
817    WARRANTIES\x20OR\x20CONDITIONS\x20OF\x20ANY\x20KIND,\x20either\x20expres\
818    s\x20or\x20implied.\n\x20See\x20the\x20License\x20for\x20the\x20specific\
819    \x20language\x20governing\x20permissions\x20and\n\x20limitations\x20unde\
820    r\x20the\x20License.\n\n\x08\n\x01\x02\x12\x03\x10\0\x13\n\x08\n\x01\x08\
821    \x12\x03\x12\0\\\n\t\n\x02\x08\x0b\x12\x03\x12\0\\\n\x08\n\x01\x08\x12\
822    \x03\x13\0\"\n\t\n\x02\x08\n\x12\x03\x13\0\"\n\x08\n\x01\x08\x12\x03\x14\
823    \0-\n\t\n\x02\x08\x08\x12\x03\x14\0-\n\x08\n\x01\x08\x12\x03\x15\0'\n\t\
824    \n\x02\x08\x01\x12\x03\x15\0'\n\x08\n\x01\x08\x12\x03\x16\0\"\n\t\n\x02\
825    \x08$\x12\x03\x16\0\"\nH\n\x02\x04\0\x12\x04\x19\0\x1e\x01\x1a<\x20`Back\
826    end`\x20defines\x20the\x20backend\x20configuration\x20for\x20a\x20servic\
827    e.\n\n\n\n\x03\x04\0\x01\x12\x03\x19\x08\x0f\n\x9b\x01\n\x04\x04\0\x02\0\
828    \x12\x03\x1d\x02!\x1a\x8d\x01\x20A\x20list\x20of\x20API\x20backend\x20ru\
829    les\x20that\x20apply\x20to\x20individual\x20API\x20methods.\n\n\x20**NOT\
830    E:**\x20All\x20service\x20configuration\x20rules\x20follow\x20\"last\x20\
831    one\x20wins\"\x20order.\n\n\x0c\n\x05\x04\0\x02\0\x04\x12\x03\x1d\x02\n\
832    \n\x0c\n\x05\x04\0\x02\0\x06\x12\x03\x1d\x0b\x16\n\x0c\n\x05\x04\0\x02\0\
833    \x01\x12\x03\x1d\x17\x1c\n\x0c\n\x05\x04\0\x02\0\x03\x12\x03\x1d\x1f\x20\
834    \nS\n\x02\x04\x01\x12\x05!\0\xb8\x01\x01\x1aF\x20A\x20backend\x20rule\
835    \x20provides\x20configuration\x20for\x20an\x20individual\x20API\x20eleme\
836    nt.\n\n\n\n\x03\x04\x01\x01\x12\x03!\x08\x13\n\xcd\x02\n\x04\x04\x01\x04\
837    \0\x12\x04)\x02Y\x03\x1a\xbe\x02\x20Path\x20Translation\x20specifies\x20\
838    how\x20to\x20combine\x20the\x20backend\x20address\x20with\x20the\n\x20re\
839    quest\x20path\x20in\x20order\x20to\x20produce\x20the\x20appropriate\x20f\
840    orwarding\x20URL\x20for\x20the\n\x20request.\n\n\x20Path\x20Translation\
841    \x20is\x20applicable\x20only\x20to\x20HTTP-based\x20backends.\x20Backend\
842    s\x20which\n\x20do\x20not\x20accept\x20requests\x20over\x20HTTP/HTTPS\
843    \x20should\x20leave\x20`path_translation`\n\x20unspecified.\n\n\x0c\n\
844    \x05\x04\x01\x04\0\x01\x12\x03)\x07\x16\n\r\n\x06\x04\x01\x04\0\x02\0\
845    \x12\x03*\x04%\n\x0e\n\x07\x04\x01\x04\0\x02\0\x01\x12\x03*\x04\x20\n\
846    \x0e\n\x07\x04\x01\x04\0\x02\0\x02\x12\x03*#$\n\x95\x07\n\x06\x04\x01\
847    \x04\0\x02\x01\x12\x03C\x04\x19\x1a\x85\x07\x20Use\x20the\x20backend\x20\
848    address\x20as-is,\x20with\x20no\x20modification\x20to\x20the\x20path.\
849    \x20If\x20the\n\x20URL\x20pattern\x20contains\x20variables,\x20the\x20va\
850    riable\x20names\x20and\x20values\x20will\x20be\n\x20appended\x20to\x20th\
851    e\x20query\x20string.\x20If\x20a\x20query\x20string\x20parameter\x20and\
852    \x20a\x20URL\n\x20pattern\x20variable\x20have\x20the\x20same\x20name,\
853    \x20this\x20may\x20result\x20in\x20duplicate\x20keys\x20in\n\x20the\x20q\
854    uery\x20string.\n\n\x20#\x20Examples\n\n\x20Given\x20the\x20following\
855    \x20operation\x20config:\n\n\x20\x20\x20\x20\x20Method\x20path:\x20\x20\
856    \x20\x20\x20\x20\x20\x20/api/company/{cid}/user/{uid}\n\x20\x20\x20\x20\
857    \x20Backend\x20address:\x20\x20\x20\x20https://example.cloudfunctions.ne\
858    t/getUser\n\n\x20Requests\x20to\x20the\x20following\x20request\x20paths\
859    \x20will\x20call\x20the\x20backend\x20at\x20the\n\x20translated\x20path:\
860    \n\n\x20\x20\x20\x20\x20Request\x20path:\x20/api/company/widgetworks/use\
861    r/johndoe\n\x20\x20\x20\x20\x20Translated:\n\x20\x20\x20\x20\x20https://\
862    example.cloudfunctions.net/getUser?cid=widgetworks&uid=johndoe\n\n\x20\
863    \x20\x20\x20\x20Request\x20path:\x20/api/company/widgetworks/user/johndo\
864    e?timezone=EST\n\x20\x20\x20\x20\x20Translated:\n\x20\x20\x20\x20\x20htt\
865    ps://example.cloudfunctions.net/getUser?timezone=EST&cid=widgetworks&uid\
866    =johndoe\n\n\x0e\n\x07\x04\x01\x04\0\x02\x01\x01\x12\x03C\x04\x14\n\x0e\
867    \n\x07\x04\x01\x04\0\x02\x01\x02\x12\x03C\x17\x18\n\x82\x05\n\x06\x04\
868    \x01\x04\0\x02\x02\x12\x03X\x04\x1f\x1a\xf2\x04\x20The\x20request\x20pat\
869    h\x20will\x20be\x20appended\x20to\x20the\x20backend\x20address.\n\n\x20#\
870    \x20Examples\n\n\x20Given\x20the\x20following\x20operation\x20config:\n\
871    \n\x20\x20\x20\x20\x20Method\x20path:\x20\x20\x20\x20\x20\x20\x20\x20/ap\
872    i/company/{cid}/user/{uid}\n\x20\x20\x20\x20\x20Backend\x20address:\x20\
873    \x20\x20\x20https://example.appspot.com\n\n\x20Requests\x20to\x20the\x20\
874    following\x20request\x20paths\x20will\x20call\x20the\x20backend\x20at\
875    \x20the\n\x20translated\x20path:\n\n\x20\x20\x20\x20\x20Request\x20path:\
876    \x20/api/company/widgetworks/user/johndoe\n\x20\x20\x20\x20\x20Translate\
877    d:\n\x20\x20\x20\x20\x20https://example.appspot.com/api/company/widgetwo\
878    rks/user/johndoe\n\n\x20\x20\x20\x20\x20Request\x20path:\x20/api/company\
879    /widgetworks/user/johndoe?timezone=EST\n\x20\x20\x20\x20\x20Translated:\
880    \n\x20\x20\x20\x20\x20https://example.appspot.com/api/company/widgetwork\
881    s/user/johndoe?timezone=EST\n\n\x0e\n\x07\x04\x01\x04\0\x02\x02\x01\x12\
882    \x03X\x04\x1a\n\x0e\n\x07\x04\x01\x04\0\x02\x02\x02\x12\x03X\x1d\x1e\n\
883    \x91\x01\n\x04\x04\x01\x02\0\x12\x03_\x02\x16\x1a\x83\x01\x20Selects\x20\
884    the\x20methods\x20to\x20which\x20this\x20rule\x20applies.\n\n\x20Refer\
885    \x20to\x20[selector][google.api.DocumentationRule.selector]\x20for\x20sy\
886    ntax\n\x20details.\n\n\x0c\n\x05\x04\x01\x02\0\x05\x12\x03_\x02\x08\n\
887    \x0c\n\x05\x04\x01\x02\0\x01\x12\x03_\t\x11\n\x0c\n\x05\x04\x01\x02\0\
888    \x03\x12\x03_\x14\x15\n\x99\x05\n\x04\x04\x01\x02\x01\x12\x03u\x02\x15\
889    \x1a\x8b\x05\x20The\x20address\x20of\x20the\x20API\x20backend.\n\n\x20Th\
890    e\x20scheme\x20is\x20used\x20to\x20determine\x20the\x20backend\x20protoc\
891    ol\x20and\x20security.\n\x20The\x20following\x20schemes\x20are\x20accept\
892    ed:\n\n\x20\x20\x20\x20SCHEME\x20\x20\x20\x20\x20\x20\x20\x20PROTOCOL\
893    \x20\x20\x20\x20SECURITY\n\x20\x20\x20\x20http://\x20\x20\x20\x20\x20\
894    \x20\x20HTTP\x20\x20\x20\x20\x20\x20\x20\x20None\n\x20\x20\x20\x20https:\
895    //\x20\x20\x20\x20\x20\x20HTTP\x20\x20\x20\x20\x20\x20\x20\x20TLS\n\x20\
896    \x20\x20\x20grpc://\x20\x20\x20\x20\x20\x20\x20gRPC\x20\x20\x20\x20\x20\
897    \x20\x20\x20None\n\x20\x20\x20\x20grpcs://\x20\x20\x20\x20\x20\x20gRPC\
898    \x20\x20\x20\x20\x20\x20\x20\x20TLS\n\n\x20It\x20is\x20recommended\x20to\
899    \x20explicitly\x20include\x20a\x20scheme.\x20Leaving\x20out\x20the\x20sc\
900    heme\n\x20may\x20cause\x20constrasting\x20behaviors\x20across\x20platfor\
901    ms.\n\n\x20If\x20the\x20port\x20is\x20unspecified,\x20the\x20default\x20\
902    is:\n\x20-\x2080\x20for\x20schemes\x20without\x20TLS\n\x20-\x20443\x20fo\
903    r\x20schemes\x20with\x20TLS\n\n\x20For\x20HTTP\x20backends,\x20use\x20[p\
904    rotocol][google.api.BackendRule.protocol]\n\x20to\x20specify\x20the\x20p\
905    rotocol\x20version.\n\n\x0c\n\x05\x04\x01\x02\x01\x05\x12\x03u\x02\x08\n\
906    \x0c\n\x05\x04\x01\x02\x01\x01\x12\x03u\t\x10\n\x0c\n\x05\x04\x01\x02\
907    \x01\x03\x12\x03u\x13\x14\n\x9a\x01\n\x04\x04\x01\x02\x02\x12\x03y\x02\
908    \x16\x1a\x8c\x01\x20The\x20number\x20of\x20seconds\x20to\x20wait\x20for\
909    \x20a\x20response\x20from\x20a\x20request.\x20The\x20default\n\x20varies\
910    \x20based\x20on\x20the\x20request\x20protocol\x20and\x20deployment\x20en\
911    vironment.\n\n\x0c\n\x05\x04\x01\x02\x02\x05\x12\x03y\x02\x08\n\x0c\n\
912    \x05\x04\x01\x02\x02\x01\x12\x03y\t\x11\n\x0c\n\x05\x04\x01\x02\x02\x03\
913    \x12\x03y\x14\x15\n&\n\x04\x04\x01\x02\x03\x12\x03|\x02.\x1a\x19\x20Depr\
914    ecated,\x20do\x20not\x20use.\n\n\x0c\n\x05\x04\x01\x02\x03\x05\x12\x03|\
915    \x02\x08\n\x0c\n\x05\x04\x01\x02\x03\x01\x12\x03|\t\x15\n\x0c\n\x05\x04\
916    \x01\x02\x03\x03\x12\x03|\x18\x19\n\x0c\n\x05\x04\x01\x02\x03\x08\x12\
917    \x03|\x1a-\n\r\n\x06\x04\x01\x02\x03\x08\x03\x12\x03|\x1b,\nz\n\x04\x04\
918    \x01\x02\x04\x12\x04\x80\x01\x02\x20\x1al\x20The\x20number\x20of\x20seco\
919    nds\x20to\x20wait\x20for\x20the\x20completion\x20of\x20a\x20long\x20runn\
920    ing\n\x20operation.\x20The\x20default\x20is\x20no\x20deadline.\n\n\r\n\
921    \x05\x04\x01\x02\x04\x05\x12\x04\x80\x01\x02\x08\n\r\n\x05\x04\x01\x02\
922    \x04\x01\x12\x04\x80\x01\t\x1b\n\r\n\x05\x04\x01\x02\x04\x03\x12\x04\x80\
923    \x01\x1e\x1f\n\x0c\n\x04\x04\x01\x02\x05\x12\x04\x82\x01\x02'\n\r\n\x05\
924    \x04\x01\x02\x05\x06\x12\x04\x82\x01\x02\x11\n\r\n\x05\x04\x01\x02\x05\
925    \x01\x12\x04\x82\x01\x12\"\n\r\n\x05\x04\x01\x02\x05\x03\x12\x04\x82\x01\
926    %&\n\xc0\x04\n\x04\x04\x01\x08\0\x12\x06\x92\x01\x02\x9d\x01\x03\x1a\xaf\
927    \x04\x20Authentication\x20settings\x20used\x20by\x20the\x20backend.\n\n\
928    \x20These\x20are\x20typically\x20used\x20to\x20provide\x20service\x20man\
929    agement\x20functionality\x20to\n\x20a\x20backend\x20served\x20on\x20a\
930    \x20publicly-routable\x20URL.\x20The\x20`authentication`\n\x20details\
931    \x20should\x20match\x20the\x20authentication\x20behavior\x20used\x20by\
932    \x20the\x20backend.\n\n\x20For\x20example,\x20specifying\x20`jwt_audienc\
933    e`\x20implies\x20that\x20the\x20backend\x20expects\n\x20authentication\
934    \x20via\x20a\x20JWT.\n\n\x20When\x20authentication\x20is\x20unspecified,\
935    \x20the\x20resulting\x20behavior\x20is\x20the\x20same\n\x20as\x20`disabl\
936    e_auth`\x20set\x20to\x20`true`.\n\n\x20Refer\x20to\x20https://developers\
937    .google.com/identity/protocols/OpenIDConnect\x20for\n\x20JWT\x20ID\x20to\
938    ken.\n\n\r\n\x05\x04\x01\x08\0\x01\x12\x04\x92\x01\x08\x16\n\xb4\x01\n\
939    \x04\x04\x01\x02\x06\x12\x04\x96\x01\x04\x1c\x1a\xa5\x01\x20The\x20JWT\
940    \x20audience\x20is\x20used\x20when\x20generating\x20a\x20JWT\x20ID\x20to\
941    ken\x20for\x20the\x20backend.\n\x20This\x20ID\x20token\x20will\x20be\x20\
942    added\x20in\x20the\x20HTTP\x20\"authorization\"\x20header,\x20and\x20sen\
943    t\n\x20to\x20the\x20backend.\n\n\r\n\x05\x04\x01\x02\x06\x05\x12\x04\x96\
944    \x01\x04\n\n\r\n\x05\x04\x01\x02\x06\x01\x12\x04\x96\x01\x0b\x17\n\r\n\
945    \x05\x04\x01\x02\x06\x03\x12\x04\x96\x01\x1a\x1b\n\x99\x02\n\x04\x04\x01\
946    \x02\x07\x12\x04\x9c\x01\x04\x1a\x1a\x8a\x02\x20When\x20disable_auth\x20\
947    is\x20true,\x20a\x20JWT\x20ID\x20token\x20won't\x20be\x20generated\x20an\
948    d\x20the\n\x20original\x20\"Authorization\"\x20HTTP\x20header\x20will\
949    \x20be\x20preserved.\x20If\x20the\x20header\x20is\n\x20used\x20to\x20car\
950    ry\x20the\x20original\x20token\x20and\x20is\x20expected\x20by\x20the\x20\
951    backend,\x20this\n\x20field\x20must\x20be\x20set\x20to\x20true\x20to\x20\
952    preserve\x20the\x20header.\n\n\r\n\x05\x04\x01\x02\x07\x05\x12\x04\x9c\
953    \x01\x04\x08\n\r\n\x05\x04\x01\x02\x07\x01\x12\x04\x9c\x01\t\x15\n\r\n\
954    \x05\x04\x01\x02\x07\x03\x12\x04\x9c\x01\x18\x19\n\xf5\x05\n\x04\x04\x01\
955    \x02\x08\x12\x04\xb4\x01\x02\x16\x1a\xe6\x05\x20The\x20protocol\x20used\
956    \x20for\x20sending\x20a\x20request\x20to\x20the\x20backend.\n\x20The\x20\
957    supported\x20values\x20are\x20\"http/1.1\"\x20and\x20\"h2\".\n\n\x20The\
958    \x20default\x20value\x20is\x20inferred\x20from\x20the\x20scheme\x20in\
959    \x20the\n\x20[address][google.api.BackendRule.address]\x20field:\n\n\x20\
960    \x20\x20\x20SCHEME\x20\x20\x20\x20\x20\x20\x20\x20PROTOCOL\n\x20\x20\x20\
961    \x20http://\x20\x20\x20\x20\x20\x20\x20http/1.1\n\x20\x20\x20\x20https:/\
962    /\x20\x20\x20\x20\x20\x20http/1.1\n\x20\x20\x20\x20grpc://\x20\x20\x20\
963    \x20\x20\x20\x20h2\n\x20\x20\x20\x20grpcs://\x20\x20\x20\x20\x20\x20h2\n\
964    \n\x20For\x20secure\x20HTTP\x20backends\x20(https://)\x20that\x20support\
965    \x20HTTP/2,\x20set\x20this\x20field\n\x20to\x20\"h2\"\x20for\x20improved\
966    \x20performance.\n\n\x20Configuring\x20this\x20field\x20to\x20non-defaul\
967    t\x20values\x20is\x20only\x20supported\x20for\x20secure\n\x20HTTP\x20bac\
968    kends.\x20This\x20field\x20will\x20be\x20ignored\x20for\x20all\x20other\
969    \x20backends.\n\n\x20See\n\x20https://www.iana.org/assignments/tls-exten\
970    siontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids\n\x20fo\
971    r\x20more\x20details\x20on\x20the\x20supported\x20values.\n\n\r\n\x05\
972    \x04\x01\x02\x08\x05\x12\x04\xb4\x01\x02\x08\n\r\n\x05\x04\x01\x02\x08\
973    \x01\x12\x04\xb4\x01\t\x11\n\r\n\x05\x04\x01\x02\x08\x03\x12\x04\xb4\x01\
974    \x14\x15\nI\n\x04\x04\x01\x02\t\x12\x04\xb7\x01\x02>\x1a;\x20The\x20map\
975    \x20between\x20request\x20protocol\x20and\x20the\x20backend\x20address.\
976    \n\n\r\n\x05\x04\x01\x02\t\x06\x12\x04\xb7\x01\x02\x1a\n\r\n\x05\x04\x01\
977    \x02\t\x01\x12\x04\xb7\x01\x1b8\n\r\n\x05\x04\x01\x02\t\x03\x12\x04\xb7\
978    \x01;=b\x06proto3\
979";
980
981static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT;
982
983fn parse_descriptor_proto() -> ::protobuf::descriptor::FileDescriptorProto {
984    ::protobuf::Message::parse_from_bytes(file_descriptor_proto_data).unwrap()
985}
986
987pub fn file_descriptor_proto() -> &'static ::protobuf::descriptor::FileDescriptorProto {
988    file_descriptor_proto_lazy.get(|| {
989        parse_descriptor_proto()
990    })
991}