pub struct AlternateProtocolsCacheOptions {
pub name: String,
pub max_entries: Option<UInt32Value>,
pub key_value_store_config: Option<TypedExtensionConfig>,
pub prepopulated_entries: Vec<AlternateProtocolsCacheEntry>,
pub canonical_suffixes: Vec<String>,
}
Expand description
Configures the alternate protocols cache which tracks alternate protocols that can be used to make an HTTP connection to an origin server. See https://tools.ietf.org/html/rfc7838 for HTTP Alternative Services and https://datatracker.ietf.org/doc/html/draft-ietf-dnsop-svcb-https-04 for the “HTTPS” DNS resource record. [#next-free-field: 6]
Fields§
§name: String
The name of the cache. Multiple named caches allow independent alternate protocols cache configurations to operate within a single Envoy process using different configurations. All alternate protocols cache options with the same name must be equal in all fields when referenced from different configuration components. Configuration will fail to load if this is not the case.
max_entries: Option<UInt32Value>
The maximum number of entries that the cache will hold. If not specified defaults to 1024.
.. note:
The implementation is approximate and enforced independently on each worker thread, thus it is possible for the maximum entries in the cache to go slightly above the configured value depending on timing. This is similar to how other circuit breakers work.
key_value_store_config: Option<TypedExtensionConfig>
Allows configuring a persistent
:ref:key value store <envoy_v3_api_msg_config.common.key_value.v3.KeyValueStoreConfig>
to flush
alternate protocols entries to disk.
This function is currently only supported if concurrency is 1
Cached entries will take precedence over pre-populated entries below.
prepopulated_entries: Vec<AlternateProtocolsCacheEntry>
Allows pre-populating the cache with entries, as described above.
canonical_suffixes: Vec<String>
Optional list of hostnames suffixes for which Alt-Svc entries can be shared. For example, if
this list contained the value .c.example.com
, then an Alt-Svc entry for foo.c.example.com
could be shared with bar.c.example.com
but would not be shared with baz.example.com
. On
the other hand, if the list contained the value .example.com
then all three hosts could share
Alt-Svc entries. Each entry must start with .
. If a hostname matches multiple suffixes, the
first listed suffix will be used.
Since lookup in this list is O(n), it is recommended that the number of suffixes be limited. [#not-implemented-hide:]
Trait Implementations§
Source§impl Clone for AlternateProtocolsCacheOptions
impl Clone for AlternateProtocolsCacheOptions
Source§fn clone(&self) -> AlternateProtocolsCacheOptions
fn clone(&self) -> AlternateProtocolsCacheOptions
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Message for AlternateProtocolsCacheOptions
impl Message for AlternateProtocolsCacheOptions
Source§fn encoded_len(&self) -> usize
fn encoded_len(&self) -> usize
Source§fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
Source§fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
Source§fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Source§fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Source§fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self
. Read moreSource§fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self
.Source§impl Name for AlternateProtocolsCacheOptions
impl Name for AlternateProtocolsCacheOptions
Source§const NAME: &'static str = "AlternateProtocolsCacheOptions"
const NAME: &'static str = "AlternateProtocolsCacheOptions"
Message
.
This name is the same as it appears in the source .proto file, e.g. FooBar
.Source§const PACKAGE: &'static str = "envoy.config.core.v3"
const PACKAGE: &'static str = "envoy.config.core.v3"
.
, e.g. google.protobuf
.Source§fn full_name() -> String
fn full_name() -> String
Message
.
It’s prefixed with the package name and names of any parent messages,
e.g. google.rpc.BadRequest.FieldViolation
.
By default, this is the package name followed by the message name.
Fully-qualified names must be unique within a domain of Type URLs.Source§impl PartialEq for AlternateProtocolsCacheOptions
impl PartialEq for AlternateProtocolsCacheOptions
Source§fn eq(&self, other: &AlternateProtocolsCacheOptions) -> bool
fn eq(&self, other: &AlternateProtocolsCacheOptions) -> bool
self
and other
values to be equal, and is used by ==
.impl StructuralPartialEq for AlternateProtocolsCacheOptions
Auto Trait Implementations§
impl Freeze for AlternateProtocolsCacheOptions
impl RefUnwindSafe for AlternateProtocolsCacheOptions
impl Send for AlternateProtocolsCacheOptions
impl Sync for AlternateProtocolsCacheOptions
impl Unpin for AlternateProtocolsCacheOptions
impl UnwindSafe for AlternateProtocolsCacheOptions
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request