X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Socket%2FMainpage.dox;h=5485c7e76b1d6735c4cf6de1b63086de7aa213c0;hb=532240d72e09e19e57fac9bb55c2560b9c9e5b97;hp=9a0c847f5df7c57349bf1ec7a4c3e286ab8d132a;hpb=65909c44022ccd7b97d4c2810fbf67ffa980207e;p=senf.git diff --git a/Socket/Mainpage.dox b/Socket/Mainpage.dox index 9a0c847..5485c7e 100644 --- a/Socket/Mainpage.dox +++ b/Socket/Mainpage.dox @@ -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: