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 Self
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 Self

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, request_config: RequestConfig) -> &mut Self

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 Self
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.

§Type Parameters
  • ServerHook - The task panic handler type that implements ServerHook.
§Returns
  • &mut Self - Reference to self for method chaining.
Source

pub fn request_error<S>(&mut self) -> &mut Self
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.

§Type Parameters
  • ServerHook - The request error handler type that implements ServerHook.
§Returns
  • &mut Self - Reference to self for method chaining.
Source

pub fn route<S>(&mut self, path: impl AsRef<str>) -> &mut Self
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.

§Type Parameters
  • ServerHook - The route hook type that implements ServerHook.
§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 Self
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.

§Type Parameters
  • ServerHook - The middleware type that implements ServerHook.
§Returns
  • &mut Self - Reference to self for method chaining.
Source

pub fn response_middleware<S>(&mut self) -> &mut Self
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.

§Type Parameters
  • ServerHook - The middleware type that implements ServerHook.
§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
  • H: 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<()>

Flushes the standard output stream.

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

pub fn flush_stdout()

Flushes the standard error stream.

§Panics

This function will panic if the flush operation fails.

Source

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

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<()>

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, ctx: &mut Context, error: &RequestError, )

Handles errors that occur while processing HTTP requests.

§Arguments
  • &mut Context - The request context.
  • &RequestError - The error that occurred.
Source

pub async fn run(&self) -> Result<ServerControlHook, 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§

impl Server

Source

pub fn new( server_config: ServerConfig, request_config: RequestConfig, route_matcher: RouteMatcher, request_error: ServerHookList, task_panic: ServerHookList, request_middleware: ServerHookList, response_middleware: ServerHookList, ) -> Self

Trait Implementations§

Source§

impl Clone for Server

Source§

fn clone(&self) -> Server

Returns a duplicate of the value. Read more
1.0.0 · 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

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

impl Default for Server

Provides a default implementation for Server.

Source§

fn default() -> Self

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

Formats the value using the given formatter. Read more
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) -> Self

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<Server> for Context

Implementation of From trait for Context from Server.

Source§

fn from(server: Server) -> Self

Converts a Server into a Context with default request and response.

§Arguments
  • Server - The server to convert.
§Returns
  • Context - The newly created context instance.
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) -> Self

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 PartialEq for Server

Implements the PartialEq trait for Server.

This allows for comparing two Server instances for equality.

Source§

fn eq(&self, other: &Self) -> 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 · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for Server

Implements the Eq trait for Server.

This indicates that Server has a total equality relation.

Auto Trait Implementations§

§

impl Freeze for Server

§

impl !RefUnwindSafe for Server

§

impl Send for Server

§

impl Sync for Server

§

impl Unpin for Server

§

impl !UnwindSafe for Server

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> 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 = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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> ErasedDestructor for T
where T: 'static,