1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
// This file is @generated by prost-build.
/// Configuration for the Dynamic Modules bootstrap extension. This extension allows loading shared
/// object files that can be loaded via `dlopen` to extend Envoy's bootstrap behavior.
///
/// A module can be loaded by multiple bootstrap extensions; the module is loaded only once and shared
/// across multiple extensions.
///
/// Bootstrap extensions run on the main thread and are initialized when Envoy starts. They can:
///
/// * Perform initialization tasks when the server is initialized.
/// * Perform per-worker thread initialization when worker threads start.
/// * Access server-level resources like the cluster manager and dispatcher.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct DynamicModuleBootstrapExtension {
/// Specifies the shared-object level configuration.
#[prost(message, optional, tag = "1")]
pub dynamic_module_config: ::core::option::Option<
super::super::super::dynamic_modules::v3::DynamicModuleConfig,
>,
/// The name for this extension configuration.
///
/// This can be used to distinguish between different extension implementations inside a dynamic
/// module. For example, a module can have completely different extension implementations. When Envoy
/// receives this configuration, it passes the `extension_name` to the dynamic module's bootstrap
/// extension config init function together with the `extension_config`. That way a module can
/// decide which in-module extension implementation to use based on the name at load time.
///
/// If not specified, defaults to an empty string.
#[prost(string, tag = "2")]
pub extension_name: ::prost::alloc::string::String,
/// The configuration for the extension chosen by `extension_name`.
///
/// This is passed to the module's bootstrap extension initialization function. Together with the
/// `extension_name`, the module can decide which in-module extension implementation to use and
/// fine-tune the behavior of the extension.
///
/// For example, if a module has two extension implementations, one for configuration loading and
/// one for metric initialization, `extension_name` is used to choose the implementation. The
/// `extension_config` can be used to configure the specific behavior of each implementation.
///
/// `google.protobuf.Struct` is serialized as JSON before passing it to the module.
/// `google.protobuf.BytesValue` and `google.protobuf.StringValue` are passed directly
/// without the wrapper.
///
/// .. code-block:: yaml
///
/// # Passing a string value
///
/// extension_config:
/// "@type": "type.googleapis.com/google.protobuf.StringValue"
/// value: hello
///
/// # Passing raw bytes
///
/// extension_config:
/// "@type": "type.googleapis.com/google.protobuf.BytesValue"
/// value: aGVsbG8= # echo -n "hello" | base64
#[prost(message, optional, tag = "3")]
pub extension_config: ::core::option::Option<
super::super::super::super::super::google::protobuf::Any,
>,
}
impl ::prost::Name for DynamicModuleBootstrapExtension {
const NAME: &'static str = "DynamicModuleBootstrapExtension";
const PACKAGE: &'static str = "envoy.extensions.bootstrap.dynamic_modules.v3";
fn full_name() -> ::prost::alloc::string::String {
"envoy.extensions.bootstrap.dynamic_modules.v3.DynamicModuleBootstrapExtension"
.into()
}
fn type_url() -> ::prost::alloc::string::String {
"type.googleapis.com/envoy.extensions.bootstrap.dynamic_modules.v3.DynamicModuleBootstrapExtension"
.into()
}
}