X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Socket%2FMainpage.dox;h=5485c7e76b1d6735c4cf6de1b63086de7aa213c0;hb=92f8630b75f3ef50e73c48cde58645dcd1534e27;hp=c473505cfeaef7de6a265afeb0592374e76b0545;hpb=25fe79f266e7583750d8e761abec4022d87972b8;p=senf.git diff --git a/Socket/Mainpage.dox b/Socket/Mainpage.dox index c473505..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 @@ -247,7 +291,48 @@ namespace senf { \section class_diagram Class Diagram - \image html SocketLibrary-classes.png +
+ \ref IPv4Protocol + \ref WritePolicyBase + \ref SocketBufferingPolicy + \ref NoAddressingPolicy + \ref NotReadablePolicy + \ref AdressableBSDSocketProtocol + \ref BufferingPolicyBase + \ref FramingPolicyBase + \ref FileBody + \ref DatagramFramingPolicy + \ref INet6AddressingPolicy + \ref BSDSocketProtocol + \ref INet4AddressingPolicy + \ref ProtocolServerSocketHandle + \ref PolicyBase + \ref TCPProtocol + \ref ReadablePolicy + \ref SocketPolicy + \ref CommunicationPolicyBase + \ref TCPv6Protocol + \ref SocketProtocol + \ref ConnectedCommunicationPolicy + \ref ProtocolClientSocketHandle + \ref IPv6Protocol + \ref WritablePolicy + \ref SocketBody + \ref PacketProtocol + \ref NotWritablePolicy + \ref ReadPolicyBase + \ref SocketHandle + \ref ClientSocketHandle + \ref UnconnectedCommunicationPolicy + \ref ConcreteSocketProtocol + \ref TCPv4Protocol + \ref StreamFramingPolicy + \ref AddressingPolicyBase + \ref FileHandle + \ref LLAddressingPolicy + \ref ServerSocketHandle +
+ \htmlonly SocketLibrary-classes \endhtmlonly \section impl_notes Arbitrary Implementation Notes @@ -273,4 +358,5 @@ namespace senf { // ispell-local-dictionary: "american" // mode: flyspell // mode: auto-fill +// compile-command: "scons -u doc" // End: