Server

Struct Server 

Source
pub struct Server(/* private fields */);
Expand description

The primary server structure that provides a thread-safe interface to the server’s state.

This struct acts as a public-facing wrapper around an Arc<RwLock<ServerInner>>. It allows multiple parts of the application to safely share and modify the server’s configuration and state across different threads and asynchronous tasks.

Implementations§

Source§

impl Server

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

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

Source

pub async fn new() -> Self

Creates a new Server instance with default settings.

§Returns
  • Self - A new Server instance.
Source

pub async fn from(config: ServerConfig) -> Self

Creates a new Server instance from a configuration.

§Arguments
  • ServerConfig - The server configuration.
§Returns
  • Self - A new Server instance.
Source

pub async fn get_route_matcher(&self) -> RouteMatcher

Gets the route matcher.

§Returns
  • RouteMatcher - The route matcher.
Source

pub async fn handle_hook(&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 async fn config_str<C: ToString>(&self, config_str: C) -> &Self

Sets the server configuration from a string.

§Arguments
  • C: ToString - The configuration.
§Returns
  • &Self - Reference to self for method chaining.
Source

pub async fn config(&self, config: ServerConfig) -> &Self

Sets the server configuration.

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

pub async fn task_panic<S>(&self) -> &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
  • &Self - Reference to self for method chaining.
Source

pub async fn request_error<S>(&self) -> &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
  • &Self - Reference to self for method chaining.
Source

pub async fn route<S>(&self, path: impl ToString) -> &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
  • path - The route path pattern.
§Returns
  • &Self - Reference to self for method chaining.
Source

pub async fn request_middleware<S>(&self) -> &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
  • &Self - Reference to self for method chaining.
Source

pub async fn response_middleware<S>(&self) -> &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
  • &Self - Reference to self for method chaining.
Source

pub fn format_host_port<H: ToString>(host: H, port: u16) -> String

Formats the host and port into a bindable address string.

§Arguments
  • H: ToString - The host address.
  • u16 - The port number.
§Returns
  • String - The formatted address string.
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: &Context, error: &RequestError)

Handles errors that occur while processing HTTP requests.

§Arguments
  • &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.

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

Source§

fn default() -> Server

Returns the “default value” for a type. Read more
Source§

impl Display for Server

Source§

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

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