Crate system_service [] [src]

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