version 1.1.1.1.2.8, 2010/06/23 17:29:07
|
version 1.1.1.1.2.9, 2010/06/24 11:01:46
|
Line 12
|
Line 12
|
static void * |
static void * |
rpc_srv_dispatchCall(void *arg) |
rpc_srv_dispatchCall(void *arg) |
{ |
{ |
rpc_cli_t cli, *c = arg; | rpc_cli_t *c = arg; |
rpc_srv_t *s; |
rpc_srv_t *s; |
rpc_val_t *vals, *v = NULL; |
rpc_val_t *vals, *v = NULL; |
rpc_func_t *f; |
rpc_func_t *f; |
Line 74 rpc_srv_dispatchCall(void *arg)
|
Line 74 rpc_srv_dispatchCall(void *arg)
|
v[i].val.string = (int8_t*) data; |
v[i].val.string = (int8_t*) data; |
data += v[i].val_len + 1; |
data += v[i].val_len + 1; |
break; |
break; |
case blob: |
|
rpc_srv_getBLOBVar(&v[i], data); |
|
data += sizeof(rpc_cli_t); |
|
break; |
|
default: |
default: |
break; |
break; |
} |
} |
Line 135 rpc_srv_dispatchCall(void *arg)
|
Line 131 rpc_srv_dispatchCall(void *arg)
|
data += vals[i].val_len + 1; |
data += vals[i].val_len + 1; |
Limit += vals[i].val_len + 1; |
Limit += vals[i].val_len + 1; |
break; |
break; |
case blob: |
|
if (ret || Limit + sizeof(rpc_cli_t) > BUFSIZ) { |
|
rpc_SetErr(EMSGSIZE, "Error:: in prepare RPC packet (-7) ...\n"); |
|
rrpc.ret_retcode = ret = -7; |
|
rrpc.ret_argc = 0; |
|
break; |
|
} |
|
|
|
memcpy(data, &cli, sizeof(rpc_cli_t)); |
|
data += sizeof(rpc_cli_t); |
|
Limit += sizeof(rpc_cli_t); |
|
|
|
rpc_srv_setBLOBVar(&vals[i], &cli); |
|
break; |
|
default: |
default: |
break; |
break; |
} |
} |
Line 226 rpc_srv_dispatchVars(void *arg)
|
Line 208 rpc_srv_dispatchVars(void *arg)
|
ret = -5; |
ret = -5; |
break; |
break; |
} |
} |
// get requested BLOB object |
|
if (!(b = rpc_srv_getBLOB(s, blob->hdr_var))) |
|
if (blob->hdr_cmd != set) { |
|
rpc_SetErr(EINVAL, "Error:: var (%x) not found into BLOB server ...\n", blob->hdr_var); |
|
ret = -6; |
|
break; |
|
} |
|
// Go to proceed packet ... |
// Go to proceed packet ... |
switch (blob->hdr_cmd) { |
switch (blob->hdr_cmd) { |
case get: |
case get: |
|
if (!(b = rpc_srv_getBLOB(s, blob->hdr_var))) { |
|
rpc_SetErr(EINVAL, "Error:: var (%x) not found into BLOB server ...\n", |
|
blob->hdr_var); |
|
ret = -6; |
|
break; |
|
} |
|
|
if (rpc_srv_blobMap(s, b) != -1) { |
if (rpc_srv_blobMap(s, b) != -1) { |
ret = rpc_srv_sendBLOB(c, b); |
ret = rpc_srv_sendBLOB(c, b); |
rpc_srv_blobUnmap(b); |
rpc_srv_blobUnmap(b); |
Line 243 rpc_srv_dispatchVars(void *arg)
|
Line 225 rpc_srv_dispatchVars(void *arg)
|
ret = -7; |
ret = -7; |
break; |
break; |
case set: |
case set: |
if (b) { | if ((b = rpc_srv_registerBLOB(s, blob->hdr_len))) { |
rpc_SetErr(EINVAL, "Error:: Cannot set var into BLOB server, already exists ...\n"); | // set new BLOB variable for reply :) |
ret = -6; | blob->hdr_var = b->blob_var; |
break; | |
} | |
|
|
ret = rpc_srv_recvBLOB(c); | ret = rpc_srv_recvBLOB(c, b); |
if (ret == -1) | rpc_srv_blobUnmap(b); |
| } else |
ret = -7; |
ret = -7; |
break; |
break; |
case unset: |
case unset: |
ret = rpc_srv_blobFree(s, b); | ret = rpc_srv_unregisterBLOB(s, blob->hdr_var); |
if (ret == -1) |
if (ret == -1) |
ret = -7; |
ret = -7; |
break; |
break; |