version 1.1.2.2, 2010/06/23 15:07:15
|
version 1.1.2.3, 2010/06/24 11:01:46
|
Line 292 rpc_srv_getBLOB(rpc_srv_t * __restrict srv, uint32_t v
|
Line 292 rpc_srv_getBLOB(rpc_srv_t * __restrict srv, uint32_t v
|
return b; |
return b; |
} |
} |
|
|
|
/* |
|
* rpc_srv_registerBLOB() Register new BLOB to server |
|
* @srv = RPC Server instance |
|
* @len = BLOB length |
|
* return: -1 error or 0 register ok |
|
*/ |
|
rpc_blob_t * |
|
rpc_srv_registerBLOB(rpc_srv_t * __restrict srv, size_t len) |
|
{ |
|
rpc_blob_t *blob = NULL; |
|
|
|
if (!srv || !len) { |
|
rpc_SetErr(EINVAL, "Error:: Invalid parameter can`t register BLOB to server ...\n"); |
|
return blob; |
|
} |
|
|
|
blob = rpc_srv_blobCreate(srv, len); |
|
if (blob) { |
|
pthread_mutex_lock(&srv->srv_blob.mtx); |
|
blob->blob_next = srv->srv_blob.blobs; |
|
srv->srv_blob.blobs = blob; |
|
pthread_mutex_unlock(&srv->srv_blob.mtx); |
|
} |
|
|
|
return blob; |
|
} |
|
|
|
/* |
|
* rpc_srv_unregisterBLOB() Unregister BLOB from server |
|
* @srv = RPC Server instance |
|
* @var = BLOB Variable for unregister |
|
* return: -1 error, 0 not found call, 1 unregister ok |
|
*/ |
|
int |
|
rpc_srv_unregisterBLOB(rpc_srv_t * __restrict srv, uint32_t var) |
|
{ |
|
rpc_blob_t *b, *curr; |
|
|
|
if (!srv) { |
|
rpc_SetErr(EINVAL, "Error:: Invalid parameter can`t unregister BLOB from server ...\n"); |
|
return -1; |
|
} |
|
|
|
b = rpc_srv_getBLOB(srv, var); |
|
if (!b) // not found element for unregister |
|
return 0; |
|
|
|
pthread_mutex_lock(&srv->srv_blob.mtx); |
|
if (srv->srv_blob.blobs == b) { // if is 1st element |
|
srv->srv_blob.blobs = srv->srv_blob.blobs->blob_next; |
|
} else { |
|
for (curr = srv->srv_blob.blobs; curr->blob_next != b; curr = curr->blob_next); |
|
curr->blob_next = curr->blob_next->blob_next; |
|
} |
|
rpc_srv_blobFree(srv, b); |
|
free(b); |
|
pthread_mutex_unlock(&srv->srv_blob.mtx); |
|
|
|
return 1; |
|
} |