/* rpc_idl.h */ /* * Copyright (c) 1992, Research Systems Inc. All rights reserved. * Reproduction by any means whatsoever is prohibited without express * written permission. */ /* #define DEBUG(x) printf x */ /* #define DEBUG(x) */ /* Biggest string we can XDR */ #define MAX_STRING_LEN 512 /* Version/portmapper id */ #define IDL_DEFAULT_ID 0x2010CAFE #define IDL_DEFAULT_VERSION 1 /* Server requests available */ #define GET_VARIABLE 1 #define SET_VARIABLE 2 #define RUN_COMMAND 3 #define FORCED_EXIT 4 /* Data Extraction Macros */ #define VarIsArray(v) ((v)->Variable->flags & V_ARR) #define GetVarType(v) ((v)->Variable->type) #define GetVarByte(v) ((v)->Variable->value.c) #define GetVarInt(v) ((v)->Variable->value.i) #define GetVarLong(v) ((v)->Variable->value.l) #define GetVarFloat(v) ((v)->Variable->value.f) #define GetVarDouble(v) ((v)->Variable->value.d) #define GetVarComplex(v) ((v)->Variable->value.cmp) #define GetVarString(v) STRING_STR((v)->Variable.value.str) #define GetArrayData(v) (v)->Variable.value.arr->data #define GetArrayNumDims(v) (v)->Variable.value.arr->n_dim #define GetArrayDimensions(v) (v)->Variable.value.arr->dim /* XDR structure used to transfer a variable */ typedef struct _VARINFO { char Name[MAXIDLEN+1]; /* Variable name in IDL */ VPTR Variable; /* IDL internal definition */ long Length; /* Array length (0 for dynamic, */ /* sizeof(data) for statics */ } varinfo_t; /* XDR structure for getting an variable (out of IDL) */ typedef struct _GETINFO { char Name[MAXIDLEN+1]; /* Variable name in IDL */ short TypeCode; /* Desired variable type */ } getinfo_t; public int xdr_vinfo IDL_ARG_PROTO((XDR *xdrs, varinfo_t * var)); public int xdr_idl_getinfo IDL_ARG_PROTO((XDR *xdrs, getinfo_t *getinfo)); /************************************************************************/ /* IDL RPC interface routines */ /************************************************************************/ public CLIENT *register_idl_client IDL_ARG_PROTO((long server_id, char *hostname, struct timeval *timeout)); public void unregister_idl_client IDL_ARG_PROTO((CLIENT *client)); public int kill_server IDL_ARG_PROTO((CLIENT *client)); public int set_idl_timeout IDL_ARG_PROTO((struct timeval *timeout)); public int send_idl_command IDL_ARG_PROTO((CLIENT* client, char* cmd)); public void free_idl_var IDL_ARG_PROTO((varinfo_t* var )); public int set_idl_variable IDL_ARG_PROTO((CLIENT* client, varinfo_t* var)); public int get_idl_variable IDL_ARG_PROTO((CLIENT* client, char* name, varinfo_t* var, int typecode)); /************************************************************************/ /* Helper function declarations */ /************************************************************************/ public int v_make_byte IDL_ARG_PROTO((varinfo_t* var, char* name, unsigned int c)); public int v_make_int IDL_ARG_PROTO((varinfo_t* var, char* name, int i)); public int v_make_long IDL_ARG_PROTO((varinfo_t* var, char* name, long l)); public int v_make_float IDL_ARG_PROTO((varinfo_t* var, char* name, double f)); public int v_make_double IDL_ARG_PROTO((varinfo_t* var, char* name, double d)); public int v_make_complex IDL_ARG_PROTO((varinfo_t* var, char* name, double real, double imag)); public int v_make_string IDL_ARG_PROTO((varinfo_t* var, char* name, char* s)); public int v_fill_array IDL_ARG_PROTO((varinfo_t* var, char* name, int type, int ndims, long dims[], UCHAR* data, long data_length));