Add missing Build-Depends to debian/control
[senf.git] / Socket / Mainpage.dox
index 9a0c847..5485c7e 100644 (file)
@@ -24,29 +24,73 @@ namespace senf {
 
 /** \mainpage The SENF Socket Library
 
-    The Socket library provides a high level and object oriented abstraction of the BSD socket
-    API. The abstraction is based on several concepts:
+    The Socket library provides a high level and object oriented abstraction based on the BSD socket
+    API (but not limited to it). 
+    
+    \autotoc
+    
+    \section socket_intro Introduction
+    \seechapter \ref structure \n
+    \seechapter \ref usage
+    
+    The socket library abstraction is based on several concepts:
 
-    \li The basic visible interface is a \link handle_group handle object \endlink
+    \li The basic visible interface is a \link handle_group handle object\endlink
     \li The socket interface relies on a \link policy_group policy framework \endlink to configure
         it's functionality
     \li The rest of the socket API is accessible using a classic inheritance hierarchy of \link
         protocol_group protocol classes \endlink
+    \li There is a family of auxilliary \ref addr_group to supplement the socket library
+
+
+    \section socket_handle Socket Handles
+    \seechapter \ref handle_group \n
+    \seechapter \ref concrete_protocol_group
 
     The handle/body architecture provides automatic reference counted management of socket
-    instances, the policy framework provides highly efficient access to the most important socket
-    functions (like reading and writing) and the inheritance hierarchy provides convenient access to
-    the multitude of special and protocol dependent options.
+    instances. This is the visible interface to the socket library.
+
+    Each specific protocol is used primarily via a protocol specific handle (a typedef
+    symbol). However, more generic kinds of handles can be defined for more generic functionality.
+
+
+    
+    \section socket_policy The Policy interface
+    \seechapter \ref policy_group
+
+    The policy framework configures the exact features, a specific type of socket handle
+    provides. This offers highly efficient access to the most important socket functions (like
+    reading and writing). The policy interface however is a \e static, non-polymorphic interface.
+
+    
+    \section socket_protocol The Protocol interface
+    \seechapter \ref protocol_group
+    
+
+    The protocol interface provides further protocol dependent and (possibly) polymorphic access to
+    further socket funcitonality. On the other hand, this type of interface is not as flexible,
+    generic and fast as the policy interface.
+
+    \section socket_addr Auxilliary Addressing classes
+    \seechapter \ref addr_group
+    
+    To supplement the socket library, there are a multitude of addressing classes. These come in two
+    basic groups:
+    \li Protocol specific addresses (e.g. INet4Address, MACAddress)
+    \li Socket addresses (\c sockaddr) (e.g. INet4SocketAddress, LLSocketAddress)
+
+    Whereas the protocol specific addresses are custom value types which represent their
+    corresponding low-level address, the socket addresses are based on the corresponding \c sockaddr
+    structures. 
+    
+    \section socket_further Going further
+    \seechapter \ref extend \n
+    \seechapter \ref implementation
+
+    The socket library is highly flexible and extensible. The implementation is not restricted to
+    plain BSD sockets: Any type of read/write communication can be wrapped into the socket library
+    (one Example is the TapSocketHandle which provides access to a Linux \c tap device).
 
-    \see 
-        \ref structure \n
-        \ref usage \n
-        \ref handle_group \n
-        \ref policy_group \n
-        \ref protocol_group \n
-        \ref addr_group \n
-        \ref extend \n
-        \ref implementation
  */
 
 /** \page structure Overview of the Socket Library Structure
@@ -314,4 +358,5 @@ namespace senf {
 // ispell-local-dictionary: "american"
 // mode: flyspell
 // mode: auto-fill
+// compile-command: "scons -u doc"
 // End: