- SocketHandle member | Policy member |
- senf::ClientSocketHandle::read | ReadPolicy::read (\ref senf::ReadPolicyBase) |
- senf::ClientSocketHandle::readfrom | ReadPolicy::readfrom (\ref senf::ReadPolicyBase) |
- senf::ClientSocketHandle::write | WritePolicy::write (\ref senf::WritePolicyBase) |
- senf::ClientSocketHandle::writeto | WritePolicy::writeto (\ref senf::WritePolicyBase) |
- senf::ClientSocketHandle::connect | AddressingPolicy::connect (\ref senf::AddressingPolicyBase) |
- senf::ClientSocketHandle::bind | AddressingPolicy::bind (\ref senf::AddressingPolicyBase) |
- senf::ClientSocketHandle::peer | AddressingPolicy::peer (\ref senf::AddressingPolicyBase) |
- senf::ClientSocketHandle::local | AddressingPolicy::local (\ref senf::AddressingPolicyBase) |
- senf::ClientSocketHandle::rcvbuf | BufferingPolicy::sndbuf (\ref senf::BufferingPolicyBase) |
- senf::ClientSocketHandle::sndbuf | BufferingPolicy::rcvbuf (\ref senf::BufferingPolicyBase) |
- senf::ServerSocketHandle::bind | AddressingPolicy::bind (\ref senf::AddressingPolicyBase) |
- senf::ServerSocketHandle::listen | CommunicationPolicy::listen (\ref senf::CommunicationPolicyBase) |
- senf::ServerSocketHandle::local | AddressingPolicy::local (\ref senf::AddressingPolicyBase) |
- senf::ServerSocketHandle::accept | CommunicationPolicy::accept (\ref senf::CommunicationPolicyBase) |
- senf::ServerSocketHandle::acceptfrom | CommunicationPolicy::accept (\ref senf::CommunicationPolicyBase) |
-
-
- As you can see from this list, not all policy axis directly
- contribute to the SocketHandle interface. However, some policy
- members additionally depend on other policy axis (example:
- AddressingPolicy::connect is only defined if the communication
- policy is ConnectedCommunication).
+ this, find the ClientSocketHandle and/or
+ ServerSocketHandle members you want to change (see \ref
+ ClientSocketHandle and \ref ServerSocketHandle). Not
+ all policy axis directly contribute to the SocketHandle
+ interface. However, some policy members additionally depend on
+ other policy axis (example: AddressingPolicy::connect is only
+ defined if the communication policy is
+ ConnectedCommunication).
\see policy_group
*/
+/** \page glossary Glossary
+
+
+
+ policy | collection of policy classes, one for each
+ policy axis, instantiation of the SocketPolicy template |
+
+ policy axis | one aspect defined in the socket
+ policy, typedef and member of the SocketPolicy template |
+
+ policy class | implementation of a single policy
+ axis, class derived from the axis base class |
+
+ complete policy | socket policy where each
+ axis is specified completely |
+
+ incomplete policy | socket policy, where at
+ least one axis is not fully specified |
+
+ protocol class | definition of a protocol as a
+ class, class inheriting from ConcreteSocketProtocol. |
+
+ protocol facet | a class providing some subset of
+ the protocol interface, class derived from SocketProtocol but not
+ from ConcreteSocketProtocol |
+
+ policy interface | interface directly provided by
+ ClientSocketHandle/ServerSocketHandle and defined through the
+ policy |
+
+
protocol interface | interface provided by the
+ protocol class and accessible via the
+ ProtocolClientSocketHandle::protocol()/ProtocolServerSocketHandle::protocol()
+ member |
+
+
+ */
+
/** \page implementation Implementation notes
+
+ \section class_diagram Class Diagram
\image html SocketLibrary-classes.png
+
+ \section impl_notes Arbitrary Implementation Notes
+
+ \li The implementation tries to isolate the library user as much
+ as possible from the system header files since those headers
+ define a lot of define symbols and introduce a host of symbols
+ into the global namespace. This is, why some classes define
+ their own \c enum types to replace system defined define
+ constants. This also precludes inlining some functionality.
+
+ \li To reduce overhead, template functions/members which are
+ more than one-liners are often implemented in terms of a
+ non-template function/member. This is also used to further the
+ isolation from system headers as defined above (template code
+ must always be included into every compilation unit together
+ with all headers need for the implementation).
*/
+}
+
// Local Variables:
// mode: c++