pub struct ConfigState {
    pub clusters: BTreeMap<ClusterId, Cluster>,
    pub backends: BTreeMap<ClusterId, Vec<Backend>>,
    pub http_listeners: BTreeMap<SocketAddr, HttpListenerConfig>,
    pub https_listeners: BTreeMap<SocketAddr, HttpsListenerConfig>,
    pub tcp_listeners: BTreeMap<SocketAddr, 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<SocketAddr, HttpListenerConfig>socket address -> HTTP listener
https_listeners: BTreeMap<SocketAddr, HttpsListenerConfig>socket address -> HTTPS listener
tcp_listeners: BTreeMap<SocketAddr, 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_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
pub fn produce_initial_state(&self) -> InitialState
Sourcepub fn write_initial_state_to_file(
    &self,
    file: &mut File,
) -> Result<usize, StateError>
 
pub fn write_initial_state_to_file( &self, file: &mut File, ) -> Result<usize, StateError>
generate requests necessary to recreate the state, in protobuf, to a temp file
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 more