pub trait Global:
Send
+ Sync
+ 'static {
type Config: ConfigParser + Send + 'static;
// Required method
fn init(
config: Self::Config,
) -> impl Future<Output = Result<Arc<Self>>> + Send;
// Provided methods
fn pre_init() -> Result<()> { ... }
fn tokio_runtime() -> Runtime { ... }
fn on_services_start(
self: &Arc<Self>,
) -> impl Future<Output = Result<()>> + Send { ... }
fn on_service_exit(
self: &Arc<Self>,
name: &'static str,
result: Result<()>,
) -> impl Future<Output = Result<()>> + Send { ... }
fn on_exit(
self: &Arc<Self>,
result: Result<()>,
) -> impl Future<Output = Result<()>> + Send { ... }
}
Expand description
This trait is implemented for the global type of your application.
It is intended to be used to store any global state of your application.
When using the main!
macro, one instance of this type will
be made available to all services.
Using this trait requires a config type implementing ConfigParser
.
If your application does not have a config, consider using the
GlobalWithoutConfig
trait.
§See Also
Required Associated Types§
Sourcetype Config: ConfigParser + Send + 'static
type Config: ConfigParser + Send + 'static
The config type for the global.
This type is expected to implement ConfigParser
.
Required Methods§
Provided Methods§
Sourcefn pre_init() -> Result<()>
fn pre_init() -> Result<()>
Pre-initialization.
Called before initializing the tokio runtime and loading the config.
Returning an error from this function will cause the process to
immediately exit without calling on_exit
first.
Sourcefn tokio_runtime() -> Runtime
fn tokio_runtime() -> Runtime
Builds the tokio runtime for the process.
If not overridden, a default runtime builder is used to build the runtime. It uses the following environment variables:
-
TOKIO_WORKER_THREADS
: Number of worker threads to use. If 1, a current thread runtime is used.See [
tokio::runtime::Builder::worker_threads
] for details. -
TOKIO_MAX_BLOCKING_THREADS
: Maximum number of blocking threads.See [
tokio::runtime::Builder::max_blocking_threads
] for details. -
TOKIO_DISABLE_TIME
: Iftrue
disables time.See [
tokio::runtime::Builder::enable_time
] for details. -
TOKIO_DISABLE_IO
: Iftrue
disables IO.See [
tokio::runtime::Builder::enable_io
] for details. -
TOKIO_THREAD_STACK_SIZE
: Thread stack size.See [
tokio::runtime::Builder::thread_stack_size
] for details. -
TOKIO_GLOBAL_QUEUE_INTERVAL
: Global queue interval.See [
tokio::runtime::Builder::global_queue_interval
] for details. -
TOKIO_EVENT_INTERVAL
: Event interval.See [
tokio::runtime::Builder::event_interval
] for details. -
TOKIO_MAX_IO_EVENTS_PER_TICK
: Maximum IO events per tick.See [
tokio::runtime::Builder::max_io_events_per_tick
] for details.
Sourcefn on_services_start(
self: &Arc<Self>,
) -> impl Future<Output = Result<()>> + Send
fn on_services_start( self: &Arc<Self>, ) -> impl Future<Output = Result<()>> + Send
Called right before all services start.
Returning an error from this function will prevent any service from
starting and on_exit
will be called with the result
of this function.
Sourcefn on_service_exit(
self: &Arc<Self>,
name: &'static str,
result: Result<()>,
) -> impl Future<Output = Result<()>> + Send
fn on_service_exit( self: &Arc<Self>, name: &'static str, result: Result<()>, ) -> impl Future<Output = Result<()>> + Send
Called after a service exits.
name
is the name of the service that exited and result
is the result
the service exited with. Returning an error from this function will
stop all currently running services and on_exit
will be called with the result of this function.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.