Pass the user manager by reference
Serving a request now takes 0 arc clones!
This commit is contained in:
parent
597bc6aa6b
commit
e49b71b6d2
10
src/lib.rs
10
src/lib.rs
|
@ -313,7 +313,7 @@ impl ServerInner {
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn serve_client(
|
async fn serve_client(
|
||||||
&self,
|
&'static self,
|
||||||
#[cfg(feature = "gemini_srv")]
|
#[cfg(feature = "gemini_srv")]
|
||||||
stream: TcpStream,
|
stream: TcpStream,
|
||||||
#[cfg(all(feature = "scgi_srv", not(feature = "gemini_srv")))]
|
#[cfg(all(feature = "scgi_srv", not(feature = "gemini_srv")))]
|
||||||
|
@ -498,7 +498,7 @@ impl ServerInner {
|
||||||
|
|
||||||
#[cfg(feature = "gemini_srv")]
|
#[cfg(feature = "gemini_srv")]
|
||||||
async fn receive_request(
|
async fn receive_request(
|
||||||
&self,
|
&'static self,
|
||||||
stream: &mut (impl AsyncBufRead + Unpin + Send),
|
stream: &mut (impl AsyncBufRead + Unpin + Send),
|
||||||
) -> Result<Request> {
|
) -> Result<Request> {
|
||||||
const HEADER_LIMIT: usize = REQUEST_URI_MAX_LEN + "\r\n".len();
|
const HEADER_LIMIT: usize = REQUEST_URI_MAX_LEN + "\r\n".len();
|
||||||
|
@ -526,13 +526,13 @@ impl ServerInner {
|
||||||
Request::new(
|
Request::new(
|
||||||
uri,
|
uri,
|
||||||
#[cfg(feature="user_management")]
|
#[cfg(feature="user_management")]
|
||||||
self.manager.clone(),
|
&self.manager,
|
||||||
).context("Failed to create request from URI")
|
).context("Failed to create request from URI")
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "scgi_srv")]
|
#[cfg(feature = "scgi_srv")]
|
||||||
async fn receive_request(
|
async fn receive_request(
|
||||||
&self,
|
&'static self,
|
||||||
stream: &mut (impl AsyncBufRead + Unpin),
|
stream: &mut (impl AsyncBufRead + Unpin),
|
||||||
) -> Result<Request> {
|
) -> Result<Request> {
|
||||||
let mut buff = Vec::with_capacity(4);
|
let mut buff = Vec::with_capacity(4);
|
||||||
|
@ -600,7 +600,7 @@ impl ServerInner {
|
||||||
Request::new(
|
Request::new(
|
||||||
headers,
|
headers,
|
||||||
#[cfg(feature = "user_management")]
|
#[cfg(feature = "user_management")]
|
||||||
self.manager.clone(),
|
&self.manager,
|
||||||
)?
|
)?
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,7 +39,7 @@ pub struct Request {
|
||||||
certificate: Option<[u8; 32]>,
|
certificate: Option<[u8; 32]>,
|
||||||
trailing_segments: Option<Vec<String>>,
|
trailing_segments: Option<Vec<String>>,
|
||||||
#[cfg(feature="user_management")]
|
#[cfg(feature="user_management")]
|
||||||
manager: UserManager,
|
manager: &'static UserManager,
|
||||||
#[cfg(feature = "scgi_srv")]
|
#[cfg(feature = "scgi_srv")]
|
||||||
headers: HashMap<String, String>,
|
headers: HashMap<String, String>,
|
||||||
#[cfg(feature = "scgi_srv")]
|
#[cfg(feature = "scgi_srv")]
|
||||||
|
@ -80,7 +80,7 @@ impl Request {
|
||||||
#[cfg(feature = "scgi_srv")]
|
#[cfg(feature = "scgi_srv")]
|
||||||
headers: HashMap<String, String>,
|
headers: HashMap<String, String>,
|
||||||
#[cfg(feature="user_management")]
|
#[cfg(feature="user_management")]
|
||||||
manager: UserManager,
|
manager: &'static UserManager,
|
||||||
) -> Result<Self> {
|
) -> Result<Self> {
|
||||||
#[cfg(feature = "scgi_srv")]
|
#[cfg(feature = "scgi_srv")]
|
||||||
#[allow(clippy::or_fun_call)] // Lay off it's a macro
|
#[allow(clippy::or_fun_call)] // Lay off it's a macro
|
||||||
|
@ -267,8 +267,8 @@ impl Request {
|
||||||
/// Expose the server's UserManager
|
/// Expose the server's UserManager
|
||||||
///
|
///
|
||||||
/// Can be used to query users, or directly access the database
|
/// Can be used to query users, or directly access the database
|
||||||
pub fn user_manager(&self) -> &UserManager {
|
pub fn user_manager(&self) -> &'static UserManager {
|
||||||
&self.manager
|
self.manager
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Attempt to rewrite an absolute URL against the base path of the SCGI script
|
/// Attempt to rewrite an absolute URL against the base path of the SCGI script
|
||||||
|
|
Loading…
Reference in a new issue