module SystemD

Overview

Wrapper for libsystemd http://man7.org/linux/man-pages/man3/sd_pid_notify_with_fds.3.html http://man7.org/linux/man-pages/man3/sd_listen_fds_with_names.3.html

Defined in:

memory_pressure.cr
systemd.cr

Constant Summary

LISTEN_FDS_START = 3

Class Method Summary

Class Method Detail

def self.is_listening?(fd) #

[View source]
def self.is_socket?(fd : Int, family : Socket::Family, type : Socket::Type, listening : Int) : Bool #

Checks if a FD refers to a socket of the specified type https://www.man7.org/linux/man-pages/man3/sd_is_socket_unix.3.html


[View source]
def self.is_tcp_listener?(fd : Int) #

[View source]
def self.is_tcp_socket?(fd : Int) #

[View source]
def self.is_udp_listener?(fd : Int) #

[View source]
def self.is_udp_socket?(fd : Int) #

[View source]
def self.is_unix_dgram_listener?(fd : Int) #

[View source]
def self.is_unix_dgram_socket?(fd : Int) #

[View source]
def self.is_unix_stream_listener?(fd : Int) #

[View source]
def self.is_unix_stream_socket?(fd : Int) #

[View source]
def self.listen_fds : Indexable(Int32) #

[View source]
def self.listen_fds_with_names : Indexable(Tuple(Int32, String)) #

[View source]
def self.listeners : Indexable(Socket) #

[View source]
def self.listening_socket?(fd : Int) #

[View source]
def self.named_listeners : Indexable(Tuple(Socket, String)) #

[View source]
def self.notify(message = "READY=1\n") : Bool #

[View source]
def self.notify_ready #

[View source]
def self.notify_reloading #

[View source]
def self.notify_status(status : String) #

[View source]
def self.notify_stopping #

[View source]
def self.remove_fds(name : String) #

[View source]
def self.store_fds(fds : Array(Int32), name : String) : Bool #

[View source]
def self.store_fds(fds : Array(Int32)) : Bool #

[View source]
def self.tcp_socket?(fd : Int) #

[View source]
def self.udp_socket?(fd : Int) #

[View source]
def self.unix_dgram_socket?(fd : Int) #

[View source]
def self.unix_stream_socket?(fd : Int) #

[View source]
def self.watchdog(&callback : -> _) #

Report to systemd in a separate fiber The callback should return a trueish value or else the keepalive won't be sent If systemd doesn't get a ping every WATCHDOG_USEC it will kill the process. This method can always be called, if watchdog isn't enabled in systemd or the process is not running under systemd it will do nothing.


[View source]
def self.watchdog #

[View source]
def self.watchdog_interval? : Time::Span | Nil #

[View source]