Fawkes API  Fawkes Development Version
Fawkes Core Library

The Fawkes Core Library includes core components that are required to write basic fawkes plugins. More...

Collaboration diagram for Fawkes Core Library:

Classes

class  fawkes::LockPtr< T_CppObject >
 LockPtr<> is a reference-counting shared lockable smartpointer. More...
 
class  fawkes::RefPtr< T_CppObject >
 RefPtr<> is a reference-counting shared smartpointer. More...
 
class  fawkes::Exception
 Base class for exceptions in Fawkes. More...
 
class  fawkes::Plugin
 Plugin interface class. More...
 
class  fawkes::Mutex
 Mutex mutual exclusion lock. More...
 
class  fawkes::MutexLocker
 Mutex locking helper. More...
 
class  fawkes::ReadWriteLock
 Read/write lock to allow multiple readers but only a single writer on the resource at a time. More...
 
class  fawkes::RecursiveMutex
 Recursive mutex. More...
 
class  fawkes::RefCountRWLock
 Read/write lock with reference counting. More...
 
class  fawkes::ScopedRWLock
 Scoped read/write lock. More...
 
class  fawkes::Spinlock
 Spin lock. More...
 
class  fawkes::Thread
 Thread class encapsulation of pthreads. More...
 
class  fawkes::WaitCondition
 Wait until a given condition holds. More...
 
class  fawkes::CircularBuffer< Type >
 Circular buffer with a fixed size. More...
 
class  fawkes::LockHashMap< KeyType, ValueType, HashFunction, EqualKey >
 Hash map with a lock. More...
 
class  fawkes::LockHashSet< KeyType, HashFunction, EqualKey >
 Hash set with a lock. More...
 
class  fawkes::LockList< Type >
 List with a lock. More...
 
class  fawkes::LockMap< KeyType, ValueType, LessKey >
 Map with a lock. More...
 
class  fawkes::LockMultiMap< KeyType, ValueType, LessKey >
 Multi-Map with a lock. More...
 
class  fawkes::LockQueue< Type >
 Queue with a lock. More...
 
class  fawkes::LockSet< KeyType, LessKey >
 Set with a lock. More...
 
class  fawkes::LockVector< Type >
 Vector with a lock. More...
 
class  fawkes::RefCount
 Reference counting base class. More...
 
class  fawkes::RWLockList< Type >
 List with a read/write lock. More...
 
class  fawkes::RWLockMap< KeyType, ValueType, LessKey >
 Hash map with a lock. More...
 
class  fawkes::RWLockQueue< Type >
 Queue with a read/write lock. More...
 
class  fawkes::RWLockVector< Type >
 Vector with a lock. More...
 

Detailed Description

The Fawkes Core Library includes core components that are required to write basic fawkes plugins.

This is the lowest level in the Fawkes library stack and must not depend on any other libraries besides glibc and system calls.

The Fawkes Core Library provides several basic features needed by the rest of the software like:

In most cases if you look for a place to put you code you are wrong here in the core library. You must really know what you are doing. If in doubt ask Tim Niemueller for decision making help for this. In general if you thought you should add something to core it is likely that the right place is somewhere in the Fawkes Utility Library.

You will note that here is also an utils directory which may make you think even more that you want to put your code here. But the utils is only meant to host utilities that are

The exceptions directory is not a general place to put your exceptions. It is only meant to serve as a repository of generic exceptions that are likely to be re-used all over the software. On the one hand these are system exceptions which are mainly applicable if the error was indicated or described via the usage of errno. On the other hand these are generic software construction exceptions like null pointer exceptions.

Rule of thumb: Use Fawkes Core Library, don't hack it.