use crate::request::Request;
use crate::response::Response;
use crate::server::ConnectionInfo;
#[cfg(test)]
mod example;
#[cfg(test)]
mod tests;
pub trait Application {
fn execute(&self, request: &Request, connection: &ConnectionInfo) -> Result<Response, String>;
fn runs_inline(&self, _request: &Request, _connection: &ConnectionInfo) -> bool {
false
}
#[cfg(feature = "http2")]
fn execute_async<'a>(&'a self, _request: &'a Request, _connection: &'a ConnectionInfo) -> Option<AsyncResponse<'a>> {
None
}
fn streams_body(&self, _request: &Request, _connection: &ConnectionInfo) -> bool {
false
}
fn registered_routes(&self) -> Vec<crate::router::RouteInfo> {
Vec::new()
}
fn middleware_names(&self) -> Vec<&'static str> {
Vec::new()
}
}
#[cfg(feature = "http2")]
pub type AsyncResponse<'a> = std::pin::Pin<Box<dyn std::future::Future<Output = Result<Response, String>> + Send + 'a>>;