X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Socket%2FProtocols%2FINet%2FUDPSocketHandle.hh;h=6ed334c625937149e09ba7e490580fd25f283c5b;hb=6f50bf49e282c0528f51faa0a245bbfa2b867399;hp=1a1e93d1ba96c04ce31e32d0776369b2e985ee7b;hpb=2c4c9deecc7491fbfc916aeb41074dcb76e8a2c2;p=senf.git diff --git a/Socket/Protocols/INet/UDPSocketHandle.hh b/Socket/Protocols/INet/UDPSocketHandle.hh index 1a1e93d..6ed334c 100644 --- a/Socket/Protocols/INet/UDPSocketHandle.hh +++ b/Socket/Protocols/INet/UDPSocketHandle.hh @@ -1,9 +1,9 @@ // $Id$ // // Copyright (C) 2006 -// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS) -// Kompetenzzentrum fuer Satelitenkommunikation (SatCom) -// Stefan Bund +// Fraunhofer Institute for Open Communication Systems (FOKUS) +// Competence Center NETwork research (NET), St. Augustin, GERMANY +// Stefan Bund // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -33,12 +33,13 @@ // Custom includes #include "INetProtocol.hh" #include "UDPProtocol.hh" -#include "Socket/Protocols/BSDSocketProtocol.hh" -#include "Socket/FramingPolicy.hh" -#include "Socket/CommunicationPolicy.hh" -#include "Socket/ReadWritePolicy.hh" -#include "Socket/BufferingPolicy.hh" -#include "Socket/ProtocolClientSocketHandle.hh" +#include "MulticastProtocol.hh" +#include "../../../Socket/Protocols/BSDSocketProtocol.hh" +#include "../../../Socket/Protocols/DatagramSocketProtocol.hh" +#include "../../../Socket/FramingPolicy.hh" +#include "../../../Socket/CommunicationPolicy.hh" +#include "../../../Socket/ReadWritePolicy.hh" +#include "../../../Socket/ProtocolClientSocketHandle.hh" //#include "UDPSocketHandle.mpp" ///////////////////////////////hh.p//////////////////////////////////////// @@ -53,22 +54,21 @@ namespace senf { DatagramFramingPolicy, UnconnectedCommunicationPolicy, ReadablePolicy, - WriteablePolicy, - SocketBufferingPolicy + WriteablePolicy >::policy UDPv4Socket_Policy; ///< Socket Policy of the UDPv4 Protocol /** \brief IPv4 UDP Socket Protocol \par Socket Handle typedefs: - \ref UDPv4ClientSocketHandle (ProtocolClientSocketHandle) + \ref UDPv4ClientSocketHandle (ProtocolClientSocketHandle) \par Policy Interface: - ClientSocketHandle::read(), ClientSocketHandle::write(), ClientSocketHandle::bind(), - ClientSocketHandle::local(), ClientSocketHandle::connect(), ClientSocketHandle::peer(), - ClientSocketHandle::rcvbuf(), ClientSocketHandle::sndbuf() + ClientSocketHandle::read(), ClientSocketHandle::readfrom(), + ClientSocketHandle::writeto(), ClientSocketHandle::bind(), ClientSocketHandle::local(), + ClientSocketHandle::rcvbuf(), ClientSocketHandle::sndbuf() \par Address Type: - INet4Address + INet4Address UDPv4SocketProtocol provides an internet protocol stream socket based on the UDP protocol and IPv4 addressing. @@ -79,12 +79,14 @@ namespace senf { \see UDPv6SocketProtocol */ class UDPv4SocketProtocol - : public ConcreteSocketProtocol, + : public ConcreteSocketProtocol, public IPv4Protocol, public UDPProtocol, + public MulticastProtocol, + public INet4MulticastProtocol, public BSDSocketProtocol, - public AddressableBSDSocketProtocol, - public senf::pool_alloc_mixin + public DatagramSocketProtocol, + public AddressableBSDSocketProtocol { public: /////////////////////////////////////////////////////////////////////////// @@ -97,22 +99,17 @@ namespace senf { /**< \note This member is implicitly called from the ProtocolClientSocketHandle::ProtocolClientSocketHandle() constructor */ - void init_client(INet4Address const & address) const; - ///< Create client socket and connect - /**< Creates a new client socket and connects to the given + void init_client(INet4SocketAddress const & address) const; + ///< Create client socket and bind + /**< Creates a new client socket and bind to the given address. - - \param[in] address remote address to connect to */ + \param[in] address local address to bind to */ /**< \note This member is implicitly called from the - ProtocolClientSocketHandle::ProtocolClientSocketHandle() + ProtocolClientSocketHandle::ProtocolClientSocketHandle() constructor */ ///@} - ///\name Abstract Interface Implementation - std::auto_ptr clone() const; - - ///@} }; typedef ProtocolClientSocketHandle UDPv4ClientSocketHandle; @@ -127,13 +124,13 @@ namespace senf { \par Socket Handle typedefs: \ref UDPv6ClientSocketHandle (ProtocolClientSocketHandle) - \par Policy Interface: - ClientSocketHandle::read(), ClientSocketHandle::write(), ClientSocketHandle::bind(), - ClientSocketHandle::local(), ClientSocketHandle::connect(), ClientSocketHandle::peer(), - ClientSocketHandle::rcvbuf(), ClientSocketHandle::sndbuf() + \par Policy Interface: + ClientSocketHandle::read(), ClientSocketHandle::readfrom(), + ClientSocketHandle::writeto(), ClientSocketHandle::bind(), ClientSocketHandle::local(), + ClientSocketHandle::rcvbuf(), ClientSocketHandle::sndbuf() \par Address Type: - INet6Address + INet6Address UDPv6SocketProtocol provides an internet protocol stream socket based on the UDP protocol and IPv6 addressing. @@ -144,12 +141,14 @@ namespace senf { \see UDPv4SocketProtocol */ class UDPv6SocketProtocol - : public ConcreteSocketProtocol, + : public ConcreteSocketProtocol, public IPv6Protocol, public UDPProtocol, + public MulticastProtocol, + public INet6MulticastProtocol, public BSDSocketProtocol, - public AddressableBSDSocketProtocol, - public senf::pool_alloc_mixin + public DatagramSocketProtocol, + public AddressableBSDSocketProtocol { public: /////////////////////////////////////////////////////////////////////////// @@ -164,20 +163,14 @@ namespace senf { constructor */ void init_client(INet6SocketAddress const & address) const; ///< Create client socket and connect - /**< Creates a new client socket and connects to the given + /**< Creates a new client socket and bind to the given address. - - \param[in] address remote address to connect to */ + \param[in] address local address to bind to */ /**< \note This member is implicitly called from the ProtocolClientSocketHandle::ProtocolClientSocketHandle() constructor */ ///@} - ///\name Abstract Interface Implementation - - std::auto_ptr clone() const; - - ///@} }; typedef ProtocolClientSocketHandle UDPv6ClientSocketHandle;