Skip to main content

Server

Struct Server 

Source
pub struct Server { /* private fields */ }
Expand description

Represents the internal, mutable state of the web server.

This struct consolidates all the core components required for the server to operate, including configuration, routing, middleware, and various hooks for extending functionality.

Implementations§

Source§

impl Server

Represents the server, providing methods to configure and run it.

This struct wraps the Server configuration and routing logic, offering a high-level API for setting up the HTTP and WebSocket server.

Source

pub fn handle_hook(&mut self, hook: HookType)

Registers a hook into the server’s processing pipeline.

This function dispatches the provided HookType to the appropriate internal hook collection based on its variant. The hook will be executed at the corresponding stage of request processing according to its type:

  • Panic - Added to panic handlers for error recovery
  • RequestError - Added to request error handlers
  • RequestMiddleware - Added to pre-route middleware chain
  • Route - Registered as a route handler for the specified path
  • ResponseMiddleware - Added to post-route middleware chain
§Arguments
  • HookType - The HookType instance containing the hook configuration and factory.
Source

pub fn config_from_json<C>(&mut self, json: C) -> &mut Server
where C: AsRef<str>,

Sets the server configuration from a JSON string.

§Arguments
  • AsRef<str> - The configuration.
§Returns
  • &mut Self - Reference to self for method chaining.
Source

pub fn server_config(&mut self, config: ServerConfig) -> &mut Server

Sets the server configuration.

§Arguments
  • ServerConfig - The server configuration.
§Returns
  • &mut Self - Reference to self for method chaining.
Source

pub fn request_config(&mut self, config: RequestConfig) -> &mut Server

Sets the HTTP request config.

§Arguments
  • RequestConfig- The HTTP request config to set.
§Returns
  • &mut Self - Reference to self for method chaining.
Source

pub fn task_panic<S>(&mut self) -> &mut Server
where S: ServerHook,

Registers a task panic handler to the processing pipeline.

This method allows registering task panic handlers that implement the ServerHook trait, which will be executed when a panic occurs during request processing.

§Returns
  • &mut Self - Reference to self for method chaining.
Source

pub fn request_error<S>(&mut self) -> &mut Server
where S: ServerHook,

Registers a request error handler to the processing pipeline.

This method allows registering request error handlers that implement the ServerHook trait, which will be executed when a request error occurs during HTTP request processing.

§Returns
  • &mut Self - Reference to self for method chaining.
Source

pub fn route<S>(&mut self, path: impl AsRef<str>) -> &mut Server
where S: ServerHook,

Registers a route hook for a specific path.

This method allows registering route handlers that implement the ServerHook trait, providing type safety and better code organization.

§Arguments
  • AsRef<str> - The route path pattern.
§Returns
  • &mut Self - Reference to self for method chaining.
Source

pub fn request_middleware<S>(&mut self) -> &mut Server
where S: ServerHook,

Registers request middleware to the processing pipeline.

This method allows registering middleware that implements the ServerHook trait, which will be executed before route handlers for every incoming request.

§Returns
  • &mut Self - Reference to self for method chaining.
Source

pub fn response_middleware<S>(&mut self) -> &mut Server
where S: ServerHook,

Registers response middleware to the processing pipeline.

This method allows registering middleware that implements the ServerHook trait, which will be executed after route handlers for every outgoing response.

§Returns
  • &mut Self - Reference to self for method chaining.
Source

pub fn format_bind_address<H>(host: H, port: u16) -> String
where H: AsRef<str>,

Format the host and port into a bindable address string.

§Arguments
  • AsRef<str> - The host address.
  • u16 - The port number.
§Returns
  • String - The formatted address string in the form “host:port”.
Source

pub fn try_flush_stdout() -> Result<(), Error>

Flushes the standard output stream.

§Returns
  • io::Result<()> - The result of the flush operation.
Source

pub fn flush_stdout()

Flushes the standard output stream.

§Panics

This function will panic if the flush operation fails.

Source

pub fn try_flush_stderr() -> Result<(), Error>

Flushes the standard error stream.

§Returns
  • io::Result<()> - The result of the flush operation.
Source

pub fn flush_stderr()

Flushes the standard error stream.

§Panics

This function will panic if the flush operation fails.

Source

pub fn try_flush_stdout_and_stderr() -> Result<(), Error>

Flushes both the standard output and error streams.

§Returns
  • io::Result<()> - The result of the flush operation.
Source

pub fn flush_stdout_and_stderr()

Flushes both the standard output and error streams.

§Panics

This function will panic if either flush operation fails.

Source

pub async fn handle_request_error( &self, stream: &mut Stream, ctx: &mut Context, error: &RequestError, )

Handles errors that occur while processing HTTP requests.

§Arguments
  • &mut Stream - The Stream for the current request.
  • &mut Context - The Context for the current request.
  • &RequestError - The error that occurred.
Source

pub async fn run(&self) -> Result<ServerControlHook, Box<ServerError>>

Starts the server, binds to the configured address, and begins listening for connections.

This is the main entry point to launch the server. It will initialize the panic hook, create a TCP listener, and then enter the connection acceptance loop in a background task.

§Returns

Returns a Result containing a shutdown function on success. Calling this function will shut down the server by aborting its main task. Returns an error if the server fails to start.

Source§

impl Server

Source

pub fn get_server_config(&self) -> &ServerConfig

Source

pub fn get_mut_server_config(&mut self) -> &mut ServerConfig

Source

pub fn set_server_config(&mut self, val: ServerConfig) -> &mut Server

Source

pub fn get_request_config(&self) -> &RequestConfig

Source

pub fn get_mut_request_config(&mut self) -> &mut RequestConfig

Source

pub fn set_request_config(&mut self, val: RequestConfig) -> &mut Server

Source

pub fn get_route_matcher(&self) -> &RouteMatcher

Source

pub fn get_mut_route_matcher(&mut self) -> &mut RouteMatcher

Source

pub fn get_request_error( &self, ) -> &Vec<Arc<dyn Fn(&mut Stream, &mut Context) -> Pin<Box<dyn Future<Output = Status> + Send>> + Send + Sync>>

Source

pub fn get_mut_request_error( &mut self, ) -> &mut Vec<Arc<dyn Fn(&mut Stream, &mut Context) -> Pin<Box<dyn Future<Output = Status> + Send>> + Send + Sync>>

Source

pub fn get_task_panic( &self, ) -> &Vec<Arc<dyn Fn(&mut Stream, &mut Context) -> Pin<Box<dyn Future<Output = Status> + Send>> + Send + Sync>>

Source

pub fn get_mut_task_panic( &mut self, ) -> &mut Vec<Arc<dyn Fn(&mut Stream, &mut Context) -> Pin<Box<dyn Future<Output = Status> + Send>> + Send + Sync>>

Source

pub fn get_request_middleware( &self, ) -> &Vec<Arc<dyn Fn(&mut Stream, &mut Context) -> Pin<Box<dyn Future<Output = Status> + Send>> + Send + Sync>>

Source

pub fn get_mut_request_middleware( &mut self, ) -> &mut Vec<Arc<dyn Fn(&mut Stream, &mut Context) -> Pin<Box<dyn Future<Output = Status> + Send>> + Send + Sync>>

Source

pub fn get_response_middleware( &self, ) -> &Vec<Arc<dyn Fn(&mut Stream, &mut Context) -> Pin<Box<dyn Future<Output = Status> + Send>> + Send + Sync>>

Source

pub fn get_mut_response_middleware( &mut self, ) -> &mut Vec<Arc<dyn Fn(&mut Stream, &mut Context) -> Pin<Box<dyn Future<Output = Status> + Send>> + Send + Sync>>

Trait Implementations§

Source§

impl AsMut<Server> for Server

Implementation of AsMut trait for Server.

Source§

fn as_mut(&mut self) -> &mut Server

Converts &mut Server to &mut Server via memory address conversion.

§Returns
  • &mut Server - A mutable reference to the Server instance.
Source§

impl AsRef<Server> for Server

Implementation of AsRef trait for Server.

Source§

fn as_ref(&self) -> &Server

Converts &Server to &Server via memory address conversion.

§Returns
  • &Server - A reference to the Server instance.
Source§

impl Clone for Server

Source§

fn clone(&self) -> Server

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Server

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Default for Server

Provides a default implementation for Server.

Source§

fn default() -> Server

Creates a new Server instance with default values.

§Returns
  • Self - A new instance with default configuration.
Source§

impl Display for Server

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Eq for Server

Implements the Eq trait for Server.

This indicates that Server has a total equality relation.

Source§

impl From<RequestConfig> for Server

Converts a RequestConfig into a Server instance.

This allows creating a Server directly from its request configuration, using default values for other fields.

Source§

fn from(request_config: RequestConfig) -> Server

Creates a new Server instance from the given RequestConfig.

§Arguments
  • RequestConfig - The request configuration to use.
§Returns
  • Self - A new Server instance with the provided request configuration.
Source§

impl From<ServerConfig> for Server

Converts a ServerConfig into a Server instance.

This allows creating a Server directly from its configuration, using default values for other fields.

Source§

fn from(server_config: ServerConfig) -> Server

Creates a new Server instance from the given ServerConfig.

§Arguments
  • ServerConfig - The server configuration to use.
§Returns
  • Self - A new Server instance with the provided configuration.
Source§

impl From<usize> for Server

Implementation of From trait for converting usize address into Server.

Source§

fn from(address: usize) -> Server

Converts a memory address into an owned Server by cloning from the reference.

§Arguments
  • usize - The memory address of the Server instance.
§Returns
  • Server - A cloned Server instance from the given address.
Source§

impl From<usize> for &'static Server

Implementation of From trait for converting usize address into &Server.

Source§

fn from(address: usize) -> &'static Server

Converts a memory address into a reference to Server.

§Arguments
  • usize - The memory address of the Server instance.
§Returns
  • &'static Server - A reference to the Server at the given address.
§Safety
  • The address is guaranteed to be a valid Server instance that was previously converted from a reference and is managed by the runtime.
Source§

impl From<usize> for &'static mut Server

Implementation of From trait for converting usize address into &mut Server.

Source§

fn from(address: usize) -> &'static mut Server

Converts a memory address into a mutable reference to Server.

§Arguments
  • usize - The memory address of the Server instance.
§Returns
  • &'static mut Server - A mutable reference to the Server at the given address.
§Safety
  • The address is guaranteed to be a valid Server instance that was previously converted from a reference and is managed by the runtime.
Source§

impl Lifetime for Server

Implementation of Lifetime trait for Server.

Source§

unsafe fn leak(&self) -> &'static Server

Converts a reference to the server into a 'static reference.

§Returns
  • &'static Self: A reference to the server with a 'static lifetime.
§Safety
  • The address is guaranteed to be a valid Server instance that was previously converted from a reference and is managed by the runtime.
Source§

unsafe fn leak_mut(&self) -> &'static mut Server

Converts a reference to the server into a 'static mutable reference.

§Returns
  • &'static mut Self: A mutable reference to the server with a 'static lifetime.
§Safety
  • The address is guaranteed to be a valid Server instance that was previously converted from a reference and is managed by the runtime.
Source§

impl PartialEq for Server

Implements the PartialEq trait for Server.

This allows for comparing two Server instances for equality.

Source§

fn eq(&self, other: &Server) -> bool

Checks if two Server instances are equal.

§Arguments
  • &Self- The other Server instance to compare against.
§Returns
  • bool- true if the instances are equal, false otherwise.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> AnySend for T
where T: Any + Send,

Source§

impl<T> AnySendClone for T
where T: Any + Send + Clone,

Source§

impl<T> AnySendSync for T
where T: Any + Send + Sync,

Source§

impl<T> AnySendSyncClone for T
where T: Any + Send + Sync + Clone,

Source§

impl<T> AnySync for T
where T: Any + Sync,

Source§

impl<T> AnySyncClone for T
where T: Any + Sync + Clone,

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.