diff options
author | William R. Otte <wotte@dre.vanderbilt.edu> | 2006-07-24 15:50:30 +0000 |
---|---|---|
committer | William R. Otte <wotte@dre.vanderbilt.edu> | 2006-07-24 15:50:30 +0000 |
commit | c44379cc7d9c7aa113989237ab0f56db12aa5219 (patch) | |
tree | 66a84b20d47f2269d8bdc6e0323f338763424d3a /ACE/ace/MEM_Addr.h | |
parent | 3aff90f4a822fcf5d902bbfbcc9fa931d6191a8c (diff) | |
download | ATCD-c44379cc7d9c7aa113989237ab0f56db12aa5219.tar.gz |
Repo restructuring
Diffstat (limited to 'ACE/ace/MEM_Addr.h')
-rw-r--r-- | ACE/ace/MEM_Addr.h | 156 |
1 files changed, 156 insertions, 0 deletions
diff --git a/ACE/ace/MEM_Addr.h b/ACE/ace/MEM_Addr.h new file mode 100644 index 00000000000..3d50e5d06b3 --- /dev/null +++ b/ACE/ace/MEM_Addr.h @@ -0,0 +1,156 @@ +// -*- C++ -*- + +//========================================================================== +/** + * @file MEM_Addr.h + * + * $Id$ + * + * @author Nanbor Wang <nanbor@cs.wustl.edu> + */ +//========================================================================== + + +#ifndef ACE_MEM_ADDR_H +#define ACE_MEM_ADDR_H +#include /**/ "ace/pre.h" + +#include "ace/ACE_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#if (ACE_HAS_POSITION_INDEPENDENT_POINTERS == 1) + +#include "ace/INET_Addr.h" + +ACE_BEGIN_VERSIONED_NAMESPACE_DECL + +/** + * @class ACE_MEM_Addr + * + * @brief Defines a C++ wrapper facade for the shared memory transport + * address family format. + */ +class ACE_Export ACE_MEM_Addr : public ACE_Addr +{ +public: + // = Initialization methods. + /// Default constructor. + ACE_MEM_Addr (void); + + /// Copy constructor. + ACE_MEM_Addr (const ACE_MEM_Addr &); + + /// Creates an ACE_MEM_Addr from a @a port_number + ACE_MEM_Addr (u_short port_number); + + /// Creates an ACE_MEM_Addr from a @a port_name. + explicit ACE_MEM_Addr (const ACE_TCHAR port_name[]); + + /// Default dtor. + ~ACE_MEM_Addr (void); + + // = Direct initialization methods. + + /// Default initialization routine. + int initialize_local (u_short port); + + /// Check if @a sap designates an endpoint on the same host. + int same_host (const ACE_INET_Addr& sap); + + // These methods are useful after the object has been constructed. + + /** + * Initializes an ACE_MEM_Addr from a @a port_number. If @a encode + * is enabled then @a port_number is converted into network byte order, + * otherwise it is assumed to be in network byte order already and + * are passed straight through. + */ + int set (u_short port_number, + int encode = 1); + + /// Uses <getservbyname> to initialize an ACE_MEM_Addr from a + /// <port_name>, the remote <host_name>, and the <protocol>. + int set (const ACE_TCHAR port_name[]); + + /// Return a pointer to the underlying network address. + virtual void *get_addr (void) const; + + /// Set a pointer to the address. + virtual void set_addr (void *, int len); + + /// Transform the external ACE_MEM_Addr address into string + /// format. + virtual int addr_to_string (ACE_TCHAR buffer[], + size_t size, + int ipaddr_format = 1) const; + + /// Initializes the external ACE_MEM_Addr from the @a address. + virtual int string_to_addr (const ACE_TCHAR address[]); + + /// Sets the port number. + void set_port_number (u_short, + int encode = 1); + + /// Return the port number, converting it into host byte order. + u_short get_port_number (void) const; + + /// Return the character representation of the hostname. + int get_host_name (ACE_TCHAR hostname[], + size_t hostnamelen) const; + + /** + * Return the character representation of the hostname (this version + * is non-reentrant since it returns a pointer to a static data + * area). + */ + const char *get_host_name (void) const; + + /// Return the "dotted decimal" external address. + const char *get_host_addr (void) const; + + /// Return the 4-byte external IP address, converting it into host byte + /// order. + ACE_UINT32 get_ip_address (void) const; + + const ACE_INET_Addr &get_remote_addr (void) const; + const ACE_INET_Addr &get_local_addr (void) const; + + /// Compare two addresses for equality. The addresses are considered + /// equal if they contain the same IP address and port number. + bool operator == (const ACE_MEM_Addr &SAP) const; + bool operator == (const ACE_INET_Addr &SAP) const; + + /// Compare two addresses for inequality. + bool operator != (const ACE_MEM_Addr &SAP) const; + bool operator != (const ACE_INET_Addr &SAP) const; + + /// Computes and returns hash value. + virtual u_long hash (void) const; + + /// Dump the state of an object. + void dump (void) const; + + /// Declare the dynamic allocation hooks. + ACE_ALLOC_HOOK_DECLARE; + +private: + /// External INET addr used for identifying host. + ACE_INET_Addr external_; + + /// Internal INET addr for accepting/connecting. + ACE_INET_Addr internal_; +}; + +ACE_END_VERSIONED_NAMESPACE_DECL + +#if defined (__ACE_INLINE__) +#include "ace/MEM_Addr.inl" +#endif /* __ACE_INLINE__ */ + +#endif /* ACE_HAS_POSITION_INDEPENDENT_POINTERS == 1 */ + +#include /**/ "ace/post.h" +#endif /* ACE_MEM_ADDR_H */ |