X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Socket%2FINetProtocol.hh;h=e1116bd3f41a849dae22738e544194ad3a84a1a5;hb=33157146abaca548e145c577a0840cd1bd427789;hp=a5a3cd60fb7af77e8c71e5ecfca5d2290d8f45a4;hpb=c52cd7d87dbb525c1267aad27391b8b7365dbb57;p=senf.git diff --git a/Socket/INetProtocol.hh b/Socket/INetProtocol.hh index a5a3cd6..e1116bd 100644 --- a/Socket/INetProtocol.hh +++ b/Socket/INetProtocol.hh @@ -20,11 +20,15 @@ // Free Software Foundation, Inc., // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -// TODO: what about OOB data? das OOB Data block receipt of normal data ? +/** \file + \brief IPv[46]Protocol public header -// TODO: Implement IP_RECVERR / MSG_ERRQUEUE. This should be placed -// into an additional protocol class since IP_RECVERR is only valid -// for SOCK_DGRAM (UDP) and not SOCK_STREAM (TCP) sockets + \todo what about OOB data? + + \todo Implement IP_RECVERR / MSG_ERRQUEUE. This should be placed + into an additional protocol facet since IP_RECVERR is only valid + for SOCK_DGRAM (UDP) and not SOCK_STREAM (TCP) sockets + */ #ifndef HH_INetProtocol_ #define HH_INetProtocol_ 1 @@ -38,43 +42,109 @@ //#include "INetProtocol.mpp" ///////////////////////////////hh.p//////////////////////////////////////// -namespace satcom { -namespace lib { +namespace senf { + + /// \addtogroup protocol_facets_group + /// @{ + + /** \brief Protocol facet providing IPv4 Addressing related API + + This protocol facet introduces all the socket api protocol members which are related to IPv4 + addressing. + + \todo Is it safe, not to allow setting the interface index on add/drop? what does it do + (especially if the local addres is given ?). What have I been thinking here ??? + + \todo move all multicast-methods into an extra IPv4MulticastProtocol class (it's only + available on datagram sockets) + + \todo the multicast add/remove/iface semantics are quite unclear ... + \todo connect() is only available on stream sockets. We want to access bind() and connet() + via the ClientSocketHandle -> see SocketProtocol todo point + */ class IPv4Protocol : public virtual SocketProtocol { public: - void connect(INet4Address const & address) const; - void bind(INet4Address const & address) const; + void connect(INet4Address const & address) const; ///< Connect to remote address + /**< \todo make this obsolete by allowing access to the + ClientSocketHandle from ConcreateSocketProtocol + \param[in] address Address to connect to */ + void bind(INet4Address const & address) const; ///< Set local socket address + /**< \todo make this obsolete by allowing access to the + ClientSocketHandle from ConcreateSocketProtocol + \param[in] address Address to set */ - unsigned mcTTL() const; - void mcTTL(unsigned value) const; + unsigned mcTTL() const; ///< Return current multicast TTL + void mcTTL(unsigned value) const; ///< Set multicast TTL - bool mcLoop() const; - void mcLoop(bool value) const; - - // TODO: Is it safe, not to allow setting the interface - // index on add/drop? what does it do (especially if - // the local addres is given ?) - - // TODO: move all multicast-methods into an extra - // IPv4MulticastProtocol class + bool mcLoop() const; ///< Return current multicast loopback state + void mcLoop(bool value) const; ///< Set multicast loopback state void mcAddMembership(INet4Address const & mcAddr) const; + ///< Join multicast group + /**< This member will add \a mcAddr to the list of multicast + groups received. The group is joined on the default + interface. + \param[in] mcAddr address of group to join + \todo fix this as soon as we have a real address class + (differend from the sockaddress class */ void mcAddMembership(INet4Address const & mcAddr, INet4Address const & localAddr) const; + ///< join multicast group on a specific address/interface + /**< This member will add \a mcAddr to the list of multicast + groups received. The group is joined on the interface + with the given local address. + \param[in] mcAddr address of group to join + \param[in] localAddr address of interface to join on + \todo fix this as soon as we have a real address class + (differend from the sockaddress class */ void mcDropMembership(INet4Address const & mcAddr) const; + ///< Leave multicast group + /**< This member will remove \a mcAddr from the list of + multicast groups received. The group is left from the + default interface. + \param[in] mcAddr address of group to leave + \todo fix this as soon as we have a real address class + (differend from the sockaddress class */ void mcDropMembership(INet4Address const & mcAddr, INet4Address const & localAddr) const; + ///< leave multicast group on a specific address/interface + /**< This member will remove \a mcAddr from the list of + multicast groups received. The group is left from the + interface with the given local address. + \param[in] mcAddr address of group to leave + \param[in] localAddr address of interface to leave from + \todo fix this as soon as we have a real address class + (differend from the sockaddress class */ void mcIface(std::string iface = std::string()) const; + ///< set default multicast interface of the socket + /**< \param[in] iface name of interface */ }; + /** \brief Protocol facet providing IPv6 Addressing related API + + This protocol facet introduces all the socket api protocol members which are related to IPv6 + addressing. + */ class IPv6Protocol : public virtual SocketProtocol - {}; + { + public: + void connect(INet6SocketAddress const & address) const; ///< Connect to remote address + /**< \todo make this obsolete by allowing access to the + ClientSocketHandle from ConcreateSocketProtocol + \param[in] address Address to connect to */ + void bind(INet6SocketAddress const & address) const; ///< Set local socket address + /**< \todo make this obsolete by allowing access to the + ClientSocketHandle from ConcreateSocketProtocol + \param[in] address Address to set */ + }; + + /// @} -}} +} ///////////////////////////////hh.e//////////////////////////////////////// //#include "INetProtocol.cci" @@ -85,5 +155,6 @@ namespace lib { // Local Variables: // mode: c++ -// c-file-style: "satcom" +// c-file-style: "senf" +// fill-column: 100 // End: