Fix Doxygen builder file globbing
[senf.git] / Socket / Mainpage.dox
1 /** \mainpage The SENF Socket Library
2
3     The Socket library provides a high level and object oriented
4     abstraction of the BSD socket API. The abstraction is based on
5     several concepts:
6
7     \li The basic visible interface is a handle object
8         (senf::FileHandle and it's derived classes)
9     \li The socket interface relies on a policy framework to configure
10         it's functionality
11     \li The rest of the socket API is accessible using a classic
12         inheritance hierarchy of protocol classes
13
14     The handle/body architecture provides automatic reference counted
15     management of socket instances, the policy framework provides
16     highly efficient access to the most important socket functions
17     (like reading and writing) and the inheritance hierarchy provides
18     convenient access to the multitude of special and protocol
19     dependent options.
20
21     \see \ref usage \n
22          \ref extend \n
23          \ref implementation
24  */
25
26 /** \page usage Using the Socket Library
27
28     \section socket_handle The socket handle
29
30     Whenever you use the socket library, what you will be dealing with
31     are senf::FileHandle derived instances. The socket library relies
32     on reference counting to automatically manage the underlying
33     socket representation. This frees you of having to manage the
34     socket lifetime explicitly.
35     
36     \attention It is very important, to (almost) always pass the socket
37     handle <em>by value</em>. The socket handle is a very lightweight
38     class and designed to be used like an ordinary built-in type. This
39     is very important in combination with the policy interface.
40
41     \section policy_framework The policy framework
42
43     The policy framework conceptually implements a list of parallel
44     inheritance hierarchies each covering a specific interface aspect
45     of the socket handle. The socket handle itself only provides
46     minimal functionality. All further functionality is relayed to a
47     policy class, or more precisely, to a group of policy classes, one
48     for each policy axis. The policy axis are
49     
50     <dl>
51     <dt><em>addressingPolicy</em></dt>
52     <dd>configures, whether a socket is
53     addressable and if so, configures the address type</dd>
54     
55     <dt><em>framingPolicy</em></dt>
56     <dd>configures the type of framing the socket provides: either no
57     framing providing a simple i/o stream or packet framing</dd>
58     
59     <dt><em>communicationPolicy</em></dt>
60     <dd>configures,if and how the communication partner is
61     selected</dd> 
62     
63     <dt><em>readPolicy</em></dt>
64     <dd>configures the readability of the socket</dd>
65     
66     <dt><em>writePolicy</em></dt>
67     <dd>configures the writability of the socket</dd>
68     
69     <dt><em>bufferingPolicy</em></dt>
70     <dd>configures, if and how buffering is configured for a socket</dd>
71     </dl>
72
73  */
74
75 /** \page extend Extending the Library
76  */
77
78 /** \page implementation Implementation notes
79
80     \image html "../../SocketLibrary-classes.png" Class hierarchy
81  */
82
83
84 \f
85 // Local Variables:
86 // mode: c++
87 // mode: flyspell
88 // mode: auto-fill
89 // ispell-local-dictionary: "american"
90 // End: