version 1.2.4.3, 2011/08/19 13:03:06
|
version 1.4.4.1, 2012/03/13 17:21:52
|
Line 12 terms:
|
Line 12 terms:
|
All of the documentation and software included in the ELWIX and AITNET |
All of the documentation and software included in the ELWIX and AITNET |
Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org> |
Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org> |
|
|
Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 | Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 |
by Michael Pounov <misho@elwix.org>. All rights reserved. |
by Michael Pounov <misho@elwix.org>. All rights reserved. |
|
|
Redistribution and use in source and binary forms, with or without |
Redistribution and use in source and binary forms, with or without |
Line 70 rpc_srv_blobCreate(rpc_srv_t * __restrict srv, int len
|
Line 70 rpc_srv_blobCreate(rpc_srv_t * __restrict srv, int len
|
again: |
again: |
rnd = random() % UINT_MAX; |
rnd = random() % UINT_MAX; |
|
|
memset(szFName, 0, MAXPATHLEN); | memset(szFName, 0, sizeof szFName); |
snprintf(szFName, MAXPATHLEN, BLOB_FILE, srv->srv_blob.dir, rnd); | snprintf(szFName, sizeof szFName, BLOB_FILE, AIT_GET_STR(&srv->srv_blob.dir), rnd); |
f = open(szFName, O_CREAT | O_EXCL | O_RDWR, 0600); |
f = open(szFName, O_CREAT | O_EXCL | O_RDWR, 0600); |
if (f == -1) { |
if (f == -1) { |
if (errno == EEXIST) |
if (errno == EEXIST) |
Line 127 rpc_srv_blobMap(rpc_srv_t * __restrict srv, rpc_blob_t
|
Line 127 rpc_srv_blobMap(rpc_srv_t * __restrict srv, rpc_blob_t
|
rpc_SetErr(EINVAL, "Error:: invalid arguments ...\n"); |
rpc_SetErr(EINVAL, "Error:: invalid arguments ...\n"); |
return -1; |
return -1; |
} |
} |
|
if (blob->blob_data) { |
|
rpc_SetErr(EPERM, "Error:: already mmapped object found!\n"); |
|
return -1; |
|
} |
|
|
memset(szFName, 0, MAXPATHLEN); | memset(szFName, 0, sizeof szFName); |
snprintf(szFName, MAXPATHLEN, BLOB_FILE, srv->srv_blob.dir, blob->blob_var); | snprintf(szFName, sizeof szFName, BLOB_FILE, AIT_GET_STR(&srv->srv_blob.dir), blob->blob_var); |
f = open(szFName, O_RDWR); |
f = open(szFName, O_RDWR); |
if (f == -1) { |
if (f == -1) { |
LOGERR; |
LOGERR; |
Line 186 rpc_srv_blobFree(rpc_srv_t * __restrict srv, rpc_blob_
|
Line 190 rpc_srv_blobFree(rpc_srv_t * __restrict srv, rpc_blob_
|
if (blob->blob_data) |
if (blob->blob_data) |
rpc_srv_blobUnmap(blob); |
rpc_srv_blobUnmap(blob); |
|
|
memset(szFName, 0, MAXPATHLEN); | memset(szFName, 0, sizeof szFName); |
snprintf(szFName, MAXPATHLEN, BLOB_FILE, srv->srv_blob.dir, blob->blob_var); | snprintf(szFName, sizeof szFName, BLOB_FILE, AIT_GET_STR(&srv->srv_blob.dir), blob->blob_var); |
if (unlink(szFName) == -1) { |
if (unlink(szFName) == -1) { |
LOGERR; |
LOGERR; |
return -1; |
return -1; |
Line 216 rpc_srv_sendBLOB(rpc_cli_t * __restrict cli, rpc_blob_
|
Line 220 rpc_srv_sendBLOB(rpc_cli_t * __restrict cli, rpc_blob_
|
} |
} |
|
|
for (ret = blob->blob_len, pos = blob->blob_data; ret > 0; ret -= len, pos += len) { |
for (ret = blob->blob_len, pos = blob->blob_data; ret > 0; ret -= len, pos += len) { |
len = send(cli->cli_sock, pos, ret > BLOBSIZ ? BLOBSIZ : ret, 0); | len = send(cli->cli_sock, pos, ret, 0); |
if (len == -1) { |
if (len == -1) { |
LOGERR; |
LOGERR; |
return -1; |
return -1; |
Line 254 rpc_srv_recvBLOB(rpc_cli_t * __restrict cli, rpc_blob_
|
Line 258 rpc_srv_recvBLOB(rpc_cli_t * __restrict cli, rpc_blob_
|
return -1; |
return -1; |
} |
} |
|
|
len = recv(cli->cli_sock, pos, BLOBSIZ, 0); | len = recv(cli->cli_sock, pos, ret, 0); |
if (len == -1) { |
if (len == -1) { |
LOGERR; |
LOGERR; |
return -1; |
return -1; |
Line 274 rpc_srv_recvBLOB(rpc_cli_t * __restrict cli, rpc_blob_
|
Line 278 rpc_srv_recvBLOB(rpc_cli_t * __restrict cli, rpc_blob_
|
* return: -1 error, 0 ok, 1 remote error |
* return: -1 error, 0 ok, 1 remote error |
*/ |
*/ |
int |
int |
rpc_cli_sendBLOB(rpc_cli_t * __restrict cli, rpc_val_t * __restrict var, void * __restrict data) | rpc_cli_sendBLOB(rpc_cli_t * __restrict cli, ait_val_t * __restrict var, void * __restrict data) |
{ |
{ |
int ret, len; |
int ret, len; |
uint8_t *pos; |
uint8_t *pos; |
Line 291 rpc_cli_sendBLOB(rpc_cli_t * __restrict cli, rpc_val_t
|
Line 295 rpc_cli_sendBLOB(rpc_cli_t * __restrict cli, rpc_val_t
|
hdr.hdr_cmd = set; |
hdr.hdr_cmd = set; |
hdr.hdr_var = 0; |
hdr.hdr_var = 0; |
hdr.hdr_ret = 0; |
hdr.hdr_ret = 0; |
hdr.hdr_len = var->val_len; | hdr.hdr_len = AIT_LEN(var); |
if (send(cli->cli_sock, &hdr, sizeof hdr, 0) == -1) { |
if (send(cli->cli_sock, &hdr, sizeof hdr, 0) == -1) { |
LOGERR; |
LOGERR; |
return -1; |
return -1; |
} |
} |
|
|
for (ret = var->val_len, pos = data; ret > 0; ret -= len, pos += len) | /* send BLOB to server */ |
if ((len = send(cli->cli_sock, pos, ret > BLOBSIZ ? BLOBSIZ : ret, 0)) == -1) { | for (ret = AIT_LEN(var), pos = data; ret > 0; ret -= len, pos += len) |
| if ((len = send(cli->cli_sock, pos, ret, 0)) == -1) { |
LOGERR; |
LOGERR; |
return -1; |
return -1; |
} |
} |
Line 318 rpc_cli_sendBLOB(rpc_cli_t * __restrict cli, rpc_val_t
|
Line 323 rpc_cli_sendBLOB(rpc_cli_t * __restrict cli, rpc_val_t
|
return -1; |
return -1; |
} |
} |
if (hdr.hdr_cmd != error) { |
if (hdr.hdr_cmd != error) { |
if (hdr.hdr_len != var->val_len) { | if (hdr.hdr_len != AIT_LEN(var)) { |
rpc_SetErr(ECANCELED, "Error:: Bad return length packet ...\n"); |
rpc_SetErr(ECANCELED, "Error:: Bad return length packet ...\n"); |
return -1; |
return -1; |
} |
} |
Line 337 rpc_cli_sendBLOB(rpc_cli_t * __restrict cli, rpc_val_t
|
Line 342 rpc_cli_sendBLOB(rpc_cli_t * __restrict cli, rpc_val_t
|
* return: -1 error, 0 ok, 1 remote error |
* return: -1 error, 0 ok, 1 remote error |
*/ |
*/ |
int |
int |
rpc_cli_recvBLOB(rpc_cli_t * __restrict cli, rpc_val_t * __restrict var, void ** data) | rpc_cli_recvBLOB(rpc_cli_t * __restrict cli, ait_val_t * __restrict var, void ** __restrict data) |
{ |
{ |
int ret, len; |
int ret, len; |
uint8_t *pos; |
uint8_t *pos; |
Line 350 rpc_cli_recvBLOB(rpc_cli_t * __restrict cli, rpc_val_t
|
Line 355 rpc_cli_recvBLOB(rpc_cli_t * __restrict cli, rpc_val_t
|
return -1; |
return -1; |
} |
} |
|
|
*data = malloc(var->val_len); | *data = malloc(AIT_LEN(var)); |
if (!*data) { |
if (!*data) { |
LOGERR; |
LOGERR; |
return -1; |
return -1; |
} else |
} else |
memset(*data, 0, var->val_len); | memset(*data, 0, AIT_LEN(var)); |
|
|
memcpy(&hdr.hdr_session, cli->cli_parent, sizeof(rpc_sess_t)); |
memcpy(&hdr.hdr_session, cli->cli_parent, sizeof(rpc_sess_t)); |
hdr.hdr_cmd = get; |
hdr.hdr_cmd = get; |
hdr.hdr_var = (uint32_t) RPC_GET_BLOB(var); | hdr.hdr_var = (uint32_t) AIT_GET_BLOB(var); |
hdr.hdr_ret = 0; |
hdr.hdr_ret = 0; |
hdr.hdr_len = 0; |
hdr.hdr_len = 0; |
if (send(cli->cli_sock, &hdr, sizeof hdr, 0) == -1) { |
if (send(cli->cli_sock, &hdr, sizeof hdr, 0) == -1) { |
Line 369 rpc_cli_recvBLOB(rpc_cli_t * __restrict cli, rpc_val_t
|
Line 374 rpc_cli_recvBLOB(rpc_cli_t * __restrict cli, rpc_val_t
|
return -1; |
return -1; |
} |
} |
|
|
for (ret = var->val_len, pos = *data; ret > 0; ret -= len, pos += len) { | /* receive BLOB from server */ |
| for (ret = AIT_LEN(var), pos = *data; ret > 0; ret -= len, pos += len) { |
FD_ZERO(&fds); |
FD_ZERO(&fds); |
FD_SET(cli->cli_sock, &fds); |
FD_SET(cli->cli_sock, &fds); |
len = select(cli->cli_sock + 1, &fds, NULL, NULL, &tv); |
len = select(cli->cli_sock + 1, &fds, NULL, NULL, &tv); |
Line 380 rpc_cli_recvBLOB(rpc_cli_t * __restrict cli, rpc_val_t
|
Line 386 rpc_cli_recvBLOB(rpc_cli_t * __restrict cli, rpc_val_t
|
return -1; |
return -1; |
} |
} |
|
|
if ((len = recv(cli->cli_sock, pos, BLOBSIZ, 0)) == -1) { | if ((len = recv(cli->cli_sock, pos, ret, 0)) == -1) { |
LOGERR; |
LOGERR; |
free(*data); |
free(*data); |
*data = NULL; |
*data = NULL; |
Line 409 rpc_cli_recvBLOB(rpc_cli_t * __restrict cli, rpc_val_t
|
Line 415 rpc_cli_recvBLOB(rpc_cli_t * __restrict cli, rpc_val_t
|
return -1; |
return -1; |
} |
} |
if (hdr.hdr_cmd != error) { |
if (hdr.hdr_cmd != error) { |
if (hdr.hdr_len != var->val_len) { | if (hdr.hdr_len != AIT_LEN(var)) { |
rpc_SetErr(ECANCELED, "Error:: Bad return length packet ...\n"); |
rpc_SetErr(ECANCELED, "Error:: Bad return length packet ...\n"); |
free(*data); |
free(*data); |
*data = NULL; |
*data = NULL; |
Line 427 rpc_cli_recvBLOB(rpc_cli_t * __restrict cli, rpc_val_t
|
Line 433 rpc_cli_recvBLOB(rpc_cli_t * __restrict cli, rpc_val_t
|
* return: -1 error, 0 ok, 1 remote error |
* return: -1 error, 0 ok, 1 remote error |
*/ |
*/ |
int |
int |
rpc_cli_delBLOB(rpc_cli_t * __restrict cli, rpc_val_t * __restrict var) | rpc_cli_delBLOB(rpc_cli_t * __restrict cli, ait_val_t * __restrict var) |
{ |
{ |
struct tagBLOBHdr hdr; |
struct tagBLOBHdr hdr; |
fd_set fds; |
fd_set fds; |
Line 440 rpc_cli_delBLOB(rpc_cli_t * __restrict cli, rpc_val_t
|
Line 446 rpc_cli_delBLOB(rpc_cli_t * __restrict cli, rpc_val_t
|
|
|
memcpy(&hdr.hdr_session, cli->cli_parent, sizeof(rpc_sess_t)); |
memcpy(&hdr.hdr_session, cli->cli_parent, sizeof(rpc_sess_t)); |
hdr.hdr_cmd = unset; |
hdr.hdr_cmd = unset; |
hdr.hdr_var = (uint32_t) RPC_GET_BLOB(var); | hdr.hdr_var = (uint32_t) AIT_GET_BLOB(var); |
hdr.hdr_ret = 0; |
hdr.hdr_ret = 0; |
hdr.hdr_len = 0; |
hdr.hdr_len = 0; |
if (send(cli->cli_sock, &hdr, sizeof hdr, 0) == -1) { |
if (send(cli->cli_sock, &hdr, sizeof hdr, 0) == -1) { |
Line 474 rpc_cli_delBLOB(rpc_cli_t * __restrict cli, rpc_val_t
|
Line 480 rpc_cli_delBLOB(rpc_cli_t * __restrict cli, rpc_val_t
|
* return: -1 error, 0 ok, 1 remote error |
* return: -1 error, 0 ok, 1 remote error |
*/ |
*/ |
inline int |
inline int |
rpc_cli_getBLOB(rpc_cli_t * __restrict cli, rpc_val_t * __restrict var, void ** data) | rpc_cli_getBLOB(rpc_cli_t * __restrict cli, ait_val_t * __restrict var, void ** __restrict data) |
{ |
{ |
int ret; |
int ret; |
|
|