2.3. Cluster Plumbing Library
The Cluster plumbing library is a collection of very useful functions
which provide a variety of services used by many of our main
components. A few of the major objects provided by this library
include:
-
compression API (with underlying compression plugins)
-
Non-blocking logging API
-
memory management oriented to continuously running services
-
Hierarchical name-value pair messaging facility promoting
portability and version upgrade compatibility (also provides
optional message compression facilities)
-
Signal unification - allowing signals to appear as mainloop events
-
Core dump management utilities - promoting capture of core dumps in
a uniform way, and under all circumstances
-
timers (like glib mainloop timers - but they work even when the time
of day clock jumps)
-
child process management - death of children causes invocation of
process object, with configurable death-of-child messages
-
Triggers (arbitrary events triggered by software)
-
Realtime management - setting and unsetting high priorities, and
locked into memory attributes of processes.
-
64-bit HZ-granularity time manipulation (longclock_t)
-
User id management for security purposes, for processes which need
some
root privileges.
-
Mainloop integration for IPC, plain file descriptors, signals,
etc. This means that all these different event sources are managed
and dispatched consistently.