version 1.4, 2011/08/29 22:37:06
|
version 1.4.2.1, 2011/08/29 23:26:56
|
Line 271 rpc_cli_closeClient(rpc_cli_t * __restrict cli)
|
Line 271 rpc_cli_closeClient(rpc_cli_t * __restrict cli)
|
*/ |
*/ |
int |
int |
rpc_cli_execCall(rpc_cli_t *cli, const char *csModule, const char *csFunc, int in_argc, |
rpc_cli_execCall(rpc_cli_t *cli, const char *csModule, const char *csFunc, int in_argc, |
rpc_val_t * __restrict in_vars, int *out_argc, rpc_val_t ** __restrict out_vars) | ait_val_t * __restrict in_vars, int *out_argc, ait_val_t ** __restrict out_vars) |
{ |
{ |
fd_set fds; |
fd_set fds; |
u_char buf[BUFSIZ], str[MAXPATHLEN + UCHAR_MAX + 1], *data; |
u_char buf[BUFSIZ], str[MAXPATHLEN + UCHAR_MAX + 1], *data; |
Line 279 rpc_cli_execCall(rpc_cli_t *cli, const char *csModule,
|
Line 279 rpc_cli_execCall(rpc_cli_t *cli, const char *csModule,
|
struct tagRPCRet *rrpc = NULL; |
struct tagRPCRet *rrpc = NULL; |
int ret = 0, Limit = 0; |
int ret = 0, Limit = 0; |
register int i; |
register int i; |
rpc_val_t *v; | ait_val_t *v; |
struct timeval tv = { DEF_RPC_TIMEOUT, 0 }; |
struct timeval tv = { DEF_RPC_TIMEOUT, 0 }; |
|
|
FD_ZERO(&fds); |
FD_ZERO(&fds); |
Line 302 rpc_cli_execCall(rpc_cli_t *cli, const char *csModule,
|
Line 302 rpc_cli_execCall(rpc_cli_t *cli, const char *csModule,
|
rpc->call_hash = hash_fnv((char*) str, sizeof str); |
rpc->call_hash = hash_fnv((char*) str, sizeof str); |
Limit = sizeof(struct tagRPCCall); |
Limit = sizeof(struct tagRPCCall); |
if (in_argc) { |
if (in_argc) { |
v = (rpc_val_t*) (buf + sizeof(struct tagRPCCall)); | v = (ait_val_t*) (buf + sizeof(struct tagRPCCall)); |
if (in_argc * sizeof(rpc_val_t) > sizeof buf - Limit) { | if (in_argc * sizeof(ait_val_t) > sizeof buf - Limit) { |
rpc_SetErr(EMSGSIZE, "Error:: in prepare RPC packet values (-7) ...\n"); |
rpc_SetErr(EMSGSIZE, "Error:: in prepare RPC packet values (-7) ...\n"); |
return -7; |
return -7; |
} else |
} else |
Limit += in_argc * sizeof(rpc_val_t); | Limit += in_argc * sizeof(ait_val_t); |
memcpy(v, in_vars, in_argc * sizeof(rpc_val_t)); | memcpy(v, in_vars, in_argc * sizeof(ait_val_t)); |
data = (u_char*) v + in_argc * sizeof(rpc_val_t); | data = (u_char*) v + in_argc * sizeof(ait_val_t); |
for (i = 0; i < in_argc && !ret; i++) { |
for (i = 0; i < in_argc && !ret; i++) { |
switch (in_vars[i].val_type) { |
switch (in_vars[i].val_type) { |
case buffer: |
case buffer: |
Line 386 rpc_cli_execCall(rpc_cli_t *cli, const char *csModule,
|
Line 386 rpc_cli_execCall(rpc_cli_t *cli, const char *csModule,
|
rrpc->ret_retcode, strerror(rrpc->ret_errno)); |
rrpc->ret_retcode, strerror(rrpc->ret_errno)); |
return -6; |
return -6; |
} |
} |
if (rrpc->ret_argc * sizeof(rpc_val_t) > sizeof buf - Limit) { | if (rrpc->ret_argc * sizeof(ait_val_t) > sizeof buf - Limit) { |
rpc_SetErr(EMSGSIZE, "Error:: reply RPC packet is too long ...\n"); |
rpc_SetErr(EMSGSIZE, "Error:: reply RPC packet is too long ...\n"); |
return -7; |
return -7; |
} else |
} else |
Limit += rrpc->ret_argc * sizeof(rpc_val_t); | Limit += rrpc->ret_argc * sizeof(ait_val_t); |
/* RPC is OK! Go decapsulate variables ... */ |
/* RPC is OK! Go decapsulate variables ... */ |
if (rrpc->ret_argc) { |
if (rrpc->ret_argc) { |
*out_argc = rrpc->ret_argc; |
*out_argc = rrpc->ret_argc; |
*out_vars = calloc(rrpc->ret_argc, sizeof(rpc_val_t)); | *out_vars = calloc(rrpc->ret_argc, sizeof(ait_val_t)); |
if (!*out_vars) { |
if (!*out_vars) { |
LOGERR; |
LOGERR; |
*out_argc = 0; |
*out_argc = 0; |
Line 461 rpc_cli_execCall(rpc_cli_t *cli, const char *csModule,
|
Line 461 rpc_cli_execCall(rpc_cli_t *cli, const char *csModule,
|
} |
} |
|
|
/* |
/* |
* rpc_cli_freeVals() Free rpc_val_t array returned from RPC call | * rpc_cli_freeVals() Free ait_val_t array returned from RPC call |
* @args = Number of arguments in array |
* @args = Number of arguments in array |
* @vars = Value elements |
* @vars = Value elements |
* return: none |
* return: none |
*/ |
*/ |
inline void |
inline void |
rpc_cli_freeVals(int args, rpc_val_t *vars) | rpc_cli_freeVals(int args, ait_val_t * __restrict vars) |
{ |
{ |
register int i; |
register int i; |
|
|
Line 475 rpc_cli_freeVals(int args, rpc_val_t *vars)
|
Line 475 rpc_cli_freeVals(int args, rpc_val_t *vars)
|
return; |
return; |
|
|
for (i = 0; i < args; i++) |
for (i = 0; i < args; i++) |
RPC_FREE_VAL(&vars[i]); | AIT_FREE_VAL(&vars[i]); |
|
|
free(vars); |
free(vars); |
vars = NULL; |
vars = NULL; |