/**
* @mainpage
*
* @section overview Overview
*
* libqb is a library with the primary purpose of providing high-performance,
* reusable features for client-server architecture, such as logging, tracing,
* inter-process communication (IPC), and polling. Except for some documented
* anti-pattern use cases regarding IPC communication and logging, it is deemed
* thread-safe.
*
* We don't intend this to be an all-encompassing library, but instead
* provide very specially focused APIs that are highly tuned for maximum
* performance for client/server applications.
*
* See the following pages for more info:
* - @subpage qb_list_overview
* - @subpage qb_atomic_overview
* - @subpage qb_array_overview
* - @subpage qb_map_overview
* - @subpage qb_hdb_overview
* - @subpage qb_rb_overview
* - @subpage qb_loop_overview
* - @subpage qb_log_overview
* - @subpage qb_ipc_overview
* - @subpage qb_util_overview
*/
/**
* @page qb_rb_overview Ringbuffer
* @copydoc qbrb.h
* @see qbrb.h
*/
/**
* @page qb_list_overview List
* @copydoc qblist.h
* @see qblist.h
*/
/**
* @page qb_array_overview Array
* @copydoc qbarray.h
* @see qbarray.h
*/
/**
* @page qb_map_overview Map
* @copydoc qbmap.h
* @see qbmap.h
*/
/**
* @page qb_hdb_overview Handle Database
* @copydoc qbhdb.h
* @see qbhdb.h
*/
/**
* @page qb_loop_overview Main Loop
* @copydoc qbloop.h
* @see qbloop.h
*/
/**
* @page qb_log_overview Logging
* @copydoc qblog.h
* @see qblog.h
*/
/**
* @page qb_ipc_overview IPC Overview
*
* @par Overview
* libqb provides a generically reusable very high performance shared memory IPC system for client
* and service applications. It supports many features including:
* - Multiple transport implementations
* -# Shared memory implementation for very high performance.
* -# Unix sockets
* - A synchronous request/response channel and asynchronous response channel per ipc connection.
* - User defined private data per IPC connection.
* - Ability to call a function per service on ipc connection and disconnection.
* - Authenticated IPC connection with ability for developer to define which UIDs and GIDs are valid at connection time.
* - Fully abstracted poll system so that any poll library may be used.
* - User defined selector for determining the proper function to call per service and id.
*
* @par Security
* The ipc system uses default operating system security mechanics to ensure ipc
* connections are validated. A callback used with qb_ipcs_create() is called
* for every new ipc connection with the parameters of UID and GID. The callback
* then determines if the UID and GID are authenticated for communication.
*
* @par Performance
* For performance, QB_IPC_SHM (shared memory) is recommended. It is tuned for
* very high performance.
*
* @par Multithreading
* There are not many guarantees about the ipc system being thread-safe.
* It is essential that all sends and all receives are in their own thread,
* though having separate threads for each is supported.
*
* If you need to send on multiple threads then either use locking
* around the calls or create a separate connection for each thread.
*
*
* @par IPC sockets (Linux only)
* On Linux IPC, abstract (non-filesystem) sockets are used by default. If you
* need to override this (say in a net=host container) and use sockets that reside
* in the filesystem, then you need to create a file called /etc/libqb/force-filesystem-sockets
* - this is the default name and can be changed at ./configure time.
* The file does not need to contain any content, it's not a configuration file as such,
* just its presence will activate the feature.
*
* Note that this is a global option and read each time a new IPC connection
* (client or server) is created. So, to avoid having clients that cannot
* connect to running servers it is STRONGLY recommended to only create or remove
* this file prior to a system reboot or container restart.
*
* @par Client API
* @copydoc qbipcc.h
* @see qbipcc.h
*
* @par Server API
* @copydoc qbipcs.h
* @see qbipcs.h
*
*/
/**
* @page qb_atomic_overview Atomic operations
* @copydoc qbatomic.h
* @see qbatomic.h
*/
/**
* @page qb_util_overview Common Utilities
* @copydoc qbutil.h
* @see qbutil.h
*/