mirror of
https://github.com/matrix-construct/construct
synced 2024-11-26 08:42:34 +01:00
54 lines
2.2 KiB
Markdown
54 lines
2.2 KiB
Markdown
|
# Charybdis Server
|
||
|
|
||
|
Charybdis is the executable running `libircd`. This application provides an
|
||
|
interface for the server administrator to start, stop, configure and locally
|
||
|
communicate with the daemon. It sets up an `asio::io_service` which is passed
|
||
|
to `libircd`, then it sets up signal handling, and then it runs the ios event
|
||
|
loop until commanded to exit.
|
||
|
|
||
|
This program executes in the foreground. It does not "daemonize" anymore with a
|
||
|
`fork()` etc. You are free to use your shell to execute or move the program
|
||
|
to the background, or simply use a `tmux` or `screen`. Charybdis will output
|
||
|
the libircd log to stdout and stderr by default.
|
||
|
|
||
|
### Signals
|
||
|
|
||
|
Charybdis handles certain POSIX signals and their behavior is documented
|
||
|
below. Signals are only handled here in the Charybdis executable; libircd
|
||
|
itself does not use any signal logic (that we know about).
|
||
|
|
||
|
* Signal handling is accomplished through `boost::asio`'s mechanism which
|
||
|
installs a handler to intercept the signal's delivery and posts it to the
|
||
|
event loop for execution at the next event slice. This is how signal safety
|
||
|
is achieved. Furthermore, according to boost docs, when signals are used
|
||
|
this way they can be compatible with windows environments.
|
||
|
|
||
|
##### SIGINT
|
||
|
|
||
|
A `ctrl-c` to Charybdis will bring up the command line console interface. It
|
||
|
will not halt the daemon. Log messages will be suppressed while the console
|
||
|
is waiting for input, but service is still continuing in the background.
|
||
|
|
||
|
##### SIGTSTP
|
||
|
|
||
|
A `ctrl-z` or "Terminal SToP" to Charybdis will bring up the command line
|
||
|
console like with `SIGINT` except that the entire daemon will pause while
|
||
|
waiting for console input. When paused, a second `SIGTSTP` will exhibit default
|
||
|
behavior so your shell can offer its functionality here.
|
||
|
|
||
|
##### SIGHUP
|
||
|
|
||
|
A "HangUP" to Charybdis is only relevant to the command line console, and
|
||
|
signals it to close like an `EOF`. The legacy functionality for reloading
|
||
|
server configuration et al is moved to `SIGUSR1`.
|
||
|
|
||
|
##### SIGQUIT
|
||
|
|
||
|
A `ctrl-\` to Charybdis will cleanly shut down the server. It will not generate
|
||
|
a coredump.
|
||
|
|
||
|
##### SIGUSR1
|
||
|
|
||
|
This signal commands the server to reload and refresh various aspects of its
|
||
|
configuration and running state.
|