diff options
author | coryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2000-11-01 22:17:39 +0000 |
---|---|---|
committer | coryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2000-11-01 22:17:39 +0000 |
commit | 53284e215e3d3351a7d7e9c4b68f14b427fb4377 (patch) | |
tree | 97236ece363cff48fd287c780db4290da39b02cb /ace/SOCK_Dgram_Mcast.h | |
parent | 7b7c52ad2abd228138ba1a948d5e28bf6dc3b880 (diff) | |
download | ATCD-53284e215e3d3351a7d7e9c4b68f14b427fb4377.tar.gz |
ChangeLogTag:Wed Nov 1 14:11:48 2000 Carlos O'Ryan <coryan@uci.edu>
Diffstat (limited to 'ace/SOCK_Dgram_Mcast.h')
-rw-r--r-- | ace/SOCK_Dgram_Mcast.h | 157 |
1 files changed, 82 insertions, 75 deletions
diff --git a/ace/SOCK_Dgram_Mcast.h b/ace/SOCK_Dgram_Mcast.h index 1d11961d3ef..7d9269f0bd4 100644 --- a/ace/SOCK_Dgram_Mcast.h +++ b/ace/SOCK_Dgram_Mcast.h @@ -1,20 +1,17 @@ /* -*- C++ -*- */ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// ace -// -// = FILENAME -// SOCK_Dgram_Mcast.h -// -// = AUTHORS -// Irfan Pyrali <irfan@cs.wustl.edu>, -// Tim Harrison <harrison@cs.wustl.edu>, and -// Douglas C. Schmidt <schmidt@cs.wustl.edu> -// -// ============================================================================ + +//============================================================================= +/** + * @file SOCK_Dgram_Mcast.h + * + * $Id$ + * + * @author Irfan Pyrali <irfan@cs.wustl.edu> + * @author Tim Harrison <harrison@cs.wustl.edu> + * @author and Douglas C. Schmidt <schmidt@cs.wustl.edu> + */ +//============================================================================= + #ifndef ACE_SOCK_DGRAM_MCAST_H #define ACE_SOCK_DGRAM_MCAST_H @@ -28,99 +25,111 @@ #include "ace/INET_Addr.h" +/** + * @class ACE_SOCK_Dgram_Mcast + * + * @brief Defines the member functions for the ACE socket wrapper + * for UDP/IP multicast. + */ class ACE_Export ACE_SOCK_Dgram_Mcast : public ACE_SOCK_Dgram { - // = TITLE - // Defines the member functions for the ACE socket wrapper - // for UDP/IP multicast. public: // = Initialization routine. + /** + * Note that there is no public <open> method. Therefore, this + * class cannot be used unless you <subscribe> to a multicast group. + * If you just want to send (and not listen) to a multicast group, + * use <ACE_SOCK_Dgram> or <ACE_SOCK_CODgram> instead. + */ ACE_SOCK_Dgram_Mcast (void); - // Note that there is no public <open> method. Therefore, this - // class cannot be used unless you <subscribe> to a multicast group. - // If you just want to send (and not listen) to a multicast group, - // use <ACE_SOCK_Dgram> or <ACE_SOCK_CODgram> instead. + /// Default dtor. ~ACE_SOCK_Dgram_Mcast (void); - // Default dtor. // = Multicast group management routines. + /** + * This is a BSD-style method (i.e., no QoS) for joining a multicast + * group. The network interface device driver is instructed to + * accept datagrams with <mcast_addr> multicast addresses. If the + * socket has already been opened, <subscribe> closes the socket and + * opens a new socket bound to the <mcast_addr>. + * + * The <net_if> interface is hardware specific, e.g., use "netstat + * -i" to find whether your interface is, such as "le0" or something + * else. If net_if == 0, <subscribe> uses the default mcast + * interface. Returns: -1 if the call fails. + * + * Note that some platforms, such as pSoS, support only number, not + * names, for network interfaces. For these platforms, just give + * these numbers in alphanumeric form and <subscribe> will convert + * them into numbers via <ACE_OS::atoi>. + */ int subscribe (const ACE_INET_Addr &mcast_addr, int reuse_addr = 1, const ACE_TCHAR *net_if = 0, int protocol_family = PF_INET, int protocol = 0); - // This is a BSD-style method (i.e., no QoS) for joining a multicast - // group. The network interface device driver is instructed to - // accept datagrams with <mcast_addr> multicast addresses. If the - // socket has already been opened, <subscribe> closes the socket and - // opens a new socket bound to the <mcast_addr>. - // - // The <net_if> interface is hardware specific, e.g., use "netstat - // -i" to find whether your interface is, such as "le0" or something - // else. If net_if == 0, <subscribe> uses the default mcast - // interface. Returns: -1 if the call fails. - // - // Note that some platforms, such as pSoS, support only number, not - // names, for network interfaces. For these platforms, just give - // these numbers in alphanumeric form and <subscribe> will convert - // them into numbers via <ACE_OS::atoi>. + /** + * Leave a multicast group identified by <mcast_addr>. The <net_if> + * interface is hardware specific. Use something like "netstat -i" + * to find whether your interface is, such as "le0" or something + * else. If <net_if> == 0, <subscribe> uses the default mcast + * interface. Returns: -1 if the call fails. + * + * Note that some platforms, such as pSoS, support only number, not + * names, for network interfaces. For these platforms, just give + * these numbers in alphanumeric form and <subscribe> will convert + * them into numbers via <ACE_OS::atoi>. + */ int unsubscribe (const ACE_INET_Addr &mcast_addr, const ACE_TCHAR *net_if = 0, int protocol_family = PF_INET, int protocol = 0); - // Leave a multicast group identified by <mcast_addr>. The <net_if> - // interface is hardware specific. Use something like "netstat -i" - // to find whether your interface is, such as "le0" or something - // else. If <net_if> == 0, <subscribe> uses the default mcast - // interface. Returns: -1 if the call fails. - // - // Note that some platforms, such as pSoS, support only number, not - // names, for network interfaces. For these platforms, just give - // these numbers in alphanumeric form and <subscribe> will convert - // them into numbers via <ACE_OS::atoi>. + /// Unsubscribe from a multicast group. Returns -1 if the call + /// fails. int unsubscribe (void); - // Unsubscribe from a multicast group. Returns -1 if the call - // fails. // = Data transfer routines. + /// Send <n> bytes in <buf>. ssize_t send (const void *buf, size_t n, int flags = 0) const; - // Send <n> bytes in <buf>. + /// Send <n> <iovecs>. ssize_t send (const iovec iov[], size_t n, int flags = 0) const; - // Send <n> <iovecs>. // = Options. - int set_option (int option, + /** + * Set an ip option that takes a char as input, such as + * <IP_MULTICAST_LOOP> or <IP_MULTICAST_TTL>. This is just a more + * concise nice interface to a subset of possible + * <ACE_SOCK::set_option> calls. Returns 0 on success, -1 on + * failure. + */ + int set_option (int option, char optval); - // Set an ip option that takes a char as input, such as - // <IP_MULTICAST_LOOP> or <IP_MULTICAST_TTL>. This is just a more - // concise nice interface to a subset of possible - // <ACE_SOCK::set_option> calls. Returns 0 on success, -1 on - // failure. + /// Dump the state of an object. void dump (void) const; - // Dump the state of an object. + /// Declare the dynamic allocation hooks. ACE_ALLOC_HOOK_DECLARE; - // Declare the dynamic allocation hooks. private: // = Disable public <open> method to ensure class used properly. + /// Not publically visible. int open (const ACE_Addr &mcast_addr, int protocol_family = PF_INET, int protocol = 0, int reuse_addr = 0); - // Not publically visible. + /// Not publically visible. int open (const ACE_Addr &mcast_addr, const ACE_QoS_Params &qos_params, int protocol_family = PF_INET, @@ -129,24 +138,23 @@ private: ACE_SOCK_GROUP g = 0, u_long flags = 0, int reuse_addr = 0); - // Not publically visible. + /// Subscribe to the multicast interface using BSD-style semantics + /// (no QoS). int subscribe_ifs (const ACE_INET_Addr &mcast_addr, const ACE_TCHAR *net_if, int protocol_family, int protocol, int reuse_addr); - // Subscribe to the multicast interface using BSD-style semantics - // (no QoS). + /// Unsubscribe to multicast interfaces subscribed to previously by + /// <subscribe_ifs>. int unsubscribe_ifs (const ACE_INET_Addr &mcast_addr, const ACE_TCHAR *net_if = 0, int protocol_family = PF_INET, int protocol = 0); - // Unsubscribe to multicast interfaces subscribed to previously by - // <subscribe_ifs>. - // = Disable public use of <ACE_SOCK_Dgram::send>s + // = Disable public use of <ACE_SOCK_Dgram::send>s // This forces <ACE_SOCK_Dgram_Mcast::send>s inline. ssize_t send (const void *buf, @@ -159,22 +167,22 @@ private: int flags = 0) const; protected: + /// Initialize the <multicast_address_> IP address. int make_multicast_address (const ACE_INET_Addr &mcast_addr, const ACE_TCHAR *net_if = ACE_LIB_TEXT ("le0")); - // Initialize the <multicast_address_> IP address. + /// Initialize a multicast address. This method factors out common + /// code called by <make_multicast_address> and <subscribe>. int make_multicast_address_i (const ACE_INET_Addr &mcast_addr, ip_mreq& multicast_address, const ACE_TCHAR *net_if = ACE_LIB_TEXT ("le0")); - // Initialize a multicast address. This method factors out common - // code called by <make_multicast_address> and <subscribe>. + /// A copy of the address that we use to <send> multicasts. ACE_INET_Addr mcast_addr_; - // A copy of the address that we use to <send> multicasts. + /// IP address of the interface upon which we're receiving + /// multicasts. ip_mreq mcast_request_if_; - // IP address of the interface upon which we're receiving - // multicasts. }; #if !defined (ACE_LACKS_INLINE_FUNCTIONS) @@ -183,4 +191,3 @@ protected: #include "ace/post.h" #endif /* ACE_SOCK_DGRAM_MCAST_H */ - |