\see \ref build \n
\ref components \n
- \ref svnsetup
+ \ref svnsetup \n
+ \ref overview
\section Preliminaries
which relies on \c epoll)
\todo
- \li Preliminaries: SVN access, Dependencies
- \li Building the library -> Configuration
- \li Setting up a project using this library (svn:externals)
- \li Library components
\li coding standards and patterns
*/
reference</a>
*/
-/** \page svnsetup Setting up a new project using SENF via SVN
+/** \page svnsetup Setting up a new project using SENF
The preferred way to use SENF in a new project is to rely on
Subversion and make use of the SENFSCons build environment. The
following sections will describe, how this setup works.
+ \see \ref build \n
+ \ref components \n
+ \ref overview
+
\section svnext Setting up the project repository
The most seamless integration is possible if you rely on
and the code will be checked out into the corresponding
directories.
- \todo \li Configuring and building -> reference to the SENFSCons
- dok
- */
+ \section new_conf Configuring SENFSCons
+
+ To set up the build environment, copy the
+ <tt>satscons/SConstruct.template</tt> to <tt>Satscons</tt> in the
+ project root. The default setup of this file is to build all
+ subdirectories (using the \c SConscript files of the
+ subdirectories). You can add additonal global targets and
+ configuration parameters here.
+
+ If you want to use a non-default compiler or the boost library is
+ not installed in the system directories, you will have to copy
+ <tt>satscons/SConfig.template</tt> to <tt>SConfig</tt> in the
+ project root and edit it there. You should \e never add \c SConfig
+ to the repository since it should only contain local settings
+ necessary for building on your local system. You should therefore
+ add \c SConfig to the list of files ignored by Subversion in the
+ project root. In the project root execute
-/** \page example Sniffer: A simple Example application
+ <pre class="fragment">
+ $ svn propedit svn:ignore .</pre>
+
+ and add \c SConfig as a new line to the property.
+
+ \section new_build Building the project
+
+ You should now be able to build your project using
+
+ <pre class="fragment">
+ $ scons</pre>
+ If you have not changed the \c SConstruct file, this will build
+ all modules you have importet into your project. To build and
+ execute the unit tests, use
+
+ <pre class="fragment">
+ $ scons all_tests</pre>
+
+ you can also build only a subdirectory by changing to it and
+ running
+
+ <pre class="fragment">
+ $ scons -u [target]</pre>
+
+ \see <a href="../../satscons/doc/html/index.html"><b>SENFSCons reference</b></a> \n
+ <a href="http://www.scons.org/documentation.php"><b><i>SCons documentation</i></b></a> \n
+ <a href="http://svnbook.red-bean.com"><b><i>Subversion online book</i></b></a> \n
+ <a href="http://subversion.tigris.org"><b><i>Subversion Homepage</i></b></a>
+ */
+
+/** \page overview Introduction to the framework
+
+ The SENF framework is relatively complex and makes use of advanced
+ features of the C++ language. To make the most efficient use of
+ the framework, you should have at least a basic understanding of
+ C++ templates and the standard library concepts.
+
+ The library implementation at places makes heavy use of advanced
+ template techniques and relies on some very advanced template
+ libraries from Boost. The aim was however for the \e external
+ interface of the library to be as simple as possible without
+ sacrificing important functionality or adversely impacting the
+ runtime performance.
+
+ As already mentioned several times, the library relies on Boost
+ (http://www.boost.org) as a generic library of high quality
+ reusable C++ components. It also makes frequent use of the
+ standard library. It is designed, to integrate well into both
+ libraries and to use the same concepts and ideas.
+
+ \section startup Getting starting developing with SENF
+
+ To introduce the framework and it's general structure, a simple
+ example application is provided in the SENF repository in the \c
+ Sniffer module. Peruse this example to get a first look at how to
+ make use of SENF.
+
+ When building a network Application with SENF, you will use
+ several modules:
+
+ \li Use the <a href="../../Socket/doc/html/index.html"><b>Socket
+ library</b></a> for network communication needs. This library
+ includes support for raw and packet sockets to allow low level
+ network access.
+ \li Use the <a
+ href="../../Scheduler/doc/html/index.html"><b>Scheduler
+ library</b></a> to coordinate the asynchronous event
+ processing. This drastically reduces the number of threads
+ needed in your application and will greatly enhance the overall
+ responsiveness.
+ \li To interpret low level network packets, use the <a
+ href="../../Packets/doc/html/index.html"><b>Packets
+ library</b></a>. This library will provide efficient and
+ convenient access to all protocol fields. It supports parsing as
+ well as modifying and creating packets. It has default support
+ for the most important TCP protocols and is highly extensible
+ with new protocols.
+ \li Go over the <a href="../../Utils/doc/html/index.html"><b>Utils
+ library</b></a>. It contains small helpers to
+ simplify tasks like daemonization, exception handling,
+ debugging and so on.
+
+ The simplest way to get started is: copy the Sniffer application
+ and start to modify it.
+
+ \see \ref example \n
+ \ref components \n
+ \ref svnsetup \n
+ \ref build
*/
- \section code Coding practices
-
- The library heavily depends on the features of modern C++. As
- such, it depends on a fairly recent and standards compliant C++
- compiler (the Library is developed using \c gcc with Version at
- least 3.4). To meet the above defined goals, the library makes
- quite heavy use of advanced templating techniques, so
- understanding the implementation will require expertise in the
- intricacies of C++ templates. However, it was deemed important to
- keep the \e visible Interface of the Library as clean and simple
- as possible without sacrificing the projects design goals.
-
- The library heavily depends on the \e Boost libraries (see
- http://www.boost.org). The Boost libraries are an ever growing
- collection of highest quality reusable C++ components. They are
- designed with standardization in mind. Many of the libraries are
- already in queue to be part of the next generation C++ standard.
-
\f
// Local Variables:
// mode: c++
+// mode: flyspell
+// mode: auto-fill
+// ispell-local-dictionary: "american"
// End: