Struct sozu_command_lib::state::ConfigState
source · pub struct ConfigState {
pub clusters: BTreeMap<ClusterId, Cluster>,
pub backends: BTreeMap<ClusterId, Vec<Backend>>,
pub http_listeners: BTreeMap<String, HttpListenerConfig>,
pub https_listeners: BTreeMap<String, HttpsListenerConfig>,
pub tcp_listeners: BTreeMap<String, TcpListenerConfig>,
pub http_fronts: BTreeMap<String, HttpFrontend>,
pub https_fronts: BTreeMap<String, HttpFrontend>,
pub tcp_fronts: HashMap<ClusterId, Vec<TcpFrontend>>,
pub certificates: HashMap<SocketAddr, HashMap<Fingerprint, CertificateAndKey>>,
pub request_counts: BTreeMap<String, i32>,
}
Expand description
The ConfigState
represents the state of Sōzu’s business, which is to forward traffic
from frontends to backends. Hence, it contains all details about:
- listeners (socket addresses, for TCP and HTTP connections)
- frontends (bind to a listener)
- backends (to forward connections to)
- clusters (routing rules from frontends to backends)
- TLS certificates
Fields§
§clusters: BTreeMap<ClusterId, Cluster>
§backends: BTreeMap<ClusterId, Vec<Backend>>
§http_listeners: BTreeMap<String, HttpListenerConfig>
socket address -> HTTP listener
https_listeners: BTreeMap<String, HttpsListenerConfig>
socket address -> HTTPS listener
tcp_listeners: BTreeMap<String, TcpListenerConfig>
socket address -> TCP listener
http_fronts: BTreeMap<String, HttpFrontend>
HTTP frontends, indexed by a summary of each front’s address;hostname;path, for uniqueness.
For example: "0.0.0.0:8080;lolcatho.st;P/api"
https_fronts: BTreeMap<String, HttpFrontend>
indexed by (address, hostname, path)
tcp_fronts: HashMap<ClusterId, Vec<TcpFrontend>>
§certificates: HashMap<SocketAddr, HashMap<Fingerprint, CertificateAndKey>>
§request_counts: BTreeMap<String, i32>
A census of requests that were received. Name of the request -> number of occurences
Implementations§
source§impl ConfigState
impl ConfigState
pub fn new() -> Self
pub fn dispatch(&mut self, request: &Request) -> Result<(), StateError>
pub fn get_request_counts(&self) -> RequestCounts
pub fn generate_requests(&self) -> Vec<Request>
pub fn generate_activate_requests(&self) -> Vec<Request>
pub fn diff(&self, other: &ConfigState) -> Vec<Request>
pub fn hash_state(&self) -> BTreeMap<ClusterId, u64>
sourcepub fn cluster_state(&self, cluster_id: &str) -> Option<ClusterInformation>
pub fn cluster_state(&self, cluster_id: &str) -> Option<ClusterInformation>
Gives details about a given cluster.
Types like HttpFrontend
are converted into protobuf ones, like RequestHttpFrontend
pub fn count_backends(&self) -> usize
pub fn count_frontends(&self) -> usize
pub fn get_cluster_ids_by_domain( &self, hostname: String, path: Option<String> ) -> HashSet<ClusterId>
pub fn get_certificates( &self, filters: QueryCertificatesFilters ) -> BTreeMap<String, CertificateAndKey>
pub fn list_frontends(&self, filters: FrontendFilters) -> ListedFrontends
pub fn list_listeners(&self) -> ListenersList
sourcepub fn write_requests_to_file(
&self,
file: &mut File
) -> Result<usize, StateError>
pub fn write_requests_to_file( &self, file: &mut File ) -> Result<usize, StateError>
generate requests necessary to recreate the state, write them in a JSON form in a file, separated by \n\0, returns the number of written requests
Trait Implementations§
source§impl Clone for ConfigState
impl Clone for ConfigState
source§fn clone(&self) -> ConfigState
fn clone(&self) -> ConfigState
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for ConfigState
impl Debug for ConfigState
source§impl Default for ConfigState
impl Default for ConfigState
source§fn default() -> ConfigState
fn default() -> ConfigState
source§impl<'de> Deserialize<'de> for ConfigState
impl<'de> Deserialize<'de> for ConfigState
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
source§impl PartialEq for ConfigState
impl PartialEq for ConfigState
source§fn eq(&self, other: &ConfigState) -> bool
fn eq(&self, other: &ConfigState) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl Serialize for ConfigState
impl Serialize for ConfigState
impl Eq for ConfigState
impl StructuralEq for ConfigState
impl StructuralPartialEq for ConfigState
Auto Trait Implementations§
impl RefUnwindSafe for ConfigState
impl Send for ConfigState
impl Sync for ConfigState
impl Unpin for ConfigState
impl UnwindSafe for ConfigState
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.