Lunchbox
1.8.0
|
Abstraction layer and common utilities for multi-threaded programming. More...
Classes | |
class | Any |
A class which can hold instances of any type. More... | |
class | bad_any_cast |
A specialization for exceptions thrown by an unsuccessful any_cast. More... | |
class | Atomic |
A variable with atomic semantics and standalone atomic operations. More... | |
class | Buffer |
A simple memory buffer with some helper functions. More... | |
class | Clock |
A class for time measurements. More... | |
class | Compressor |
A C++ class to handle one compressor plugin instance. More... | |
class | Condition |
A condition variable and associated lock. More... | |
class | Decompressor |
A C++ class to handle one decompressor plugin instance. More... | |
class | Downloader |
A C++ class to handle one downloader plugin instance. More... | |
class | DSO |
Helper to access dynamic shared objects (DSO) More... | |
class | PtrHash |
A hash for pointer keys. More... | |
struct | hashRefPtr |
A hash function for RefPtr keys. More... | |
class | RefPtrHash |
A hash for RefPtr keys. More... | |
class | UUIDHash |
A hash for UUID keys. More... | |
class | IndexIterator |
Counter-based, as opposed to pointer-based, iterator for any container. More... | |
class | Launcher |
The launcher executes a command from a separate process. More... | |
class | LFQueue |
A thread-safe, lock-free queue with non-blocking access. More... | |
class | LFVector |
STL-like vector implementation providing certain thread-safety guarantees. More... | |
class | LFVectorIterator |
class | Lock |
A lock (mutex) primitive. More... | |
class | Lockable |
A convenience structure to hold data together with a lock for access. More... | |
class | LogBuffer |
class | Log |
The logging class. More... | |
class | MemoryMap |
Helper to map a file to a memory address (mmap) More... | |
class | Monitor |
A monitor primitive. More... | |
class | MTQueue |
A thread-safe queue with a blocking read access. More... | |
class | NonCopyable |
Base class to make objects non-copyable. More... | |
class | OMP |
Base class for OpenMP functionality. More... | |
class | PerThread |
Implements thread-specific storage for C++ objects. More... | |
class | PerThreadRef |
Thread-specific storage for a RefPtr. More... | |
class | Plugin |
Holder for all functions and information of one compression plugin DSO. More... | |
class | PluginRegistry |
A registry for loaded plugins. More... | |
class | PluginVisitorT |
Visitor for all plugins and compressors of a Plugin or PluginRegistry. More... | |
class | Pool |
An object allocation pool. More... | |
class | Referenced |
Base class for referenced objects. More... | |
class | RefPtr |
A smart reference pointer, aka boost::intrusive_ptr. More... | |
class | RequestHandler |
A thread-safe request handler. More... | |
class | RNG |
A random number generator. More... | |
class | ScopedMutex |
A scoped mutex. More... | |
class | Servus |
Simple wrapper for ZeroConf key/value pairs. More... | |
class | SpinLock |
A fast lock for uncontended memory access. More... | |
class | Thread |
An utility class to execute code in a separate execution thread. More... | |
class | ThreadID |
An utility class to wrap OS-specific thread identifiers. More... | |
class | TimedLock |
A mutex with timeout capabilities. More... | |
class | TLS |
Provides thread-local storage API used by PerThread and PerThreadRef. More... | |
class | uint128_t |
A base type for 128 bit unsigned integer values. More... | |
class | UnorderedIntervalSet |
A container to store intervals of elements efficently. More... | |
class | Uploader |
A C++ class to handle one uploader plugin instance. More... | |
class | UUID |
Provides a universally unique identifier. More... | |
class | Version |
Information about the current LunchBox version. More... |
Typedefs | |
typedef boost::mpl::list < int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t, float, double, bool, std::string, uint128_t > | podTypes |
List of supported POD types for lunchbox::Any serialization. | |
typedef Monitor< bool > | Monitorb |
A boolean monitor variable. | |
typedef Monitor< uint32_t > | Monitoru |
An unsigned 32bit integer monitor. | |
typedef ScopedMutex< SpinLock, ReadOp > | ScopedFastRead |
A scoped mutex for a fast uncontended read operation. | |
typedef ScopedMutex< SpinLock, WriteOp > | ScopedFastWrite |
A scoped mutex for a fast uncontended write operation. | |
typedef ScopedMutex< Lock, ReadOp > | ScopedRead |
A scoped mutex for a read operation. | |
typedef ScopedMutex< Lock, WriteOp > | ScopedWrite |
A scoped mutex for a write operation. | |
typedef ScopedMutex< Condition, WriteOp > | ScopedCondition |
A scoped mutex for a write operation on a condition. | |
typedef std::vector< std::string > | Strings |
A vector of std::strings. | |
typedef Strings::const_iterator | StringsCIter |
typedef Atomic< int32_t > | a_int32_t |
An atomic 32 bit integer variable. | |
typedef Atomic< ssize_t > | a_ssize_t |
An atomic signed size variable. | |
typedef Buffer< uint8_t > | Bufferb |
a byte buffer | |
typedef std::vector< Plugin * > | Plugins |
typedef Plugins::const_iterator | PluginsCIter |
typedef PluginVisitorT< Plugin, EqCompressorInfo > | PluginVisitor |
typedef PluginVisitorT< const Plugin, const EqCompressorInfo > | ConstPluginVisitor |
Enumerations | |
enum | LogLevel { LOG_ERROR = 1, LOG_WARN, LOG_INFO, LOG_VERB, LOG_ALL } |
The logging levels. More... | |
enum | LogTopic { LOG_EXCEPTION = 0x01, LOG_PLUGIN = 0x02, LOG_CUSTOM = 0x10, LOG_ANY = 0xffffu } |
The logging topics. More... | |
enum | VisitorResult { TRAVERSE_CONTINUE, TRAVERSE_TERMINATE, TRAVERSE_PRUNE } |
The result code from any visit operation. More... |
Functions | |
template<typename ValueType > | |
ValueType * | any_cast (Any *operand) |
Retrieve the value stored in an Any including type checking. | |
template<typename ValueType > | |
const ValueType * | any_cast (const Any *operand) |
Retrieve the value stored in an Any including type checking. | |
template<typename ValueType > | |
ValueType | any_cast (Any &operand) |
Retrieve the value stored in an Any including type checking. | |
template<typename ValueType > | |
ValueType | any_cast (const Any &operand) |
Retrieve the value stored in an Any including type checking. | |
template<typename ValueType > | |
ValueType * | unsafe_any_cast (Any *operand) |
Retrieve the value stored in an Any without type checking. | |
template<typename ValueType > | |
const ValueType * | unsafe_any_cast (const Any *operand) |
Retrieve the value stored in an Any without type checking. | |
template<typename ValueType > | |
ValueType | unsafe_any_cast (Any &operand) |
Retrieve the value stored in an Any without type checking. | |
template<typename ValueType > | |
ValueType | unsafe_any_cast (const Any &operand) |
Retrieve the value stored in an Any without type checking. | |
template<class TypeList , class Archive > | |
void | registerTypelist (Archive &ar) |
Registers the types from the given type list for serializing it inside a lunchbox::Any through the given archive. | |
template<class Archive , class Object , class Stream > | |
void | serializeAny (Object &object, Stream &stream) |
Serializes the given object which can be a lunchbox::Any through the given archive type to/from the given stream. | |
template<class Archive , class Object , class Stream > | |
void | saveAny (Object &object, Stream &stream) |
Saves the given object which can be a lunchbox::Any through the given archive type to/from the given stream. | |
template<class Archive , class Object , class Stream > | |
void | loadAny (Object &object, Stream &stream) |
Loads the given object which can be a lunchbox::Any through the given archive type to/from the given stream. | |
void | memoryBarrier () |
Perform a full memory barrier. | |
void | memoryBarrierAcquire () |
Perform a load-with-acquire memory barrier. | |
void | memoryBarrierRelease () |
Perform a store-with-release memory barrier. | |
template<class T > | |
int32_t | getIndexOfLastBit (T value) |
template<class T > | |
void | byteswap (T &value) |
Swap the byte order of the given value. | |
template<> | |
int32_t | getIndexOfLastBit< uint32_t > (uint32_t value) |
template<> | |
int32_t | getIndexOfLastBit< uint64_t > (uint64_t value) |
template<> | |
void | byteswap (void *&) |
template<> | |
void | byteswap (bool &) |
template<> | |
void | byteswap (char &) |
template<> | |
void | byteswap (signed char &) |
template<> | |
void | byteswap (unsigned char &) |
template<> | |
void | byteswap (uint32_t &value) |
template<> | |
void | byteswap (int32_t &value) |
template<> | |
void | byteswap (float &value) |
template<> | |
void | byteswap (uint16_t &value) |
template<> | |
void | byteswap (int16_t &value) |
template<> | |
void | byteswap (uint64_t &value) |
template<> | |
void | byteswap (int64_t &value) |
template<> | |
void | byteswap (double &value) |
template<> | |
void | byteswap (uint128_t &value) |
template<> | |
void | byteswap (UUID &value) |
template<typename T > | |
void | byteswap (typename std::vector< T > &value) |
bool | daemonize () |
Turn the calling process into a daemon. | |
void | abort () |
void | checkHeap () |
std::ostream & | sysError (std::ostream &os) |
Print a textual description of the current system error. | |
std::ostream & | backtrace (std::ostream &os) |
Print the current call stack. | |
std::string | demangleTypeID (const char *mangled) |
template<class T > | |
std::string | className (const T *object) |
Print the RTTI name of the given class. | |
template<class T > | |
std::string | className (const T &object) |
Print the RTTI name of the given class. | |
Strings | searchDirectory (const std::string &directory, const std::string &pattern) |
Retrieve a list of files in a directory matching a boost::regex pattern. | |
std::string | getFilename (const std::string &filename) |
std::string | getDirname (const std::string &filename) |
bool | init (const int argc, char **argv) |
Initialize the Lunchbox base classes. | |
bool | exit () |
De-initialize the Lunchbox base classes. | |
template<class T > | |
std::ostream & | operator<< (std::ostream &os, const LFVector< T > &v) |
Output the vector and up to 256 items to the ostream. | |
template<class D , class L > | |
std::ostream & | operator<< (std::ostream &os, const Lockable< D, L > &l) |
Print the data to the given output stream. | |
std::ostream & | indent (std::ostream &os) |
Increases the indentation level of the Log stream, causing subsequent lines to be intended by four characters. | |
std::ostream & | exdent (std::ostream &os) |
Decrease the indent of the Log stream. | |
std::ostream & | disableFlush (std::ostream &os) |
Disable flushing of the Log stream. | |
std::ostream & | enableFlush (std::ostream &os) |
Re-enable flushing of the Log stream. | |
std::ostream & | forceFlush (std::ostream &os) |
Flush the Log stream regardless of the auto-flush state. | |
std::ostream & | disableHeader (std::ostream &os) |
Disable printing of the Log header for subsequent lines. | |
std::ostream & | enableHeader (std::ostream &os) |
Re-enable printing of the Log header. | |
std::ostream & | operator<< (std::ostream &os, const MemoryMap &m) |
template<typename T > | |
std::ostream & | operator<< (std::ostream &os, const Monitor< T > &monitor) |
Print the monitor to the given output stream. | |
template<class T > | |
void | perThreadDelete (T *object) |
Default PerThread destructor deleting the object. | |
template<class T > | |
void | perThreadNoDelete (T *object) |
Empty PerThread destructor. | |
template<class T > | |
std::ostream & | operator<< (std::ostream &os, RefPtr< T > rp) |
Print the reference pointer to the given output stream. | |
template<class T > | |
std::string | className (const RefPtr< T > &rp) |
std::ostream & | operator<< (std::ostream &, const RequestHandler &) |
std::ostream & | operator<< (std::ostream &, const Servus &) |
Output the servus instance in human-readable format. | |
void | sleep (const uint32_t milliSeconds) |
Sleep the current thread for a number of milliseconds. | |
std::ostream & | operator<< (std::ostream &, const Thread::Affinity) |
Output the affinity setting in human-readable form. | |
std::ostream & | operator<< (std::ostream &, const ThreadID &) |
Print the thread to the given output stream. | |
std::ostream & | operator<< (std::ostream &os, const uint128_t &id) |
ostream operator for 128 bit unsigned integers. | |
std::istream & | operator>> (std::istream &is, uint128_t &id) |
istream operator for 128 bit unsigned integers. | |
uint128_t | operator+ (const uint128_t &a, const uint64_t &b) |
Add a 64 bit value to a 128 bit value. | |
uint128_t | operator+ (const uint128_t &a, const uint128_t &b) |
Add two 128 bit values. | |
uint128_t | operator- (const uint128_t &a, const uint64_t &b) |
Subtract a 64 bit value from a 128 bit value. | |
uint128_t | operator& (const uint128_t &a, const uint128_t &b) |
Bitwise and operation on two 128 bit values. | |
uint128_t | operator| (const uint128_t &a, const uint128_t &b) |
Bitwise or operation on two 128 bit values. | |
uint128_t | make_uint128 (const char *string) |
Create a 128 bit integer based on a string. | |
std::ostream & | operator<< (std::ostream &os, const VisitorResult &result) |
Abstraction layer and common utilities for multi-threaded programming.
Lunchbox provides C++ classes to abstract the underlying operating system and to implement common utilities for multi-threaded C++ programs. Classes with non-virtual destructors are not intended to be subclassed.
typedef boost::mpl::list< int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t, float, double, bool, std::string, uint128_t > lunchbox::podTypes |
List of supported POD types for lunchbox::Any serialization.
Definition at line 49 of file anySerialization.h.
typedef ScopedMutex< Condition, WriteOp > lunchbox::ScopedCondition |
A scoped mutex for a write operation on a condition.
Definition at line 125 of file scopedMutex.h.
typedef ScopedMutex< SpinLock, ReadOp > lunchbox::ScopedFastRead |
A scoped mutex for a fast uncontended read operation.
Definition at line 113 of file scopedMutex.h.
typedef ScopedMutex< SpinLock, WriteOp > lunchbox::ScopedFastWrite |
A scoped mutex for a fast uncontended write operation.
Definition at line 116 of file scopedMutex.h.
typedef ScopedMutex< Lock, ReadOp > lunchbox::ScopedRead |
typedef ScopedMutex< Lock, WriteOp > lunchbox::ScopedWrite |
typedef std::vector< std::string > lunchbox::Strings |
enum lunchbox::LogLevel |
enum lunchbox::LogTopic |
The result code from any visit operation.
TRAVERSE_CONTINUE |
continue the traversal |
TRAVERSE_TERMINATE |
abort the traversal |
TRAVERSE_PRUNE |
do not traverse current entity downwards |
Definition at line 29 of file visitorResult.h.
ValueType* lunchbox::any_cast | ( | Any * | operand | ) |
Retrieve the value stored in an Any including type checking.
Definition at line 232 of file any.h.
References lunchbox::Any::type().
Referenced by any_cast().
|
inline |
Retrieve the value stored in an Any including type checking.
Definition at line 251 of file any.h.
References any_cast().
ValueType lunchbox::any_cast | ( | Any & | operand | ) |
Retrieve the value stored in an Any including type checking.
bad_any_cast | if types are not matching |
Definition at line 264 of file any.h.
References any_cast(), and lunchbox::Any::type().
|
inline |
Retrieve the value stored in an Any including type checking.
bad_any_cast | if types are not matching |
Definition at line 284 of file any.h.
References any_cast().
std::ostream& lunchbox::backtrace | ( | std::ostream & | os | ) |
Print the current call stack.
May not be implemented on all platforms.
Referenced by lunchbox::Referenced::ref().
void lunchbox::byteswap | ( | T & | value | ) |
Swap the byte order of the given value.
|
inline |
Print the RTTI name of the given class.
Definition at line 66 of file debug.h.
Referenced by lunchbox::PerThread< T, D >::operator*(), lunchbox::RefPtr< T >::operator*(), lunchbox::RefPtr< T >::operator->(), and operator<<().
|
inline |
|
inline |
Turn the calling process into a daemon.
Only the forked child process returns from this function. A new session is created and the standard file descriptors are closed. The current working directory is unchanged, and the Log output is not redirected to a file.
Definition at line 39 of file daemon.h.
References exit(), LBWARN, and sysError().
std::ostream& lunchbox::disableFlush | ( | std::ostream & | os | ) |
Disable flushing of the Log stream.
Referenced by operator<<().
std::ostream& lunchbox::disableHeader | ( | std::ostream & | os | ) |
Disable printing of the Log header for subsequent lines.
std::ostream& lunchbox::enableFlush | ( | std::ostream & | os | ) |
Re-enable flushing of the Log stream.
Referenced by operator<<().
std::ostream& lunchbox::enableHeader | ( | std::ostream & | os | ) |
Re-enable printing of the Log header.
std::ostream& lunchbox::exdent | ( | std::ostream & | os | ) |
Decrease the indent of the Log stream.
bool lunchbox::exit | ( | ) |
De-initialize the Lunchbox base classes.
true
if the library was successfully de-initialised, false
otherwise. Referenced by daemonize().
std::ostream& lunchbox::forceFlush | ( | std::ostream & | os | ) |
Flush the Log stream regardless of the auto-flush state.
std::string lunchbox::getDirname | ( | const std::string & | filename | ) |
std::string lunchbox::getFilename | ( | const std::string & | filename | ) |
int32_t lunchbox::getIndexOfLastBit | ( | T | value | ) |
Referenced by lunchbox::LFVector< T, nSlots >::LFVector(), and lunchbox::LFVector< T, nSlots >::operator[]().
std::ostream& lunchbox::indent | ( | std::ostream & | os | ) |
Increases the indentation level of the Log stream, causing subsequent lines to be intended by four characters.
bool lunchbox::init | ( | const int | argc, |
char ** | argv | ||
) |
Initialize the Lunchbox base classes.
argc | the command line argument count. |
argv | the command line argument values. |
uint128_t lunchbox::make_uint128 | ( | const char * | string | ) |
|
inline |
Perform a full memory barrier.
Definition at line 38 of file atomic.h.
Referenced by memoryBarrierAcquire(), memoryBarrierRelease(), lunchbox::Atomic< T >::operator!=(), lunchbox::Atomic< T >::operator=(), and lunchbox::Atomic< T >::operator==().
|
inline |
Perform a load-with-acquire memory barrier.
Definition at line 54 of file atomic.h.
References memoryBarrier().
Referenced by lunchbox::Atomic< T >::addAndGet(), lunchbox::Atomic< T >::getAndAdd(), lunchbox::Atomic< T >::getAndSub(), lunchbox::Atomic< T >::operator T(), and lunchbox::Atomic< T >::subAndGet().
|
inline |
Perform a store-with-release memory barrier.
Definition at line 65 of file atomic.h.
References memoryBarrier().
Referenced by lunchbox::Atomic< T >::addAndGet(), lunchbox::Atomic< T >::getAndAdd(), lunchbox::Atomic< T >::getAndSub(), and lunchbox::Atomic< T >::subAndGet().
|
inline |
Bitwise and operation on two 128 bit values.
Definition at line 285 of file uint128_t.h.
References lunchbox::uint128_t::high(), and lunchbox::uint128_t::low().
|
inline |
Add a 64 bit value to a 128 bit value.
Definition at line 257 of file uint128_t.h.
References lunchbox::uint128_t::high(), and lunchbox::uint128_t::low().
|
inline |
|
inline |
Subtract a 64 bit value from a 128 bit value.
Definition at line 275 of file uint128_t.h.
References lunchbox::uint128_t::high(), and lunchbox::uint128_t::low().
|
inline |
ostream operator for 128 bit unsigned integers.
Definition at line 238 of file uint128_t.h.
std::ostream& lunchbox::operator<< | ( | std::ostream & | , |
const ThreadID & | |||
) |
Print the thread to the given output stream.
|
inline |
Print the data to the given output stream.
Definition at line 68 of file lockable.h.
References disableFlush(), and enableFlush().
std::ostream& lunchbox::operator<< | ( | std::ostream & | , |
const Servus & | |||
) |
Output the servus instance in human-readable format.
|
inline |
Print the reference pointer to the given output stream.
Definition at line 177 of file refPtr.h.
References disableFlush(), and enableFlush().
std::ostream& lunchbox::operator<< | ( | std::ostream & | , |
const Thread::Affinity | |||
) |
Output the affinity setting in human-readable form.
std::ostream & lunchbox::operator<< | ( | std::ostream & | os, |
const LFVector< T > & | v | ||
) |
Output the vector and up to 256 items to the ostream.
Definition at line 413 of file lfVector.ipp.
References className().
|
inline |
Print the monitor to the given output stream.
Definition at line 389 of file monitor.h.
References lunchbox::Monitor< T >::get().
|
inline |
istream operator for 128 bit unsigned integers.
Definition at line 248 of file uint128_t.h.
|
inline |
Bitwise or operation on two 128 bit values.
Definition at line 294 of file uint128_t.h.
References lunchbox::uint128_t::high(), and lunchbox::uint128_t::low().
void lunchbox::perThreadDelete | ( | T * | object | ) |
Default PerThread destructor deleting the object.
Definition at line 28 of file perThread.h.
void lunchbox::perThreadNoDelete | ( | T * | object | ) |
Strings lunchbox::searchDirectory | ( | const std::string & | directory, |
const std::string & | pattern | ||
) |
Retrieve a list of files in a directory matching a boost::regex pattern.
void lunchbox::sleep | ( | const uint32_t | milliSeconds | ) |
Sleep the current thread for a number of milliseconds.
std::ostream& lunchbox::sysError | ( | std::ostream & | os | ) |
Print a textual description of the current system error.
The current system error is OS-specific, e.g., errno or GetLastError().
Referenced by daemonize().
|
inline |
Retrieve the value stored in an Any without type checking.
Definition at line 298 of file any.h.
Referenced by unsafe_any_cast().
|
inline |
Retrieve the value stored in an Any without type checking.
Definition at line 311 of file any.h.
References unsafe_any_cast().
ValueType lunchbox::unsafe_any_cast | ( | Any & | operand | ) |
Retrieve the value stored in an Any without type checking.
Definition at line 323 of file any.h.
References unsafe_any_cast().
ValueType lunchbox::unsafe_any_cast | ( | const Any & | operand | ) |
Retrieve the value stored in an Any without type checking.
Definition at line 336 of file any.h.
References unsafe_any_cast().