// $Id$ // ============================================================================ // // = LIBRARY // ace // // = FILENAME // ATM_Addr.h // // = AUTHOR // Joe Hoffert // // ============================================================================ #ifndef ACE_ATM_ADDR_H #define ACE_ATM_ADDR_H #include "ace/pre.h" #include "ace/ACE.h" #include "ace/Addr.h" #if !defined (ACE_LACKS_PRAGMA_ONCE) # pragma once #endif /* ACE_LACKS_PRAGMA_ONCE */ #if defined (ACE_HAS_FORE_ATM_XTI) typedef ATMSAPAddress ATM_Addr; #elif defined (ACE_HAS_FORE_ATM_WS2) #define FORE_NAME_SPACE NS_ALL typedef struct sockaddr_atm ATM_Addr; #elif defined (ACE_HAS_LINUX_ATM) #include "atm.h" //pbrandao:as Linux has this 2 structs separeted we "link it" here typedef struct _linux_atm_addr { struct sockaddr_atmsvc sockaddratmsvc; struct atm_sap atmsap; } ATM_Addr; #else typedef int ATM_Addr; #endif /* ACE_HAS_FORE_ATM_XTI/ACE_HAS_FORE_ATM_WS2/ACE_HAS_LINUX_ATM */ class ACE_Export ACE_ATM_Addr : public ACE_Addr { // = TITLE // Defines the ATM domain address family address format. public: // Constants used for ATM options static const long LINE_RATE; static const int OPT_FLAGS_CPID; static const int OPT_FLAGS_PMP; static const int DEFAULT_SELECTOR; // = Initialization methods. ACE_ATM_Addr (unsigned char selector = DEFAULT_SELECTOR); // Default constructor. ACE_ATM_Addr (const ACE_ATM_Addr &, unsigned char selector = DEFAULT_SELECTOR); // Copy constructor. ACE_ATM_Addr (const ATM_Addr *, unsigned char selector = DEFAULT_SELECTOR); // Creates an from an ATMSAPAddress structure. This // is vendor specific (FORE systems). May need to change when other // vendors are supported. ACE_ATM_Addr (const ACE_TCHAR sap[], unsigned char selector = DEFAULT_SELECTOR); // Initializes an from the which can be // "atm-address" (e.g., // "47.0005.80.ffe100.0000.f20f.2200.0020480694f9.00") or "hostname" // (e.g., "frisbee.cs.wustl.edu"). ~ACE_ATM_Addr (void); // Default dtor. // = Initialization methods (useful after object construction). void init (unsigned char selector = DEFAULT_SELECTOR); // Default initialization for non-address values (e.g., // t_atm_sap_addr.SVE_tag_addr, t_atm_sap_addr.SVE_tag_selector) int set (const ACE_ATM_Addr &, unsigned char selector = DEFAULT_SELECTOR); // Initializes from another . int set (const ATM_Addr *, unsigned char selector = DEFAULT_SELECTOR); // Initializes an from an ATMSAPAddress/sockaddr_atm // structure. This is vendor specific (FORE systems). May need to // change when other vendors are supported. int set (const ACE_TCHAR sap[], unsigned char selector = DEFAULT_SELECTOR); // Initializes an from the which can be // "atm-address" (e.g., // "47.0005.80.ffe100.0000.f20f.2200.0020480694f9.00") or "hostname" // (e.g., "frisbee.cs.wustl.edu"). virtual int string_to_addr (const ACE_TCHAR sap[]); // Initializes an from the which can be // "atm-address" (e.g., // "47.0005.80.ffe100.0000.f20f.2200.0020480694f9.00") or "hostname" // (e.g., "frisbee.cs.wustl.edu"). virtual int addr_to_string (ACE_TCHAR addr[], size_t addrlen) const; // Return the character representation of the ATM address (e.g., // "47.0005.80.ffe100.0000.f20f.2200.0020480694f9.00") storing it in // the (which is assumed to be bytes long). This // version is reentrant. Returns -1 if the of the // is too small, else 0. const ACE_TCHAR *addr_to_string (void) const; // Return the character representation of the ATM address (e.g., // "47.0005.80.ffe100.0000.f20f.2200.0020480694f9.00"). Returns -1 // if the of the is too small, else 0.(This version // is non-reentrant since it returns a pointer to a static data // area.) virtual void *get_addr (void) const; // Return a pointer to the underlying network address. virtual void set_addr (void *, int); // Set a pointer to the address. unsigned char get_selector (void) const; // Return the selector for network address. void set_selector (unsigned char); // Set the selector for the network address. int operator == (const ACE_ATM_Addr &SAP) const; // Compare two addresses for equality. The addresses are considered // equal if they contain the same ATM address. Q: Is there any // other check for equality needed for ATM? int operator != (const ACE_ATM_Addr &SAP) const; // Compare two addresses for inequality. void dump (void) const; // Dump the state of an object. ACE_ALLOC_HOOK_DECLARE; // Declare the dynamic allocation hooks. // char *construct_options (ACE_HANDLE fd, // int qos_kb, // int flags, // long *optsize); // // Construct options for ATM connections protected: private: ATM_Addr atm_addr_; }; #if defined (__ACE_INLINE__) #include "ace/ATM_Addr.i" #endif /* __ACE_INLINE__ */ #include "ace/post.h" #endif /* ACE_ATM_ADDR_H */