X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Socket%2FSocketProtocol.hh;h=7b4b48780556138707a7472f8d33bb4fe208b482;hb=aec1302f91b51edb58f8a97985ab2e0aa9c8db66;hp=4dbd95bd41361d989748cebb29f45eabfb354317;hpb=c52cd7d87dbb525c1267aad27391b8b7365dbb57;p=senf.git diff --git a/Socket/SocketProtocol.hh b/Socket/SocketProtocol.hh index 4dbd95b..7b4b487 100644 --- a/Socket/SocketProtocol.hh +++ b/Socket/SocketProtocol.hh @@ -20,19 +20,63 @@ // Free Software Foundation, Inc., // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +/** \file + + \idea We should optimize the protocol handling. Allocating a + protocol instance for every socket body seems quite + wasteful. However I have no idea, how to access the socket + handle from within the protocol interface if the protocol + class is a singleton. Maybe, we'll have some other idea to + reduce the number of heap allocations (like deriving the + SocketProtocol class (private? protected?) from the + SocketBody. (private inheritance is a form of 'has-a' instead + of 'is-a' which would fit very well here). This would allow to + reduce the number of heap-allocations per socket to one which + is good. + */ + +/** \defgroup protocol_group The Protocol Classes + + \image html Protocols.png + + The socket handle classes and templates only implement the most + important socket API methods using the policy framework. To access + the complete API, the protocol interface is provided. Access to + the protocol interface is only possible via + senf::ProtocolClientSocketHandle and + senf::ProtocolServerSocketHandle which have the necessary \c + protocol() member. This member returns a reference to the protocol + class instance which contains members covering all the API + functions (mostly setsockopt/getsockopt related calls but there + may be more, this is completely up to the implementor of the + protocol class) not found in the SocketHandle interface. The + protocol interface is specific to the protocol. It's + implementation is quite free. The standard protocols are + implemented using a simple multiple-inheritance hierarchy as shown + above. + + Since the protocol class is protocol specific (how intelligent + ...), the protocol class also defines the complete socket policy + to be used with it's protocol. Complete meaning, that every policy + axis must be assigned it's the most specific (that is derived) + policy class to be used with the protocol. + */ + #ifndef HH_SocketProtocol_ #define HH_SocketProtocol_ 1 // Custom includes #include -// TODO: this is really bad. This includes and predefs should be restructured +/** \fixme this is not nice. The includes and predefs should be restructured */ #include "SocketHandle.ih" //#include "SocketProtocol.mpp" ///////////////////////////////hh.p//////////////////////////////////////// -namespace satcom { -namespace lib { +namespace senf { + + /// \addtogroup protocol_group + /// @{ class SocketPolicyBase; @@ -107,7 +151,8 @@ namespace lib { }; -}} + /// @} +} ///////////////////////////////hh.e//////////////////////////////////////// #include "SocketProtocol.cci" @@ -118,5 +163,5 @@ namespace lib { // Local Variables: // mode: c++ -// c-file-style: "satcom" +// c-file-style: "senf" // End: