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