--- libaitrpc/inc/aitrpc.h 2012/05/15 20:49:46 1.8.2.3 +++ libaitrpc/inc/aitrpc.h 2012/05/16 07:37:37 1.8.2.7 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: aitrpc.h,v 1.8.2.3 2012/05/15 20:49:46 misho Exp $ +* $Id: aitrpc.h,v 1.8.2.7 2012/05/16 07:37:37 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -72,15 +72,25 @@ SUCH DAMAGE. /* RPC builtin registed calls */ +#define CALL_MAX_ID 65535 + #define CALL_BLOBSHUTDOWN "rpcBLOBServerShutdown" +#define CALL_BLOBSHUTDOWN_ID 65530 #define CALL_BLOBCLIENTS "rpcBLOBServerClients" +#define CALL_BLOBCLIENTS_ID 65529 #define CALL_BLOBVARS "rpcBLOBServerVars" +#define CALL_BLOBVARS_ID 65528 #define CALL_BLOBSTATE "rpcBLOBServerState" +#define CALL_BLOBSTATE_ID 65527 #define CALL_SRVSHUTDOWN "rpcServerShutdown" +#define CALL_SRVSHUTDOWN_ID 65534 #define CALL_SRVCLIENTS "rpcServerClients" +#define CALL_SRVCLIENTS_ID 65533 #define CALL_SRVCALLS "rpcServerCalls" +#define CALL_SRVCALLS_ID 65532 #define CALL_SRVSESSIONS "rpcServerSessions" +#define CALL_SRVSESSIONS_ID 65531 /* RPC types */ @@ -143,7 +153,7 @@ struct tagRPCCall { uint16_t call_tag; uint16_t call_argc; ait_val_t call_argv[0]; -} __packed; /* size == 24 bytes */ +} __packed; /* size == 24 bytes */ /* Network BLOB packet - Header */ @@ -203,13 +213,13 @@ typedef struct { TAILQ_HEAD(, tagRPCFunc) srv_funcs; /* RPC functions list */ struct { - cmd_type_t state; // BLOB server state: ==0 disable | !=0 enable - ait_val_t dir; + cmd_type_t state; /* BLOB server state: ==0 disable | !=0 enable */ + ait_val_t dir; /* BLOB states directory */ - rpc_cli_t server; // BLOB server socket - rpc_cli_t *clients; // connected blob client sockets + rpc_cli_t server; /* BLOB server socket */ + array_t *clients; /* connected blob client sockets */ - rpc_blob_t *blobs; // registered blob variables list + rpc_blob_t *blobs; /* registered blob variables list */ } srv_blob; } rpc_srv_t; @@ -258,6 +268,13 @@ inline int rpc_addPktSession(rpc_sess_t *p, rpc_sess_t * return: -1 error or 0 ok */ int rpc_register_srvServices(rpc_srv_t * __restrict srv); +/* + * rpc_register_blobServices() - Register internal service functions + * + * @srv = RPC server instance + * return: -1 error or 0 ok + */ +int rpc_register_blobServices(rpc_srv_t * __restrict srv); /* RPC Server side functions */ @@ -335,35 +352,25 @@ int rpc_srv_loopBLOB(rpc_srv_t * __restrict srv); * rpc_srv_registerCall() - Register call to RPC server * * @srv = RPC Server instance - * @csModule = Module name, if NULL self binary - * @csFunc = Function name - * @args = Number of return function arguments, use for restriction case! - * return: -1 error or 0 register ok + * @tag = Function tag + * @funcaddr = Function address + * @args = Number of return function arguments + * return: -1 error, 0 already registered tag or 1 register ok */ -int rpc_srv_registerCall(rpc_srv_t * __restrict srv, const char *csModule, const char *csFunc, - unsigned short args); +int rpc_srv_registerCall(rpc_srv_t * __restrict srv, unsigned short tag, + void *funcaddr, unsigned short args); /* * rpc_srv_unregisterCall() - Unregister call from RPC server * * @srv = RPC Server instance - * @csModule = Module name, if NULL self binary - * @csFunc = Function name + * @tag = Function tag * return: -1 error, 0 not found call, 1 unregister ok */ -int rpc_srv_unregisterCall(rpc_srv_t * __restrict srv, const char *csModule, const char *csFunc); +int rpc_srv_unregisterCall(rpc_srv_t * __restrict srv, unsigned short tag); /* - * rpc_srv_getFunc() - Get registered call from RPC server by Name + * rpc_srv_getCall() - Get registered call from RPC server * * @srv = RPC Server instance - * @csModule = Module name, if NULL self binary - * @csFunc = Function name - * return: NULL not found call, !=NULL return call - */ -rpc_func_t *rpc_srv_getFunc(rpc_srv_t * __restrict srv, const char *csModule, const char *csFunc); -/* - * rpc_srv_getCall() - Get registered call from RPC server - * - * @srv = RPC Server instance * @tag = tag for function * return: NULL not found call, !=NULL return call */ @@ -381,16 +388,6 @@ int rpc_srv_execCall(rpc_func_t * __restrict call, str /* - * rpc_srv_getVars() - Get variables array for RPC call - * - * @call = RPC function call - * @vars = Returned variables array, may be NULL - * return: -1 error, !=-1 Number of returned variables - */ -inline int rpc_srv_getVars(rpc_func_t * __restrict call, array_t ** __restrict vars); - - -/* * rpc_srv_blobCreate() - Create map blob to memory region and return object * * @srv = RPC Server instance @@ -502,17 +499,6 @@ int rpc_cli_delBLOB(rpc_cli_t * __restrict cli, ait_va */ inline int rpc_cli_getBLOB(rpc_cli_t * __restrict cli, ait_val_t * __restrict var, void ** __restrict data); - - -/* - * rpc_calcHashes() - Calculate hashes for RPC call - * - * @func = function - * @csModule = Module name, if NULL self binary - * @csFunc = Function name - * return: -1 error or 0 ok - */ -int rpc_calcHashes(rpc_func_t * __restrict func, const char *csModule, const char *csFunc); /* RPC Client side functions */