Crate system_service

Source
Expand description

A framework for writing system services

§About

Every application which runs as a service should implement things like logging, signal handling, graceful shutdown, CLI option parsing, and configuration file parsing. This package provides a semi-opinionated framework for doing so.

§Usage

There are several traits exported here including Application, Config, Options, and LogOptions. The two options traits should be implemented for your CLI option loadind, Config for your config file loading, and Application for your application logic.

The primary run method is Application::run_once which is called over and over again in a loop. It is provided a Context type which gives the application control of when it checks for signals. Any received signals are passed to Application::received_signal for handling.

Once Application::run_once returns Stopping::Yes, the main loop terminates and invokes Application::shutdown before exitting.

Macros§

die
Print a message to stderr and exit(1)

Structs§

Context
A context passed to Application::run_once

Enums§

Stopping
Indicates whether the run loop should halt

Traits§

Application
The application; domain-specific program logic
Config
Trait required for loading Config from file
LogOptions
Additional requirents for CLI options to initialize the logging subsystem
Options
Trait required for loading CLI options

Functions§

run
Run an Application