X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Mainpage.dox;h=74b54758dbcc31a9df4fb9322a5aecfce4314678;hb=05633cf2fb569dad4bf2118ec5203e61974b35f5;hp=02c250bbad63943018e5bdd849b87926c84a1323;hpb=8dfae1a53657036ad5dedadc77b91d2841266ba8;p=senf.git diff --git a/Mainpage.dox b/Mainpage.dox index 02c250b..74b5475 100644 --- a/Mainpage.dox +++ b/Mainpage.dox @@ -30,8 +30,8 @@ \see \ref usage\n \ref example\n - The BerliOS project page\n - The SENF Wiki at BerliOS + The BerliOS project page\n + The SENF Wiki at BerliOS */ /** \page usage Using the SENF framework @@ -48,7 +48,8 @@ \see \ref build \n \ref components \n - \ref svnsetup + \ref svnsetup \n + \ref overview \section Preliminaries @@ -69,13 +70,6 @@ POSIX platforms with a BSD Socket API, the library should be usable, possibly with some tweaking (except for the Scheduler, 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 */ /** \page build Building the framework @@ -195,12 +189,16 @@ reference */ -/** \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 @@ -249,34 +247,121 @@ 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 + satscons/SConstruct.template to Satscons 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 + satscons/SConfig.template to SConfig 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 + +
+      $ svn propedit svn:ignore .
+ + 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 -/** \page example Sniffer: A simple Example application +
+      $ scons
+ + 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 +
+      $ scons all_tests
+ + you can also build only a subdirectory by changing to it and + running + +
+      $ scons -u [target]
+ + \see SENFSCons reference \n + SCons documentation \n + Subversion online book \n + Subversion Homepage + */ + +/** \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 Socket + library for network communication needs. This library + includes support for raw and packet sockets to allow low level + network access. + \li Use the Scheduler + library 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 Packets + library. 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 Utils + library. 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. - // Local Variables: // mode: c++ +// mode: flyspell +// mode: auto-fill +// ispell-local-dictionary: "american" // End: