Main Page   Class Hierarchy   Alphabetical List   Data Structures   File List   Data Fields   Globals  

rpcintrf.h

Go to the documentation of this file.
00001 
00002 #ifndef RPCINTRF_H
00003 #define RPCINTRF_H
00004 
00005 #include "rcs_defs.hh"          /* RCS_FAR, RCS_PASCAL, _WINDOWS, EXTERN_C_STD_HEADERS */
00006 
00007 extern "C"
00008 {
00009 
00010 #if defined(WIN32) && !defined(USE_OLD_WINSOCK)
00011 /* Lame problem if windows.h is included before winsock2.h many redefined
00012  compiler errors result. */
00013 #include <winsock2.h>
00014 #endif
00015 
00016 #if defined( __MSDOS__) && !defined(_Windows)
00017 #include <sys/tk_types.h>       /* u_long, bool_t, caddr_t */
00018 #else
00019 #include <sys/types.h>          /* u_long, bool_t, caddr_t */
00020 #endif
00021 #ifndef WIN32
00022 #ifndef __MSDOS__
00023 #ifndef VXWORKS
00024 #include <sys/time.h>           /* struct timeval */
00025 #else
00026 #include <sys/times.h>          /* struct timeval */
00027 #endif
00028 #else
00029 #include <sys/nfs_time.h>       /* struct timeval */
00030 #endif
00031 #endif
00032 #include <rpc/rpc.h>            /* clnt_stat, CLIENT */
00033 #include <rpc/xdr.h>            /* XDR */
00034 
00035 }
00036 
00037 #ifdef __cplusplus
00038 extern "C"
00039 {
00040 #endif
00041 
00042 /* Declare load and unload functions. */
00043   extern int load_rpc_interface ();
00044   extern void unload_rpc_interface ();
00045 
00046 /* Declare pointers to RPC routines. */
00047   typedef int (RCS_FAR * PTR_TO_TKDLL_INIT) (void);
00048   extern PTR_TO_TKDLL_INIT ptr_to_tkdll_init;
00049   typedef int (RCS_FAR * PTR_TO_RPC_NT_INIT) (void);
00050   extern PTR_TO_RPC_NT_INIT ptr_to_rpc_nt_init;
00051   typedef int (RCS_FAR * PTR_TO_TKDLL_CLEANUP) (void);
00052   extern PTR_TO_TKDLL_CLEANUP ptr_to_tkdll_cleanup;
00053   typedef int (RCS_FAR * PTR_TO_RPC_NT_EXIT) (void);
00054 
00055   extern PTR_TO_RPC_NT_EXIT ptr_to_rpc_nt_exit;
00056   typedef int *(RCS_FAR * PTR_TO_TKDLL_ERRNO) (void);
00057   extern PTR_TO_TKDLL_ERRNO ptr_to_tkdll_errno;
00058   typedef long (RCS_FAR * PTR_TO_TKDLL_VERSION) (void);
00059   extern PTR_TO_TKDLL_VERSION ptr_to_tkdll_version;
00060   typedef enum clnt_stat (RCS_FAR * PTR_TO_CLNT_CALL) (CLIENT *, u_long,
00061                                                        xdrproc_t, caddr_t,
00062                                                        xdrproc_t, caddr_t,
00063                                                        struct timeval);
00064   extern PTR_TO_CLNT_CALL ptr_to_clnt_call;
00065   typedef bool_t (RCS_FAR * PTR_TO_CLNT_CONTROL) (CLIENT *, u_int, char *);
00066   extern PTR_TO_CLNT_CONTROL ptr_to_clnt_control;
00067   typedef void (RCS_FAR * PTR_TO_CLNT_DESTROY) (CLIENT *);
00068   extern PTR_TO_CLNT_DESTROY ptr_to_clnt_destroy;
00069   typedef CLIENT RCS_FAR *(RCS_FAR * PTR_TO_CLNT_CREATE) (char *,
00070                                                           unsigned long,
00071                                                           unsigned long,
00072                                                           char *);
00073   extern PTR_TO_CLNT_CREATE ptr_to_clnt_create;
00074   typedef char RCS_FAR *(RCS_FAR *
00075                          PTR_TO_CLNT_SPCREATEERROR) (char RCS_FAR *);
00076   extern PTR_TO_CLNT_SPCREATEERROR ptr_to_clnt_spcreateerror;
00077   typedef char RCS_FAR *(RCS_FAR * PTR_TO_CLNT_SPERRNO) (enum clnt_stat);
00078   extern PTR_TO_CLNT_SPERRNO ptr_to_clnt_sperrno;
00079 
00080 
00081 
00082 /* Declare Safe Dynamically Loaded versions of the RPC routines. */
00083   extern CLIENT *dl_clnt_create (char *, unsigned long, unsigned long,
00084                                  char *);
00085   extern bool_t dl_clnt_control (CLIENT *, u_int, char *);
00086   extern enum clnt_stat dl_clnt_call (CLIENT *, u_long, xdrproc_t, caddr_t,
00087                                       xdrproc_t, caddr_t, struct timeval);
00088   extern void dl_clnt_destroy (CLIENT *);
00089   extern char *dl_clnt_spcreateerror (char *);
00090   extern char *dl_clnt_sperrno (enum clnt_stat);
00091 
00092 
00093 /*  Declare Pointers to Pascal versions XDR routines. */
00094   typedef void (RCS_PASCAL RCS_FAR *
00095                 PTR_TO_PASCAL_XDRMEM_CREATE) (XDR RCS_FAR *, char RCS_FAR *,
00096                                               unsigned int, enum xdr_op);
00097   extern PTR_TO_PASCAL_XDRMEM_CREATE ptr_to_pascal_xdrmem_create;
00098   typedef void (RCS_PASCAL RCS_FAR *
00099                 PTR_TO_PASCAL_XDR_DESTROY) (XDR RCS_FAR *);
00100   extern PTR_TO_PASCAL_XDR_DESTROY ptr_to_pascal_xdr_destroy;
00101   typedef u_long (RCS_PASCAL RCS_FAR * PTR_TO_PASCAL_XDR_GETPOS) (XDR *);
00102   extern PTR_TO_PASCAL_XDR_GETPOS ptr_to_pascal_xdr_getpos;
00103   typedef bool_t (RCS_PASCAL RCS_FAR * PTR_TO_PASCAL_XDR_SETPOS) (XDR *,
00104                                                                   u_long);
00105   extern PTR_TO_PASCAL_XDR_SETPOS ptr_to_pascal_xdr_setpos;
00106   typedef void (RCS_PASCAL RCS_FAR * PTR_TO_PASCAL_XDR_VOID) (XDR RCS_FAR *,
00107                                                               caddr_t);
00108   extern PTR_TO_PASCAL_XDR_VOID ptr_to_pascal_xdr_void;
00109   typedef bool_t (RCS_PASCAL RCS_FAR * PTR_TO_PASCAL_XDR_INT) (XDR RCS_FAR *,
00110                                                                int *);
00111   extern PTR_TO_PASCAL_XDR_INT ptr_to_pascal_xdr_int;
00112   typedef bool_t (RCS_PASCAL RCS_FAR *
00113                   PTR_TO_PASCAL_XDR_U_INT) (XDR RCS_FAR *, unsigned int *);
00114   extern PTR_TO_PASCAL_XDR_U_INT ptr_to_pascal_xdr_u_int;
00115   typedef bool_t (RCS_PASCAL RCS_FAR *
00116                   PTR_TO_PASCAL_XDR_SHORT) (XDR RCS_FAR *, short *);
00117   extern PTR_TO_PASCAL_XDR_SHORT ptr_to_pascal_xdr_short;
00118   typedef bool_t (RCS_PASCAL RCS_FAR *
00119                   PTR_TO_PASCAL_XDR_U_SHORT) (XDR RCS_FAR *,
00120                                               unsigned short *);
00121   extern PTR_TO_PASCAL_XDR_U_SHORT ptr_to_pascal_xdr_u_short;
00122   typedef bool_t (RCS_PASCAL RCS_FAR * PTR_TO_PASCAL_XDR_LONG) (XDR RCS_FAR *,
00123                                                                 long *);
00124   extern PTR_TO_PASCAL_XDR_LONG ptr_to_pascal_xdr_long;
00125   typedef bool_t (RCS_PASCAL RCS_FAR *
00126                   PTR_TO_PASCAL_XDR_U_LONG) (XDR RCS_FAR *, unsigned long *);
00127   extern PTR_TO_PASCAL_XDR_U_LONG ptr_to_pascal_xdr_u_long;
00128   typedef bool_t (RCS_PASCAL RCS_FAR * PTR_TO_PASCAL_XDR_CHAR) (XDR RCS_FAR *,
00129                                                                 char *);
00130   extern PTR_TO_PASCAL_XDR_CHAR ptr_to_pascal_xdr_char;
00131   typedef bool_t (RCS_PASCAL RCS_FAR *
00132                   PTR_TO_PASCAL_XDR_U_CHAR) (XDR RCS_FAR *, unsigned char *);
00133   extern PTR_TO_PASCAL_XDR_U_CHAR ptr_to_pascal_xdr_u_char;
00134   typedef bool_t (RCS_PASCAL RCS_FAR *
00135                   PTR_TO_PASCAL_XDR_FLOAT) (XDR RCS_FAR *, float *);
00136   extern PTR_TO_PASCAL_XDR_FLOAT ptr_to_pascal_xdr_float;
00137   typedef bool_t (RCS_PASCAL RCS_FAR *
00138                   PTR_TO_PASCAL_XDR_DOUBLE) (XDR RCS_FAR *, double *);
00139   extern PTR_TO_PASCAL_XDR_DOUBLE ptr_to_pascal_xdr_double;
00140   typedef bool_t (RCS_PASCAL RCS_FAR *
00141                   PTR_TO_PASCAL_XDR_BYTES) (XDR RCS_FAR *, char **,
00142                                             unsigned int *, unsigned int);
00143   extern PTR_TO_PASCAL_XDR_BYTES ptr_to_pascal_xdr_bytes;
00144   typedef bool_t (RCS_PASCAL RCS_FAR *
00145                   PTR_TO_PASCAL_XDR_OPAQUE) (XDR RCS_FAR *, char *,
00146                                              unsigned int);
00147   extern PTR_TO_PASCAL_XDR_OPAQUE ptr_to_pascal_xdr_opaque;
00148   typedef bool_t (RCS_PASCAL RCS_FAR *
00149                   PTR_TO_PASCAL_XDR_VECTOR) (XDR RCS_FAR *, char *,
00150                                              unsigned int, unsigned int,
00151                                              xdrproc_t);
00152   extern PTR_TO_PASCAL_XDR_VECTOR ptr_to_pascal_xdr_vector;
00153 /*  Declare Pointers to C versions XDR routines. */
00154   typedef void (RCS_FAR * PTR_TO_XDRMEM_CREATE) (XDR RCS_FAR *,
00155                                                  char RCS_FAR *, unsigned int,
00156                                                  enum xdr_op);
00157   extern PTR_TO_XDRMEM_CREATE ptr_to_xdrmem_create;
00158   typedef void (RCS_FAR * PTR_TO_XDR_DESTROY) (XDR RCS_FAR *);
00159   extern PTR_TO_XDR_DESTROY ptr_to_xdr_destroy;
00160   typedef u_long (RCS_FAR * PTR_TO_XDR_GETPOS) (XDR *);
00161   extern PTR_TO_XDR_GETPOS ptr_to_xdr_getpos;
00162   typedef bool_t (RCS_FAR * PTR_TO_XDR_SETPOS) (XDR *, u_long);
00163   extern PTR_TO_XDR_SETPOS ptr_to_xdr_setpos;
00164   typedef void (RCS_FAR * PTR_TO_XDR_VOID) (XDR RCS_FAR *, caddr_t);
00165   extern PTR_TO_XDR_VOID ptr_to_xdr_void;
00166   typedef bool_t (RCS_FAR * PTR_TO_XDR_INT) (XDR RCS_FAR *, int *);
00167   extern PTR_TO_XDR_INT ptr_to_xdr_int;
00168   typedef bool_t (RCS_FAR * PTR_TO_XDR_U_INT) (XDR RCS_FAR *, unsigned int *);
00169   extern PTR_TO_XDR_U_INT ptr_to_xdr_u_int;
00170   typedef bool_t (RCS_FAR * PTR_TO_XDR_SHORT) (XDR RCS_FAR *, short *);
00171   extern PTR_TO_XDR_SHORT ptr_to_xdr_short;
00172   typedef bool_t (RCS_FAR * PTR_TO_XDR_U_SHORT) (XDR RCS_FAR *,
00173                                                  unsigned short *);
00174   extern PTR_TO_XDR_U_SHORT ptr_to_xdr_u_short;
00175   typedef bool_t (RCS_FAR * PTR_TO_XDR_LONG) (XDR RCS_FAR *, long *);
00176   extern PTR_TO_XDR_LONG ptr_to_xdr_long;
00177   typedef bool_t (RCS_FAR * PTR_TO_XDR_U_LONG) (XDR RCS_FAR *,
00178                                                 unsigned long *);
00179   extern PTR_TO_XDR_U_LONG ptr_to_xdr_u_long;
00180   typedef bool_t (RCS_FAR * PTR_TO_XDR_CHAR) (XDR RCS_FAR *, char *);
00181   extern PTR_TO_XDR_CHAR ptr_to_xdr_char;
00182   typedef bool_t (RCS_FAR * PTR_TO_XDR_U_CHAR) (XDR RCS_FAR *,
00183                                                 unsigned char *);
00184   extern PTR_TO_XDR_U_CHAR ptr_to_xdr_u_char;
00185   typedef bool_t (RCS_FAR * PTR_TO_XDR_FLOAT) (XDR RCS_FAR *, float *);
00186   extern PTR_TO_XDR_FLOAT ptr_to_xdr_float;
00187   typedef bool_t (RCS_FAR * PTR_TO_XDR_DOUBLE) (XDR RCS_FAR *, double *);
00188   extern PTR_TO_XDR_DOUBLE ptr_to_xdr_double;
00189   typedef bool_t (RCS_FAR * PTR_TO_XDR_BYTES) (XDR RCS_FAR *, char **,
00190                                                unsigned int *, unsigned int);
00191   extern PTR_TO_XDR_BYTES ptr_to_xdr_bytes;
00192   typedef bool_t (RCS_FAR * PTR_TO_XDR_OPAQUE) (XDR RCS_FAR *, char *,
00193                                                 unsigned int);
00194   extern PTR_TO_XDR_OPAQUE ptr_to_xdr_opaque;
00195   typedef bool_t (RCS_FAR * PTR_TO_XDR_VECTOR) (XDR RCS_FAR *, char *,
00196                                                 unsigned int, unsigned int,
00197                                                 xdrproc_t);
00198   extern PTR_TO_XDR_VECTOR ptr_to_xdr_vector;
00199 /* Declare some Safe Dynamically Loaded Versions of the most important XDR functions. */
00200   extern void dl_xdrmem_create (XDR *,
00201                                 char RCS_FAR *, unsigned int, enum xdr_op);
00202   extern void dl_xdr_destroy (XDR *);
00203   extern u_long dl_xdr_getpos (XDR *);
00204   extern bool_t dl_xdr_setpos (XDR *, u_long);
00205 
00206 #ifdef __cplusplus
00207 }
00208 #endif
00209 
00210 enum RPC_LIBRARY_TYPE
00211 {
00212   RPC_INVALID,
00213   RPC_UNIX,                     /* Sun, LynxOs, VxWorks, SGI etc. */
00214   RPC_DOS,
00215   PCNFS_TKDLL_WINDOWS_31,
00216   RHAPCD_ONCRPC_WINDOWS_NT,
00217   LIBRPC_WINDOWS
00218 };
00219 
00220 extern RPC_LIBRARY_TYPE rpc_library_type;
00221 #endif

Generated on Sun Dec 2 15:56:52 2001 for rcslib by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001