--- libaitrpc/inc/aitrpc.h 2013/03/07 23:03:03 1.12.4.2 +++ libaitrpc/inc/aitrpc.h 2013/04/02 09:17:06 1.13.2.1 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: aitrpc.h,v 1.12.4.2 2013/03/07 23:03:03 misho Exp $ +* $Id: aitrpc.h,v 1.13.2.1 2013/04/02 09:17:06 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -62,7 +62,7 @@ SUCH DAMAGE. #include -#define RPC_VERSION 5 +#define RPC_VERSION 6 #define RPC_DEFPORT 2611 /* RPC call request flags */ @@ -91,7 +91,7 @@ SUCH DAMAGE. typedef enum { ok, error, no, /* for blob reply */ get, set, unset /* for blob request */ -} cmd_type_t; +} blob_cmd_type_t; #define RPC_CALLBACK_CHECK_INPUT(x) do { \ @@ -107,10 +107,15 @@ typedef enum { /* RPC session identification */ typedef struct { - uint8_t sess_version; - uint32_t sess_program; - uint8_t sess_process; -} __packed rpc_sess_t; /* size == 6 bytes */ +#if BYTE_ORDER == LITTLE_ENDIAN + uint16_t sess_instance:8; + uint16_t sess_version:8; +#endif +#if BYTE_ORDER == BIG_ENDIAN + uint16_t sess_version:8; + uint16_t sess_instance:8; +#endif +} __packed rpc_sess_t; /* size == 2 bytes */ /* Server managment RPC functions ... */ @@ -137,7 +142,7 @@ struct tagRPCCall { uint16_t call_tag; uint16_t call_argc; ait_val_t call_argv[0]; -} __packed; /* size == 24 bytes */ +} __packed; /* size == 20 bytes */ #define RPC_CHK_NOREPLY(x) ((x)->call_req.flags & RPC_NOREPLY) /* Network BLOB packet - Header */ @@ -148,9 +153,8 @@ struct tagBLOBHdr { uint32_t hdr_var; uint32_t hdr_len; uint32_t hdr_ret; - uint16_t hdr_crc; uint8_t hdr_pad; -} __packed; /* size == 22 bytes */ +} __packed; /* size == 16 bytes */ /* Network RPC client & server elements */ @@ -296,8 +300,7 @@ int rpc_register_blobServices(rpc_srv_t * __restrict s /* * rpc_srv_initServer() - Init & create RPC Server * - * @regProgID = ProgramID for authentication & recognition - * @regProcID = ProcessID for authentication & recognition + * @InstID = Instance for authentication & recognition * @concurentClients = Concurent clients at same time to this server * @netBuf = Network buffer length (min:512 bytes), if =0 == BUFSIZ (also meaning max RPC packet) * @csHost = Host name or address for bind server, if NULL any address @@ -305,8 +308,7 @@ int rpc_register_blobServices(rpc_srv_t * __restrict s * @proto = Protocol, if == 0 choose SOCK_STREAM * return: NULL == error or !=NULL bind and created RPC server instance */ -rpc_srv_t *rpc_srv_initServer(unsigned int regProgID, unsigned char regProcID, - int concurentClients, int netBuf, +rpc_srv_t *rpc_srv_initServer(unsigned char InstID, int concurentClients, int netBuf, const char *csHost, unsigned short Port, int proto); /* * rpc_srv_endServer() - Destroy RPC server, close all opened sockets and free resources @@ -521,15 +523,14 @@ inline int rpc_cli_getBLOB(rpc_cli_t * __restrict cli, /* * rpc_cli_openClient() - Connect to RPC Server * - * @ProgID = ProgramID for RPC session request - * @ProcID = ProcessID for RPC session request + * @InstID = InstID for RPC session request * @netBuf = Network buffer length (min:512 bytes), if =0 == BUFSIZ (also meaning max RPC packet) * @csHost = Host name or IP address for bind server * @Port = Port for bind server, if Port == 0 default port is selected * @proto = Protocol, if == 0 choose SOCK_STREAM * return: NULL == error or !=NULL connection to RPC server established */ -rpc_cli_t *rpc_cli_openClient(unsigned int ProgID, unsigned char ProcID, int netBuf, +rpc_cli_t *rpc_cli_openClient(unsigned char InstID, int netBuf, const char *csHost, unsigned short Port, int proto); /* * rpc_cli_closeClient() - Close connection to RPC server and free resources