4 // Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS)
5 // Kompetenzzentrum fuer Satelitenkommunikation (SatCom)
6 // Stefan Bund <stefan.bund@fokus.fraunhofer.de>
8 // This program is free software; you can redistribute it and/or modify
9 // it under the terms of the GNU General Public License as published by
10 // the Free Software Foundation; either version 2 of the License, or
11 // (at your option) any later version.
13 // This program is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 // GNU General Public License for more details.
18 // You should have received a copy of the GNU General Public License
19 // along with this program; if not, write to the
20 // Free Software Foundation, Inc.,
21 // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
24 \brief UDPProtocol public header
27 #ifndef HH_UDPProtocol_
28 #define HH_UDPProtocol_ 1
31 #include "SocketProtocol.hh"
32 #include "INetAddressing.hh"
34 //#include "UDPProtocol.mpp"
35 ///////////////////////////////hh.p////////////////////////////////////////
39 /// \addtogroup protocol_facets_group
42 /** \brief Protocol facat to support UDP operations
44 This protocol facet provides all those protocol functions,
45 which are available on any UDP socket.
47 \todo the multicast add/remove/iface semantics are quite unclear ...
50 : public virtual SocketProtocol
53 unsigned mcTTL() const; ///< Return current multicast TTL
54 void mcTTL(unsigned value) const; ///< Set multicast TTL
56 bool mcLoop() const; ///< Return current multicast loopback state
57 void mcLoop(bool value) const; ///< Set multicast loopback state
59 void mcAddMembership(INet4Address const & mcAddr) const;
60 ///< Join multicast group
61 /**< This member will add \a mcAddr to the list of multicast
62 groups received. The group is joined on the default
64 \param[in] mcAddr address of group to join
65 \todo fix this as soon as we have a real address class
66 (different from the sockaddress class */
67 void mcAddMembership(INet4Address const & mcAddr, INet4Address const & localAddr) const;
68 ///< join multicast group on a specific address/interface
69 /**< This member will add \a mcAddr to the list of multicast
70 groups received. The group is joined on the interface
71 with the given local address.
72 \param[in] mcAddr address of group to join
73 \param[in] localAddr address of interface to join on
74 \todo fix this as soon as we have a real address class
75 (different from the sockaddress class */
77 void mcDropMembership(INet4Address const & mcAddr) const;
78 ///< Leave multicast group
79 /**< This member will remove \a mcAddr from the list of
80 multicast groups received. The group is left from the
82 \param[in] mcAddr address of group to leave
83 \todo fix this as soon as we have a real address class
84 (different from the sockaddress class */
85 void mcDropMembership(INet4Address const & mcAddr, INet4Address const & localAddr) const;
86 ///< leave multicast group on a specific address/interface
87 /**< This member will remove \a mcAddr from the list of
88 multicast groups received. The group is left from the
89 interface with the given local address.
90 \param[in] mcAddr address of group to leave
91 \param[in] localAddr address of interface to leave from
92 \todo fix this as soon as we have a real address class
93 (different from the sockaddress class */
95 void mcIface(std::string iface = std::string()) const;
96 ///< set default multicast interface of the socket
97 /**< \param[in] iface name of interface */
100 ///\name Abstract Interface Implementation
103 unsigned available() const;
112 ///////////////////////////////hh.e////////////////////////////////////////
113 //#include "UDPProtocol.cci"
114 //#include "UDPProtocol.ct"
115 //#include "UDPProtocol.cti"
122 // c-file-style: "senf"
123 // indent-tabs-mode: nil
124 // ispell-local-dictionary: "american"