// -*- C++ -*- //========================================================================== /** * @file MEM_Addr.h * * $Id$ * * @author Nanbor Wang */ //========================================================================== #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" /** * @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 from a and the remote /// . ACE_MEM_Addr (u_short port_number); /// Creates an from a . 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 designate an enpoint withing the same host. int same_host (const ACE_INET_Addr& sap); // These methods are useful after the object has been constructed. /** * Initializes an from a and the * remote . If is enabled then 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 to initialize an from a /// , the remote , and the . 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 address into string /// format. virtual int addr_to_string (ACE_TCHAR buffer[], size_t size, int ipaddr_format = 1) const; /// Initializes the external from the
. 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_; }; #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 */