// -*- C++ -*- //============================================================================= /** * @file OS_TLI.h * * @author Doug Schmidt */ //============================================================================= #ifndef ACE_OS_TLI_H # define ACE_OS_TLI_H # include /**/ "ace/pre.h" # include "ace/config-all.h" # if !defined (ACE_LACKS_PRAGMA_ONCE) # pragma once # endif /* ACE_LACKS_PRAGMA_ONCE */ # include "ace/OS_Errno.h" # include "ace/ACE_export.h" # if defined (ACE_EXPORT_MACRO) # undef ACE_EXPORT_MACRO # endif # define ACE_EXPORT_MACRO ACE_Export # if !(defined(ACE_HAS_TLI) || defined(ACE_HAS_XTI)) // Dummies to help compilation. struct t_call { }; struct t_bind { }; struct t_info { }; struct t_optmgmt { }; struct t_discon { }; struct t_unitdata { }; struct t_uderr { }; struct netbuf { }; # else /* !(ACE_HAS_TLI || ACE_HAS_XTI) */ # if defined (ACE_HAS_XTI) # if defined (ACE_HAS_FORE_ATM_XTI) # include /**/ # include /**/ # include /**/ # include /**/ # include /**/ # else # include /**/ # endif /* ACE_HAS_SYS_XTI_H */ // The XTI API for obtaining local/peer addresses is t_getprotaddr(). // The ACE API was developed in TLI days and so uses t_getname(). // t_getname() has a type argument that specifies which address is // desired, local or peer, while t_getprotaddr() gets both at once. // t_getname() has values defined for the type, so these aren't defined // for XTI systems. So, define them here for ACE API users to use. # if !defined (LOCALNAME) # define LOCALNAME 0 # endif # if !defined (REMOTENAME) # define REMOTENAME 1 # endif # else /* !ACE_HAS_XTI, so this is a TLI system */ # if !defined (ACE_HAS_TLI_PROTOTYPES) // Define ACE_TLI headers for systems that don't prototype them.... extern "C" { int t_accept(int fildes, int resfd, struct t_call *call); char *t_alloc(int fildes, int struct_type, int fields); int t_bind(int fildes, struct t_bind *req, struct t_bind *ret); int t_close(int fildes); int t_connect(int fildes, struct t_call *sndcall, struct t_call *rcvcall); void t_error(const char *errmsg); int t_free(char *ptr, int struct_type); int t_getinfo(int fildes, struct t_info *info); int t_getname (int fildes, struct netbuf *namep, int type); int t_getstate(int fildes); int t_listen(int fildes, struct t_call *call); int t_look(int fildes); int t_open(char *path, int oflag, struct t_info *info); int t_optmgmt(int fildes, struct t_optmgmt *req, struct t_optmgmt *ret); int t_rcv(int fildes, char *buf, unsigned int nbytes, int *flags); int t_rcvconnect(int fildes, struct t_call *call); int t_rcvdis(int fildes, struct t_discon *discon); int t_rcvrel(int fildes); int t_rcvudata(int fildes, struct t_unitdata *unitdata, int *flags); int t_rcvuderr(int fildes, struct t_uderr *uderr); int t_snd(int fildes, const char *buf, unsigned int nbytes, int flags); int t_snddis(int fildes, struct t_call *call); int t_sndrel(int fildes); int t_sndudata(int fildes, struct t_unitdata *unitdata); int t_sync(int fildes); int t_unbind(int fildes); } # endif /* !ACE_HAS_TLI_PROTOTYPES */ # endif /* !ACE_HAS_XTI */ # endif /* ACE_HAS_XTI || ACE_HAS_TLI */ ACE_BEGIN_VERSIONED_NAMESPACE_DECL typedef struct t_optmgmt ACE_TOPTMGMT; typedef struct t_bind ACE_TBIND; /** * @namespace ACE_OS * * @brief This class is a wrapper for the XTI/TLI operations */ namespace ACE_OS { // = A set of wrappers for XTI/TLI. ACE_NAMESPACE_INLINE_FUNCTION int t_accept (ACE_HANDLE fildes, ACE_HANDLE resfd, struct t_call *call); ACE_NAMESPACE_INLINE_FUNCTION char *t_alloc (ACE_HANDLE fildes, int struct_type, int fields); ACE_NAMESPACE_INLINE_FUNCTION int t_bind (ACE_HANDLE fildes, ACE_TBIND *req, ACE_TBIND *ret); ACE_NAMESPACE_INLINE_FUNCTION int t_close (ACE_HANDLE fildes); ACE_NAMESPACE_INLINE_FUNCTION int t_connect (ACE_HANDLE fildes, struct t_call *sndcall, struct t_call *rcvcall); ACE_NAMESPACE_INLINE_FUNCTION void t_error (const char *errmsg); ACE_NAMESPACE_INLINE_FUNCTION int t_free (char *ptr, int struct_type); ACE_NAMESPACE_INLINE_FUNCTION int t_getinfo (ACE_HANDLE fildes, struct t_info *info); ACE_NAMESPACE_INLINE_FUNCTION int t_getname (ACE_HANDLE fildes, struct netbuf *namep, int type); ACE_NAMESPACE_INLINE_FUNCTION int t_getstate (ACE_HANDLE fildes); ACE_NAMESPACE_INLINE_FUNCTION int t_listen (ACE_HANDLE fildes, struct t_call *call); ACE_NAMESPACE_INLINE_FUNCTION int t_look (ACE_HANDLE fildes); ACE_NAMESPACE_INLINE_FUNCTION ACE_HANDLE t_open (char *path, int oflag, struct t_info *info); ACE_NAMESPACE_INLINE_FUNCTION int t_optmgmt (ACE_HANDLE handle, ACE_TOPTMGMT *req, ACE_TOPTMGMT *ret); ACE_NAMESPACE_INLINE_FUNCTION int t_rcv (ACE_HANDLE fildes, char *buf, unsigned int nbytes, int *flags); ACE_NAMESPACE_INLINE_FUNCTION int t_rcvdis (ACE_HANDLE fildes, struct t_discon *discon); ACE_NAMESPACE_INLINE_FUNCTION int t_rcvrel (ACE_HANDLE fildes); ACE_NAMESPACE_INLINE_FUNCTION int t_rcvudata (ACE_HANDLE fildes, struct t_unitdata *unitdata, int *flags); ACE_NAMESPACE_INLINE_FUNCTION int t_rcvuderr (ACE_HANDLE fildes, struct t_uderr *uderr); ACE_NAMESPACE_INLINE_FUNCTION int t_snd (ACE_HANDLE fildes, const char *buf, unsigned int nbytes, int flags); ACE_NAMESPACE_INLINE_FUNCTION int t_snddis (ACE_HANDLE fildes, struct t_call *call); ACE_NAMESPACE_INLINE_FUNCTION int t_sndrel (ACE_HANDLE fildes); ACE_NAMESPACE_INLINE_FUNCTION int t_sync (ACE_HANDLE fildes); ACE_NAMESPACE_INLINE_FUNCTION int t_unbind (ACE_HANDLE fildes); } /* namespace ACE_OS */ ACE_END_VERSIONED_NAMESPACE_DECL # if defined (ACE_HAS_INLINED_OSCALLS) # if defined (ACE_INLINE) # undef ACE_INLINE # endif /* ACE_INLINE */ # define ACE_INLINE inline # include "ace/OS_TLI.inl" # endif /* ACE_HAS_INLINED_OSCALLS */ #include /**/ "ace/post.h" #endif /* ACE_OS_TLI_H */