summaryrefslogtreecommitdiff
path: root/ACE/ace/SOCK_Dgram_Bcast.h
diff options
context:
space:
mode:
authorWilliam R. Otte <wotte@dre.vanderbilt.edu>2008-03-04 14:51:23 +0000
committerWilliam R. Otte <wotte@dre.vanderbilt.edu>2008-03-04 14:51:23 +0000
commit99aa8c60282c7b8072eb35eb9ac815702f5bf586 (patch)
treebda96bf8c3a4c2875a083d7b16720533c8ffeaf4 /ACE/ace/SOCK_Dgram_Bcast.h
parentc4078c377d74290ebe4e66da0b4975da91732376 (diff)
downloadATCD-99aa8c60282c7b8072eb35eb9ac815702f5bf586.tar.gz
undoing accidental deletion
Diffstat (limited to 'ACE/ace/SOCK_Dgram_Bcast.h')
-rw-r--r--ACE/ace/SOCK_Dgram_Bcast.h140
1 files changed, 140 insertions, 0 deletions
diff --git a/ACE/ace/SOCK_Dgram_Bcast.h b/ACE/ace/SOCK_Dgram_Bcast.h
new file mode 100644
index 00000000000..deda3297339
--- /dev/null
+++ b/ACE/ace/SOCK_Dgram_Bcast.h
@@ -0,0 +1,140 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file SOCK_Dgram_Bcast.h
+ *
+ * $Id$
+ *
+ * @author Doug Schmidt
+ */
+//=============================================================================
+
+
+#ifndef ACE_SOCK_DGRAM_BCAST_H
+#define ACE_SOCK_DGRAM_BCAST_H
+#include /**/ "ace/pre.h"
+
+#include /**/ "ace/ACE_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "ace/SOCK_Dgram.h"
+#include "ace/INET_Addr.h"
+
+ACE_BEGIN_VERSIONED_NAMESPACE_DECL
+
+/**
+ * @class ACE_Bcast_Node
+ *
+ * @brief Linked list of broadcast interfaces.
+ */
+class ACE_Export ACE_Bcast_Node
+{
+public:
+ /// Default constructor.
+ ACE_Bcast_Node (ACE_INET_Addr &,
+ ACE_Bcast_Node *);
+
+ /// Destructor.
+ ~ACE_Bcast_Node (void);
+
+ /// Broadcast address for the interface.
+ ACE_INET_Addr bcast_addr_;
+
+ /// Pointer to the next interface in the chain.
+ ACE_Bcast_Node *next_;
+};
+
+/**
+ * @class ACE_SOCK_Dgram_Bcast
+ *
+ * @brief Defines the member functions for the ACE_SOCK datagram
+ * abstraction.
+ */
+class ACE_Export ACE_SOCK_Dgram_Bcast : public ACE_SOCK_Dgram
+{
+public:
+ // = Initialization and termination methods.
+ /// Default constructor.
+ ACE_SOCK_Dgram_Bcast (void);
+
+ ACE_SOCK_Dgram_Bcast (const ACE_Addr &local,
+ int protocol_family = PF_INET,
+ int protocol = 0,
+ int reuse_addr = 0,
+ const ACE_TCHAR *host_name = 0);
+
+ /// Default dtor.
+ ~ACE_SOCK_Dgram_Bcast (void);
+
+ // Initiate a connectionless datagram broadcast endpoint.
+
+ /// Initiate a connectionless datagram broadcast endpoint.
+ int open (const ACE_Addr &local,
+ int protocol_family = PF_INET,
+ int protocol = 0,
+ int reuse_addr = 0,
+ const ACE_TCHAR *host_name = 0);
+
+ /// Close up and release dynamically allocated resources.
+ int close (void);
+
+ /// Broadcast the datagram to every interface. Returns the average
+ /// number of bytes sent.
+ ssize_t send (const void *buf,
+ size_t n,
+ u_short portnum,
+ int flags = 0) const;
+
+ /// Broadcast the @c iov datagrams to every interface. Returns the
+ /// average number of bytes sent.
+ ssize_t send (const iovec iov[],
+ int n,
+ u_short portnum,
+ int flags = 0) const;
+
+ /// Broadcast an N byte datagram to ADDR (note that addr must be
+ /// preassigned to the broadcast address of the subnet...).
+ ssize_t send (const void *buf,
+ size_t n,
+ const ACE_Addr &addr,
+ int flags = 0) const;
+
+ /**
+ * Broadcast an @a iovec of size @a n to @a addr as a datagram (note
+ * that addr must be preassigned to the broadcast address of the
+ * subnet...)
+ */
+ ssize_t send (const iovec iov[],
+ int n,
+ const ACE_Addr &addr,
+ int flags = 0) const;
+
+ /// Dump the state of an object.
+ void dump (void) const;
+
+ /// Declare the dynamic allocation hooks.
+ ACE_ALLOC_HOOK_DECLARE;
+
+private:
+ /// Make broadcast available for Datagram socket.
+ int mk_broadcast (const ACE_TCHAR *host_name);
+
+ /// Points to the head of the list of broadcast interfaces.
+ ACE_Bcast_Node *if_list_;
+
+ /// Do not allow this function to percolate up to this interface...
+ int get_remote_addr (ACE_Addr &) const;
+};
+
+ACE_END_VERSIONED_NAMESPACE_DECL
+
+#if defined (__ACE_INLINE__)
+#include "ace/SOCK_Dgram_Bcast.inl"
+#endif /* __ACE_INLINE__ */
+
+#include /**/ "ace/post.h"
+#endif /* ACE_SOCK_DGRAM_BCAST_H */