Skip to main content

OmbracServer

Struct OmbracServer 

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

OmbracServer provides a simple, easy-to-use API for starting and managing the ombrac server using QUIC transport.

This struct hides all transport-specific implementation details and provides a clean interface for external users.

§Example

use ombrac_server::{OmbracServer, ServiceConfig};
use std::sync::Arc;

let config = Arc::new(ServiceConfig {
    secret: "my-secret".to_string(),
    listen: "0.0.0.0:8080".parse()?,
    transport: Default::default(),
    connection: Default::default(),
    logging: Default::default(),
});

let server = OmbracServer::build(config).await?;
// ... use server ...
server.shutdown().await;

Implementations§

Source§

impl OmbracServer

Source

pub async fn build(config: Arc<ServiceConfig>) -> Result<Self>

Builds a new server instance from the configuration.

This method:

  1. Creates a QUIC server from the transport configuration
  2. Sets up connection validation using the secret
  3. Spawns the accept loop in a background task
  4. Returns an OmbracServer handle for lifecycle management
§Arguments
  • config - The service configuration containing transport, connection, and secret settings
§Returns

A configured OmbracServer instance ready to accept connections, or an error if configuration is invalid or server setup fails.

Source

pub fn metrics(&self) -> Metrics

Returns a clone-able handle to runtime metrics for this server.

Callers can snapshot or read individual counters at any time: server.metrics().snapshot().

Source

pub async fn shutdown(self)

Gracefully shuts down the server.

This method will:

  1. Send a shutdown signal to stop accepting new connections
  2. Wait for the accept loop to finish gracefully
  3. Wait for existing connections to close
§Example
server.shutdown().await;
Source

pub async fn shutdown_with_drain(self, drain_timeout: Duration) -> bool

Stops accepting new connections, then waits up to drain_timeout for in-flight streams to close naturally before returning.

Returns true if all streams drained within the timeout, false if the timeout elapsed with active streams still in flight. In the latter case, those streams’ tasks will keep running until their underlying QUIC connection closes (typically via idle timeout) — they are not hard-cancelled by this call.

Use this for rolling restarts where you want existing client requests to complete before the process exits.

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> 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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. 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> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,