00001
00002
00003
00004
00005
00006 #define SZ_LINE 128
00007 #define SZ_PATH 128
00008 #define SZ_CMD 32
00009 #define SZ_SIG 64
00010 #define SZ_NAME 64
00011
00012 #define MAX_CLIENTS 512
00013 #define MAX_STRUCTS 32768
00014 #define MAX_ARRAYS 32768
00015
00016 #define OK 0
00017 #define ERR 1
00018
00019 #define TY_INT 1
00020 #define TY_DOUBLE 2
00021 #define TY_BOOL 3
00022 #define TY_STRING 4
00023 #define TY_DATETIME 5
00024 #define TY_STRUCT 6
00025 #define TY_ARRAY 7
00026
00027 #define XR_NAME "xrLib"
00028 #define XR_VERSION "v1.0"
00029
00030
00031
00035 typedef int (*PFI)();
00036
00037
00041 typedef struct {
00042 char name[SZ_PATH];
00043 char arg_signature[SZ_SIG];
00044 char ret_signature[SZ_SIG];
00046 int (*methodFunc)(void *p);
00047 void *serverInfo;
00049 void *next;
00051 } Method, *MethodP;
00052
00053
00057 typedef struct {
00058 xmlrpc_env *env;
00059 char *host;
00060 char *name;
00061 xmlrpc_value *param;
00062 void *info;
00063 xmlrpc_value *result;
00065 int (*handlerFunc)(void *p);
00066 int nparams;
00067 int nresults;
00069 int client_num;
00071 } Caller, *CallerP;
00072
00073
00077 typedef struct {
00078 int port;
00079 char path[SZ_PATH];
00080 char url[SZ_PATH];
00081 char config[SZ_PATH];
00082 char logfile[SZ_PATH];
00085
00086
00087 Method *method_head;
00088 Method *method_tail;
00089 int num_methods;
00091 Caller caller;
00093 pthread_attr_t attr;
00094 pthread_t thread;
00096 xmlrpc_default_method defMethod;
00098 xmlrpc_server_abyss_parms serverparm;
00099 xmlrpc_registry *registry;
00100 xmlrpc_env env;
00101
00102 int trace;
00104 } Server, *ServerP;
00105
00106
00110 typedef struct {
00111 char url[SZ_PATH];
00112 xmlrpc_client *rpc_client;
00113 xmlrpc_env env;
00115 int in_use;
00117 int (*handlerFunc)(void *p);
00118 xmlrpc_value *param;
00119 xmlrpc_value *result;
00121 } Client, *ClientP;
00122
00123
00124
00125
00126
00127
00128 void die_on_error (xmlrpc_env *env);
00129 void warn_on_error (xmlrpc_env *env);
00130
00131
00132 #include "xrpc.h"
00133
00134