// -*- C++ -*- //========================================================================== /** * @file ATM_Params.h * * @author Joe Hoffert */ //========================================================================== #ifndef ACE_ATM_PARAMS_H #define ACE_ATM_PARAMS_H #include /**/ "ace/pre.h" #include /**/ "ace/config-all.h" #if !defined (ACE_LACKS_PRAGMA_ONCE) # pragma once #endif /* ACE_LACKS_PRAGMA_ONCE */ #if defined (ACE_HAS_ATM) #include /**/ "ace/ACE_export.h" #if defined (ACE_HAS_FORE_ATM_XTI) #include "ace/TLI.h" #define ATM_PROTOCOL_DEFAULT 0 typedef struct t_info Param_Info; typedef struct netbuf Param_Udata; #elif defined (ACE_HAS_FORE_ATM_WS2) #include "ace/SOCK.h" #define ATM_PROTOCOL_DEFAULT ATMPROTO_AAL5 #define ACE_XTI_ATM_DEVICE "" typedef int Param_Info; typedef int Param_Udata; #elif defined (ACE_HAS_LINUX_ATM) #include /**/ "atm.h" #define AF_ATM PF_ATMSVC #define ACE_XTI_ATM_DEVICE "" #define ATM_PROTOCOL_DEFAULT ATM_AAL5 typedef int Param_Info; typedef int Param_Udata; #else #define ACE_XTI_ATM_DEVICE "" typedef int Param_Info; typedef int Param_Udata; #endif /* ACE_HAS_FORE_ATM_XTI || ACE_HAS_FORE_ATM_WS2 || ACE_HAS_LINUX_ATM */ ACE_BEGIN_VERSIONED_NAMESPACE_DECL /** * @class ACE_ATM_Params * * @brief Wrapper class that simplifies the information passed to the ATM * enabled ACE_ATM_Connector class. */ class ACE_Export ACE_ATM_Params { public: /** * Initialize the data members. This class combines options from * ACE_SOCK_Connector (@a protocol_family, @a protocol, , * @a protocol_info, , and @a flags) and * ACE_TLI_Connector (, , , , and ) * so that either mechanism can be used transparently for ATM. */ ACE_ATM_Params (int rw_flag = 1, const char device[] = ACE_XTI_ATM_DEVICE, Param_Info *info = 0, Param_Udata *udata = 0, int oflag = O_RDWR, int protocol_family = AF_ATM, int protocol = ATM_PROTOCOL_DEFAULT, int type = #if defined (ACE_HAS_LINUX_ATM) SOCK_DGRAM, #else SOCK_RAW, #endif /* ACE_HAS_LINUX_ATM */ ACE_Protocol_Info *protocol_info = 0, ACE_SOCK_GROUP g = 0, u_long flags = ACE_FLAG_MULTIPOINT_C_ROOT | ACE_FLAG_MULTIPOINT_D_ROOT, // connector by default int reuse_addr = 0); /// Destructor. ~ACE_ATM_Params (); /// Get protocol family. int get_protocol_family () const; /// Set protocol family. void set_protocol_family (int); /// Get protocol. int get_protocol () const; /// Set protocol. void set_protocol (int); /// Get type. int get_type () const; /// Set type. void set_type (int); /// Get protocol info. ACE_Protocol_Info *get_protocol_info(); /// Set protocol info. void set_protocol_info( ACE_Protocol_Info *); /// Get socket group. ACE_SOCK_GROUP get_sock_group(); /// Set socket group. void set_sock_group( ACE_SOCK_GROUP ); /// Get socket flags. u_long get_flags(); /// Set socket flags. void set_flags(u_long); /// Get reuse_addr flag. int get_reuse_addr () const; /// Set reuse_addr flag. void set_reuse_addr (int); /// Get device. const char* get_device () const; /// Get info. Param_Info* get_info () const; /// Set info. void set_info (Param_Info *); /// Get r/w flag. int get_rw_flag () const; /// Set r/w flag. void set_rw_flag (int); /// Get user data. Param_Udata* get_user_data () const; /// Set user data. void set_user_data (Param_Udata*); /// Get open flag. int get_oflag () const; /// Set open flag. void set_oflag (int); /// Dump the state of an object. void dump () const; /// Declare the dynamic allocation hooks. ACE_ALLOC_HOOK_DECLARE; private: /// Protocol family for sockets connections. int protocol_family_; /// Protocol for sockets connections. int protocol_; /// Type for opening sockets. int type_; /// Information about the protocol. ACE_Protocol_Info *protocol_info_; /// Socket group used (for sockets only). ACE_SOCK_GROUP group_; /// Flags for sockets (for sockets only). u_long flags_; /// Flag for reusing address for opening sockets. int reuse_addr_; /// Device name for XTI/ATM connections. const char *device_; /// Info for XTI/ATM connections. Param_Info *info_; /// R/W flag for XTI/ATM connections. int rw_flag_; /// User data for XTI/ATM connections. Param_Udata *udata_; /// Open flag for XTI/ATM connections. int oflag_; }; ACE_END_VERSIONED_NAMESPACE_DECL #if defined (__ACE_INLINE__) #include "ace/ATM_Params.inl" #endif /* __ACE_INLINE__ */ #endif /* ACE_HAS_ATM */ #include /**/ "ace/post.h" #endif /* ACE_ATM_PARAMS_H */