pingora_core::server

Struct Server

Source
pub struct Server {
    pub configuration: Arc<ServerConf>,
    pub options: Option<Opt>,
    /* private fields */
}
Expand description

The server object

This object represents an entire pingora server process which may have multiple independent services (see crate::services). The server object handles signals, reading configuration, zero downtime upgrade and error reporting.

Fields§

§configuration: Arc<ServerConf>

The parsed server configuration

§options: Option<Opt>

The parser command line options

Implementations§

Source§

impl Server

Source

pub fn new_with_opt_and_conf( raw_opt: impl Into<Option<Opt>>, conf: ServerConf, ) -> Server

Create a new Server, using the Opt and ServerConf values provided

This method is intended for pingora frontends that are NOT using the built-in command line and configuration file parsing, and are instead using their own.

If a configuration file path is provided as part of opt, it will be ignored and a warning will be logged.

Source

pub fn new(opt: impl Into<Option<Opt>>) -> Result<Server>

Create a new Server.

Only one Server needs to be created for a process. A Server can hold multiple independent services.

Command line options can either be passed by parsing the command line arguments via Opt::parse_args(), or be generated by other means.

Source

pub fn add_service(&mut self, service: impl Service + 'static)

Add a service to this server.

A service is anything that implements Service.

Source

pub fn add_services(&mut self, services: Vec<Box<dyn Service>>)

Similar to Self::add_service(), but take a list of services

Source

pub fn bootstrap(&mut self)

Prepare the server to start

When trying to zero downtime upgrade from an older version of the server which is already running, this function will try to get all its listening sockets in order to take them over.

Source

pub fn run_forever(self) -> !

Start the server

This function will block forever until the server needs to quit. So this would be the last function to call for this object.

Note: this function may fork the process for daemonization, so any additional threads created before this function will be lost to any service logic once this function is called.

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