| version 1.2.4.2, 2011/08/18 19:04:10 | version 1.2.4.7, 2011/08/19 09:20:46 | 
| Line 87  typedef enum { | Line 87  typedef enum { | 
 | } rpc_type_t; | } rpc_type_t; | 
 |  |  | 
 | typedef enum { | typedef enum { | 
| disable, enable,               // for blob.state | disable, enable, kill,               // for blob.state | 
 | ok, error,                      // for blob reply | ok, error,                      // for blob reply | 
 | get, set, unset                 // for blob request | get, set, unset                 // for blob request | 
 | } cmd_type_t; | } cmd_type_t; | 
| Line 226  typedef struct tagRPCFunc { | Line 226  typedef struct tagRPCFunc { | 
 | int8_t                  func_name[UCHAR_MAX + 1]; | int8_t                  func_name[UCHAR_MAX + 1]; | 
 |  |  | 
 | int8_t                  func_args; | int8_t                  func_args; | 
| rpc_val_t               *func_vals; | rpc_val_t               *func_vars; | 
 |  |  | 
 | void                    *func_parent; | void                    *func_parent; | 
 | struct tagRPCFunc       *func_next; | struct tagRPCFunc       *func_next; | 
| Line 295  typedef struct { | Line 295  typedef struct { | 
 | rpc_func_t      *srv_funcs;     // registered functions list | rpc_func_t      *srv_funcs;     // registered functions list | 
 |  |  | 
 | pthread_mutex_t srv_mtx; | pthread_mutex_t srv_mtx; | 
 |  | cmd_type_t      srv_kill; | 
 |  |  | 
 | struct { | struct { | 
| int             state;          // BLOB server state: ==0 disable | !=0 enable | cmd_type_t        state;          // BLOB server state: ==0 disable | !=0 enable | 
 | char            dir[UCHAR_MAX + 1]; | char            dir[UCHAR_MAX + 1]; | 
 |  |  | 
 | rpc_cli_t       server;         // BLOB server socket | rpc_cli_t       server;         // BLOB server socket | 
| Line 324  typedef int (*rpc_callback_t)(rpc_func_t *, int, rpc_v | Line 325  typedef int (*rpc_callback_t)(rpc_func_t *, int, rpc_v | 
 |  |  | 
 | /* Error support functions */ | /* Error support functions */ | 
 |  |  | 
| // cli_GetErrno() Get error code of last operation | // rpc_GetErrno() Get error code of last operation | 
| inline int cli_GetErrno(); | inline int rpc_GetErrno(); | 
| // cli_GetError() Get error text of last operation | // rpc_GetError() Get error text of last operation | 
| inline const char *cli_GetError(); | inline const char *rpc_GetError(); | 
 |  |  | 
 |  |  | 
 | /* RPC Server side functions */ | /* RPC Server side functions */ | 
| Line 360  int rpc_srv_execServer(rpc_srv_t * __restrict srv); | Line 361  int rpc_srv_execServer(rpc_srv_t * __restrict srv); | 
 |  |  | 
 | /* | /* | 
 | * rpc_srv_initBLOBServer() Init & create BLOB Server | * rpc_srv_initBLOBServer() Init & create BLOB Server | 
 |  | * @srv = RPC server instance | 
 |  | * @sockType = Socket type, like SOCK_STREAM, SOCK_DGRAM or SOCK_RAW | 
 | * @Port = Port for bind server, if Port == 0 default port is selected | * @Port = Port for bind server, if Port == 0 default port is selected | 
 | * @diskDir = Disk place for BLOB file objects | * @diskDir = Disk place for BLOB file objects | 
 | * return: -1 == error or 0 bind and created BLOB server instance | * return: -1 == error or 0 bind and created BLOB server instance | 
 | */ | */ | 
| int rpc_srv_initBLOBServer(rpc_srv_t * __restrict srv, u_short Port, const char *diskDir); | int rpc_srv_initBLOBServer(rpc_srv_t * __restrict srv, int sockType, u_short Port, const char *diskDir); | 
 | /* | /* | 
 | * rpc_srv_endBLOBServer() Destroy BLOB server, close all opened sockets and free resources | * rpc_srv_endBLOBServer() Destroy BLOB server, close all opened sockets and free resources | 
 | * @srv = RPC Server instance | * @srv = RPC Server instance | 
| Line 424  int rpc_srv_execCall(rpc_func_t * __restrict call, str | Line 427  int rpc_srv_execCall(rpc_func_t * __restrict call, str | 
 |  |  | 
 |  |  | 
 | /* | /* | 
| * rpc_srv_retValsCall() Declare return variables for RPC call and zeroed values | * rpc_srv_returnVars() Init return variables for RPC call and zeroed values | 
 | (for safe handling return values, use this!) | (for safe handling return values, use this!) | 
 | * @call = RPC function call | * @call = RPC function call | 
| * @return_vals = Number of return variables | * @varnum = Number of return variables | 
| * return: NULL error, !=NULL array with return values for RPC call with return_vals items | * return: NULL error, !=NULL array with return values for RPC call with varnum items | 
 | */ | */ | 
| inline rpc_val_t *rpc_srv_retValsCall(rpc_func_t * __restrict call, int return_vals); | inline rpc_val_t *rpc_srv_returnVars(rpc_func_t * __restrict call, int varnum); | 
 | /* | /* | 
| * rpc_srv_declValsCall() Declare return variables for RPC call, | * rpc_srv_allocVars() Allocate array for call variables, | 
| if already allocated memory for RPC call return values | if already allocated memory for RPC call reallocate used space | 
| function reallocate used space with return_vals count elements |  | 
 | * @call = RPC function call | * @call = RPC function call | 
| * @return_vals = Number of return variables | * @varnum = Number of variables, if ==0 free previous allocated variables | 
| * return: -1 error, !=-1 ok | * return: -1 error, !=-1 return varnum value | 
 | */ | */ | 
| inline int rpc_srv_declValsCall(rpc_func_t * __restrict call, int return_vals); | inline int rpc_srv_allocVars(rpc_func_t * __restrict call, int varnum); | 
|  | #define rpc_srv_freeVars(_call) (assert((_call)), rpc_srv_allocVars((_call), 0)) | 
 | /* | /* | 
| * rpc_srv_freeValsCall() Free return variables for RPC call | * rpc_srv_zeroVars() Clean values from variables of RPC call | 
 | * @call = RPC function call | * @call = RPC function call | 
| * return: none | * return: -1 error, !=-1 Returned number of cleaned RPC variables | 
 | */ | */ | 
| inline void rpc_srv_freeValsCall(rpc_func_t * __restrict call); | inline int rpc_srv_zeroVars(rpc_func_t * __restrict call); | 
 | /* | /* | 
| * rpc_srv_copyValsCall() Copy return variables for RPC call to new variable | * rpc_srv_copyVars() Copy variables for RPC call to new variable array | 
 | * @call = RPC function call | * @call = RPC function call | 
| * @newvals = New allocated variables array, must be free after use | * @newvars = New allocated variables array, must be free after use | 
 | * return: -1 error, !=-1 Returned number of copied RPC variables | * return: -1 error, !=-1 Returned number of copied RPC variables | 
 | */ | */ | 
| inline int rpc_srv_copyValsCall(rpc_func_t * __restrict call, rpc_val_t ** __restrict newvals); | inline int rpc_srv_copyVars(rpc_func_t * __restrict call, rpc_val_t ** __restrict newvars); | 
 | /* | /* | 
| * rpc_srv_zeroValsCall() Clean values from return variables of RPC call | * rpc_srv_getVars() Get variables array for RPC call | 
 | * @call = RPC function call | * @call = RPC function call | 
| * return: -1 error, !=-1 Returned number of cleaned RPC variables | * @vars = Returned variables array, may be NULL | 
| */ |  | 
| inline int rpc_srv_zeroValsCall(rpc_func_t * __restrict call); |  | 
| /* |  | 
| * rpc_srv_getValsCall() Get return variables for RPC call |  | 
| * @call = RPC function call |  | 
| * @vals = Returned variables, may be NULL |  | 
 | * return: -1 error, !=-1 Number of returned variables | * return: -1 error, !=-1 Number of returned variables | 
 | */ | */ | 
| inline int rpc_srv_getValsCall(rpc_func_t * __restrict call, rpc_val_t ** __restrict vals); | inline int rpc_srv_getVars(rpc_func_t * __restrict call, rpc_val_t ** __restrict vars); | 
 |  |  | 
 |  |  | 
 | /* | /* | 
| Line 573  inline int rpc_cli_getBLOB(rpc_cli_t * __restrict cli, | Line 570  inline int rpc_cli_getBLOB(rpc_cli_t * __restrict cli, | 
 | * rpc_cli_openClient() Connect to RPC Server | * rpc_cli_openClient() Connect to RPC Server | 
 | * @ProgID = ProgramID for RPC session request | * @ProgID = ProgramID for RPC session request | 
 | * @ProcID = ProcessID for RPC session request | * @ProcID = ProcessID for RPC session request | 
 |  | * @sockType = Socket type, like SOCK_STREAM, SOCK_DGRAM or SOCK_RAW | 
 | * @family = Family socket type, AF_INET or AF_INET6 | * @family = Family socket type, AF_INET or AF_INET6 | 
 | * @csHost = Host name or IP address for bind server | * @csHost = Host name or IP address for bind server | 
 | * @Port = Port for bind server, if Port == 0 default port is selected | * @Port = Port for bind server, if Port == 0 default port is selected | 
 | * return: NULL == error or !=NULL connection to RPC server established | * return: NULL == error or !=NULL connection to RPC server established | 
 | */ | */ | 
| rpc_cli_t *rpc_cli_openClient(u_int ProgID, u_int ProcID, u_short family, | rpc_cli_t *rpc_cli_openClient(u_int ProgID, u_int ProcID, int sockType, | 
| const char *csHost, u_short Port); | u_short family, const char *csHost, u_short Port); | 
 | /* | /* | 
 | * rpc_cli_closeClient() Close connection to RPC server and free resources | * rpc_cli_closeClient() Close connection to RPC server and free resources | 
 | * @cli = RPC Client session | * @cli = RPC Client session | 
| Line 611  inline void rpc_cli_freeVals(int args, rpc_val_t *vals | Line 609  inline void rpc_cli_freeVals(int args, rpc_val_t *vals | 
 | /* | /* | 
 | * rpc_cli_openBLOBClient() Connect to BLOB Server | * rpc_cli_openBLOBClient() Connect to BLOB Server | 
 | * @rpccli = RPC Client session | * @rpccli = RPC Client session | 
 |  | * @sockType = Socket type, like SOCK_STREAM, SOCK_DGRAM or SOCK_RAW | 
 | * @Port = Port for bind server, if Port == 0 default port is selected | * @Port = Port for bind server, if Port == 0 default port is selected | 
 | * return: NULL == error or !=NULL connection to BLOB server established | * return: NULL == error or !=NULL connection to BLOB server established | 
 | */ | */ | 
| rpc_cli_t *rpc_cli_openBLOBClient(rpc_cli_t * __restrict rpccli, u_short Port); | rpc_cli_t *rpc_cli_openBLOBClient(rpc_cli_t * __restrict rpccli, int sockType, u_short Port); | 
 | /* | /* | 
 | * rpc_cli_closeBLOBClient() Close connection to BLOB server and free resources | * rpc_cli_closeBLOBClient() Close connection to BLOB server and free resources | 
 | * @cli = BLOB Client session | * @cli = BLOB Client session |