--- libaitrpc/inc/aitrpc.h 2013/07/15 13:53:09 1.15.2.1 +++ libaitrpc/inc/aitrpc.h 2013/08/20 23:25:18 1.17.2.1 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: aitrpc.h,v 1.15.2.1 2013/07/15 13:53:09 misho Exp $ +* $Id: aitrpc.h,v 1.17.2.1 2013/08/20 23:25:18 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -85,6 +85,8 @@ SUCH DAMAGE. #define CALL_BLOBCLIENTS 65528 #define CALL_BLOBVARS 65527 +/* RPC signals */ +#define SIGFBLOB 54 /* RPC types */ @@ -196,7 +198,7 @@ typedef struct { int cli_id; /* slot id */ int cli_sock; /* socket fd */ sockaddr_t cli_sa; /* host address */ - ait_val_t cli_buf; /* network buffer */ + array_t *cli_buf; /* network buffer(s) */ array_t *cli_vars; /* function return variables */ @@ -254,8 +256,11 @@ typedef int (*rpc_callback_t)(rpc_cli_t *, struct tagR int rpc_GetErrno(); // rpc_GetError() Get error text of last operation const char *rpc_GetError(); +// rpc_SetErr() Set error to variables for internal use!!! +void rpc_SetErr(int eno, char *estr, ...); + /* * rpc_chkPktSession() - Check RPC session * @@ -409,9 +414,10 @@ int rpc_srv_execCall(rpc_cli_t * __restrict cli, struc * * @srv = RPC Server instance * @len = BLOB length object + * @tout = BLOB live timeout in seconds * return: NULL error or !=NULL allocated BLOB object */ -rpc_blob_t *rpc_srv_blobCreate(rpc_srv_t * __restrict srv, int len); +rpc_blob_t *rpc_srv_blobCreate(rpc_srv_t * __restrict srv, int len, int tout); /* * rpc_srv_blobMap() - Map blob to memory region * @@ -441,9 +447,10 @@ int rpc_srv_blobFree(rpc_srv_t * __restrict srv, rpc_b * * @srv = RPC Server instance * @len = BLOB length + * @tout = BLOB live timeout in seconds * return: NULL error or new registered BLOB */ -rpc_blob_t *rpc_srv_registerBLOB(rpc_srv_t * __restrict srv, size_t len); +rpc_blob_t *rpc_srv_registerBLOB(rpc_srv_t * __restrict srv, size_t len, int tout); /* * rpc_srv_unregisterBLOB() - Unregister BLOB from server * @@ -486,11 +493,11 @@ int rpc_srv_recvBLOB(rpc_cli_t * __restrict cli, rpc_b * @cli = Client instance * @var = BLOB variable * @data = BLOB data - * @tout = BLOB live on server timeout in seconds, if =NULL default timeout + * @tout = BLOB live on server timeout in seconds, if =0 default timeout * return: -1 error, 0 ok, 1 remote error */ int rpc_cli_sendBLOB(rpc_cli_t * __restrict cli, ait_val_t * __restrict var, - void * __restrict data, int * __restrict tout); + void * __restrict data, int tout); /* * rpc_cli_recvBLOB() - Receive BLOB from server *