216699d7081bc508f86ec7a5bda297c72cb2785a
[senf.git] / Mainpage.dox
1 /** \mainpage SENF: The Simple and Extensible Network Framework
2
3     The SENF Simple and Extensible Network Framework aims to be a
4     complete set of libraries to facilitate the development of network
5     applications focusing on network protocols on the layers below the
6     application layer. However, the framework includes many general
7     purpose utilities and will be expedient to use well beyond its
8     primary objective.
9
10     \section Goals
11
12     The main goals where (in no particular order)
13
14     \li modular framework design
15     \li utilizing the power of modern C++
16     \li very low overhead for frequently called members
17     \li extensible design    
18     \li concise interface
19
20     \section Components
21
22     The framework is made up of several modular components. When using
23     the library, it is possible to selectively choose to use only a
24     subset of the implemented modules. The modules are
25     
26     \subsection libSocket libSocket: C++ abstraction of the BSD socket API
27
28     This library provides a high performance and object oriented
29     abstraction of the standard socket API. It utilizes a flexible and
30     extensible policy based design. The library provides predefined
31     types for the important socket types (UDP and TCP sockets etc)
32     including raw and packet sockets. \n
33
34     \see <a href="../../Socket/doc/html/index.html">libSocket API
35     reference</a>
36
37     \subsection libPackets libPackets: Network packet manipulation
38
39     This libarary provides a very flexible infrastructure to
40     parse, create and otherwise manipulate packetized network
41     data. Included is a library of several protocol parsers covering
42     the basic IPv4 and IPv6 network protocols down to the Ethernet
43     layer.
44
45     \see <a href="../../Packets/doc/html/index.html">libPackets API
46     reference</a>
47
48     \subsection libScheduler libScheduler: Asynchronous event handling
49
50     The scheduler library provides an object oriented interface to the
51     standard UNIX \c select type event dispatcher. It is based on the
52     high performance \c epoll system call. It provides support for
53     read/write events as well as simple timer based events.
54
55     \see <a href="../../Scheduler/doc/html/index.html">libScheduler API
56     reference</a>
57
58     \subsection libUtils libUtils: Collection of arbitrary utilities
59
60     This library is used be most all of the other modules for
61     miscellaneous tools and utilities. We have
62
63     \li Simple functions to manage daemon processes
64     \li Standard exception classes 
65     \li satcom::lib::intrusive_refcount to simplify the implementation
66         of classes usable with boost::intrusive_ptr
67     \li boost::bind extensions
68     \li An interface to the \c g++ demangler integrated with type_info 
69     \li Typedefs and rudimentary methods to simplify handling
70         high-resolution time values
71
72     \see <a href="../../Utils/doc/html/index.html">libUtils API
73     reference</a>
74
75     \section code Coding practices
76
77     The library heavily depends on the features of modern C++. As
78     such, it depends on a fairly recent and standards compliant C++
79     compiler (the Library is developed using \c gcc with Version at
80     least 3.4). To meet the above defined goals, the library makes
81     quite heavy use of advanced templating techniques, so
82     understanding the implementation will require expertise in the
83     intricacies of C++ templates. However, it was deemed important to
84     keep the \e visible Interface of the Library as clean and simple
85     as possible without sacrificing the projects design goals.
86
87     The library heavily depends on the \e Boost libraries (see
88     http://www.boost.org). The Boost libraries are an ever growing
89     collection of highest quality reusable C++ components. They are
90     designed with standardization in mind. Many of the libraries are
91     already in queue to be part of the next generation C++ standard.
92    
93     \section Dependencies
94
95     \li A standards compliant, modern C++ compiler. The library as
96         such is developed under Linux using \c gcc with Version
97         above 3.4
98     \li The Boost libraries from http://www.boost.org
99     \li The SCons build tool (see http://www.scons.org)
100     \li Linux. The library only makes use of the POSIX API's, however
101         it has not been tested beyond Linux, so if you are somewhere
102         else, you are on your own. However, we will greatly appreciate
103         feedback and patches for other platforms.
104 */
105
106 \f
107 // Local Variables:
108 // mode: c++
109 // End: