refactor: make some config parameters in globals belong to other struct
This commit is contained in:
		
					parent
					
						
							
								80e10d5ccd
							
						
					
				
			
			
				commit
				
					
						f8d37f7846
					
				
			
		
					 8 changed files with 109 additions and 101 deletions
				
			
		|  | @ -1,4 +1,4 @@ | |||
| use crate::backend::Backends; | ||||
| use crate::{backend::Backends, constants::*}; | ||||
| use std::net::SocketAddr; | ||||
| use std::sync::{ | ||||
|   atomic::{AtomicUsize, Ordering}, | ||||
|  | @ -9,6 +9,21 @@ use tokio::time::Duration; | |||
| /// Global object containing proxy configurations and shared object like counters.
 | ||||
| /// But note that in Globals, we do not have Mutex and RwLock. It is indeed, the context shared among async tasks.
 | ||||
| pub struct Globals { | ||||
|   /// Configuration parameters for proxy transport and request handlers
 | ||||
|   pub proxy_config: ProxyConfig, | ||||
| 
 | ||||
|   /// Shared context - Backend application objects to which http request handler forward incoming requests
 | ||||
|   pub backends: Backends, | ||||
| 
 | ||||
|   /// Shared context - Counter for serving requests
 | ||||
|   pub request_count: RequestCount, | ||||
| 
 | ||||
|   /// Shared context - Async task runtime handler
 | ||||
|   pub runtime_handle: tokio::runtime::Handle, | ||||
| } | ||||
| 
 | ||||
| /// Configuration parameters for proxy transport and request handlers
 | ||||
| pub struct ProxyConfig { | ||||
|   pub listen_sockets: Vec<SocketAddr>, // when instantiate server
 | ||||
|   pub http_port: Option<u16>,          // when instantiate server
 | ||||
|   pub https_port: Option<u16>,         // when instantiate server
 | ||||
|  | @ -22,7 +37,6 @@ pub struct Globals { | |||
| 
 | ||||
|   // experimentals
 | ||||
|   pub sni_consistency: bool, // Handler
 | ||||
| 
 | ||||
|   // All need to make packet acceptor
 | ||||
|   #[cfg(feature = "http3")] | ||||
|   pub http3: bool, | ||||
|  | @ -38,19 +52,42 @@ pub struct Globals { | |||
|   pub h3_max_concurrent_connections: u32, | ||||
|   #[cfg(feature = "http3")] | ||||
|   pub h3_max_idle_timeout: Option<quinn::IdleTimeout>, | ||||
| 
 | ||||
|   // Shared context
 | ||||
|   // Backend application objects to which http request handler forward incoming requests
 | ||||
|   pub backends: Backends, | ||||
|   // Counter for serving requests
 | ||||
|   pub request_count: RequestCount, | ||||
|   // Async task runtime handler
 | ||||
|   pub runtime_handle: tokio::runtime::Handle, | ||||
| } | ||||
| 
 | ||||
| // // TODO: Implement default for default values
 | ||||
| // #[derive(Debug, Clone)]
 | ||||
| // pub struct ProxyConfig {}
 | ||||
| impl Default for ProxyConfig { | ||||
|   fn default() -> Self { | ||||
|     Self { | ||||
|       listen_sockets: Vec::new(), | ||||
|       http_port: None, | ||||
|       https_port: None, | ||||
| 
 | ||||
|       // TODO: Reconsider each timeout values
 | ||||
|       proxy_timeout: Duration::from_secs(PROXY_TIMEOUT_SEC), | ||||
|       upstream_timeout: Duration::from_secs(UPSTREAM_TIMEOUT_SEC), | ||||
| 
 | ||||
|       max_clients: MAX_CLIENTS, | ||||
|       max_concurrent_streams: MAX_CONCURRENT_STREAMS, | ||||
|       keepalive: true, | ||||
| 
 | ||||
|       sni_consistency: true, | ||||
| 
 | ||||
|       #[cfg(feature = "http3")] | ||||
|       http3: false, | ||||
|       #[cfg(feature = "http3")] | ||||
|       h3_alt_svc_max_age: H3::ALT_SVC_MAX_AGE, | ||||
|       #[cfg(feature = "http3")] | ||||
|       h3_request_max_body_size: H3::REQUEST_MAX_BODY_SIZE, | ||||
|       #[cfg(feature = "http3")] | ||||
|       h3_max_concurrent_connections: H3::MAX_CONCURRENT_CONNECTIONS, | ||||
|       #[cfg(feature = "http3")] | ||||
|       h3_max_concurrent_bidistream: H3::MAX_CONCURRENT_BIDISTREAM.into(), | ||||
|       #[cfg(feature = "http3")] | ||||
|       h3_max_concurrent_unistream: H3::MAX_CONCURRENT_UNISTREAM.into(), | ||||
|       #[cfg(feature = "http3")] | ||||
|       h3_max_idle_timeout: Some(quinn::IdleTimeout::try_from(Duration::from_secs(H3::MAX_IDLE_TIMEOUT)).unwrap()), | ||||
|     } | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| #[derive(Debug, Clone, Default)] | ||||
| /// Counter for serving requests
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Jun Kurihara
				Jun Kurihara