// Copyright (C) 2020-2021 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.

/**
 @page libutil libkea-util - Kea Utilities Library

@section utilUtilities Utilities

The utilities library (libkea-util) provides generic and Kea utilities:

 - boost time: boost Posix time and duration to text conversions.

 - buffer (header only): input and output buffers.

 - csv file: comma-separated values (CSV) files.

 - double: test utility for checking double equivalence (vs. strict
  equality).

 - encode: base16, base32, base64 and hexadecimal conversions.

 - filename: filename manipulation (avoid dependency on boost).

 - hash: Fowler-Noll-Vo 64 bit hash function.

 - io: test utils for file descriptors and sockets.

 - io utilities (header only): reads and writes integers from / to buffers.

 - labeled values: labeled constants and label constant sets.

 - multi threading manager (in the util library to be available in the
  whole Kea code).

 - optional: optional values.

 - pid file: process id files.

 - pointer util: test utility to compare smart pointers.

 - process spawn.

 - range utilities.

 - read-write mutex (header only).

 - signal set: signal handling (please use @c isc::asiolink::IOSignalSet
  instead).

 - staged values.

 - state model: event-driven deterministic finite state machine.

 - stop watch: to measure code execution time.

 - string util: various string common tools.

 - thread pool.

 - time utilities: DNSSEC time conversions from and to text.

 - unittests (directory): tools for google test unit tests.

 - unlock guard: RAII helper to unlock a mutex in a limited scope.

 - versioned csv file: csv files with multiple versions of file schema.

 - watched socket (required as select() or poll() do not support condition
  variables).

 - watched threads: threads using ready, error and terminate watched socket.

@section utilMTConsiderations Multi-Threading Consideration for Utilities

By default utilities are not thread safe, for instance CSV files and
qid random generators are not thread safe. Exceptions are:

 - multi threading manager is thread safe.

 - read-write mutex is thread safe.

 - state model is thread safe.

 - thread pool is thread safe.

 - unlock guard is thread safe.

 - watched threads are thread safe.

*/
