Diff for /libaitrpc/inc/aitrpc.h between versions 1.8.2.21 and 1.9.2.1

version 1.8.2.21, 2012/05/17 15:21:08 version 1.9.2.1, 2012/05/28 08:02:00
Line 94  typedef enum { Line 94  typedef enum {
 } cmd_type_t;  } cmd_type_t;
   
   
#define RPC_CALLBACK_CHECK_INPUT(_f)       do { \#define RPC_CALLBACK_CHECK_INPUT(x)       do { \
                                                assert((_f)); \                                                assert((x)); \
                                                if (!(_f)) { \                                                if (!(x)) { \
                                                         rpc_SetErr(EINVAL, \                                                          rpc_SetErr(EINVAL, \
                                                                         "Invalid callback parameters ..."); \                                                                          "Invalid callback parameters ..."); \
                                                         return -1; \                                                          return -1; \
                                                 } \                                                  } \
                                         } while (0)                                          } while (0)
 #define RPC_CALLBACK_CHK_ARGS(_f, _n)   do { \  
                                                 RPC_CALLBACK_CHECK_INPUT((_f)); \  
                                                 if ((_f) && io_arraySize((_f)->func_vars) < _n) { \  
                                                         rpc_SetErr(EINVAL, \  
                                                                         "Not enough number of arguments!"); \  
                                                         return -1; \  
                                                 } \  
                                         } while (0)  
   
   
 /* RPC session identification */  /* RPC session identification */
Line 146  struct tagRPCCall { Line 138  struct tagRPCCall {
         uint16_t        call_argc;          uint16_t        call_argc;
         ait_val_t       call_argv[0];          ait_val_t       call_argv[0];
 } __packed;                     /* size == 24 bytes */  } __packed;                     /* size == 24 bytes */
   #define RPC_CHK_NOREPLY(x)      ((x)->call_req.flags & RPC_NOREPLY)
   
 /* Network BLOB packet - Header */  /* Network BLOB packet - Header */
   
Line 165  struct tagBLOBHdr { Line 158  struct tagBLOBHdr {
 typedef struct tagRPCFunc {  typedef struct tagRPCFunc {
         ait_val_t               func_name;          ait_val_t               func_name;
   
         array_t                 *func_vars;  
   
         void                    *func_parent;          void                    *func_parent;
         TAILQ_ENTRY(tagRPCFunc) func_node;          TAILQ_ENTRY(tagRPCFunc) func_node;
 } rpc_func_t;  } rpc_func_t;
 #define RPC_FUNC_RETVARS(x)     ((x)->func_vars)  
 #define RPC_FUNC_SERVER(x)      ((rpc_srv_t*) (x)->func_parent)  #define RPC_FUNC_SERVER(x)      ((rpc_srv_t*) (x)->func_parent)
   
   
Line 191  typedef struct { Line 181  typedef struct {
         io_sockaddr_t   cli_sa;         /* host address */          io_sockaddr_t   cli_sa;         /* host address */
         ait_val_t       cli_buf;        /* network buffer */          ait_val_t       cli_buf;        /* network buffer */
   
           array_t         *cli_vars;      /* function return variables */
   
         void            *cli_parent;    /* pointer to parent rpc_srv_t for server or to rpc_sess_t for client */          void            *cli_parent;    /* pointer to parent rpc_srv_t for server or to rpc_sess_t for client */
 } rpc_cli_t;  } rpc_cli_t;
   #define RPC_RETVARS(x)          ((x)->cli_vars)
   #define RPC_SRV_SERVER(x)       ((rpc_srv_t*) (x)->cli_parent)
   #define RPC_CLI_SESSION(x)      ((rpc_sess_t*) (x)->cli_parent)
   
 typedef struct {  typedef struct {
         rpc_sess_t                      srv_session;    /* RPC session registration info */          rpc_sess_t                      srv_session;    /* RPC session registration info */
Line 225  typedef struct { Line 220  typedef struct {
 /*   /* 
  * (*rpc_callback_t)() - Callback type definition for RPC call in server process   * (*rpc_callback_t)() - Callback type definition for RPC call in server process
  *   *
 * @arg1 = current execution RPC call function * @arg1 = RPC client
  * @arg2 = RPC packet header   * @arg2 = RPC packet header
  * @arg3 = input array with values from RPC call execution request   * @arg3 = input array with values from RPC call execution request
  * return: -1 error or >-1 success execution   * return: -1 error or >-1 success execution
  */   */
typedef int (*rpc_callback_t)(rpc_func_t *, struct tagRPCCall *, array_t *);typedef int (*rpc_callback_t)(rpc_cli_t *, struct tagRPCCall *, array_t *);
   
   
 /* ----------------------------------------------------------------------- */  /* ----------------------------------------------------------------------- */
Line 304  rpc_srv_t *rpc_srv_initServer(unsigned int regProgID,  Line 299  rpc_srv_t *rpc_srv_initServer(unsigned int regProgID, 
  * @psrv = RPC Server instance   * @psrv = RPC Server instance
  * return: none   * return: none
  */   */
void rpc_srv_endServer(rpc_srv_t ** __restrict psrv);inline void rpc_srv_endServer(rpc_srv_t ** __restrict psrv);
 /*  /*
  * rpc_srv_loopServer() - Execute Main server loop and wait for clients requests   * rpc_srv_loopServer() - Execute Main server loop and wait for clients requests
  *   *
Line 337  int rpc_srv_initBLOBServer(rpc_srv_t * __restrict srv, Line 332  int rpc_srv_initBLOBServer(rpc_srv_t * __restrict srv,
  * @srv = RPC Server instance   * @srv = RPC Server instance
  * return: none   * return: none
  */   */
void rpc_srv_endBLOBServer(rpc_srv_t * __restrict srv);inline void rpc_srv_endBLOBServer(rpc_srv_t * __restrict srv);
 /*  /*
  * rpc_srv_loopBLOB() - Execute Main BLOB server loop and wait for clients requests   * rpc_srv_loopBLOB() - Execute Main BLOB server loop and wait for clients requests
  *   *
Line 360  int rpc_srv_loopBLOBServer(rpc_srv_t * __restrict srv) Line 355  int rpc_srv_loopBLOBServer(rpc_srv_t * __restrict srv)
  * @srv = RPC Server instance   * @srv = RPC Server instance
  * @tag = Function tag   * @tag = Function tag
  * @funcaddr = Function address   * @funcaddr = Function address
  * @args = Number of return function arguments  
  * return: -1 error, 0 already registered tag or 1 register ok   * return: -1 error, 0 already registered tag or 1 register ok
  */   */
int rpc_srv_registerCall(rpc_srv_t * __restrict srv, unsigned short tag, int rpc_srv_registerCall(rpc_srv_t * __restrict srv, unsigned short tag, void *funcaddr);
                void *funcaddr, unsigned short args); 
 /*  /*
  * rpc_srv_unregisterCall() - Unregister call from RPC server   * rpc_srv_unregisterCall() - Unregister call from RPC server
  *   *
Line 382  int rpc_srv_unregisterCall(rpc_srv_t * __restrict srv, Line 375  int rpc_srv_unregisterCall(rpc_srv_t * __restrict srv,
  */   */
 inline rpc_func_t *rpc_srv_getCall(rpc_srv_t * __restrict srv, uint16_t tag);  inline rpc_func_t *rpc_srv_getCall(rpc_srv_t * __restrict srv, uint16_t tag);
 /*  /*
 * rpc_srv_execCall() - Execute registered call from RPC server * rpc_srv_execCall() Execute registered call from RPC server
  *   *
 * @call = Register RPC call * @cli = RPC client
  * @rpc = IN RPC call structure   * @rpc = IN RPC call structure
    * @funcname = Execute RPC function
  * @args = IN RPC calling arguments from RPC client   * @args = IN RPC calling arguments from RPC client
  * return: -1 error, !=-1 ok   * return: -1 error, !=-1 ok
  */   */
int rpc_srv_execCall(rpc_func_t * __restrict call, struct tagRPCCall * __restrict rpc, int rpc_srv_execCall(rpc_cli_t * __restrict cli, struct tagRPCCall * __restrict rpc, 
                array_t * __restrict args);                ait_val_t funcname, array_t * __restrict args);
   
   
 /*  /*
Line 483  int rpc_cli_sendBLOB(rpc_cli_t * __restrict cli, ait_v Line 477  int rpc_cli_sendBLOB(rpc_cli_t * __restrict cli, ait_v
  *   *
  * @cli = Client instance   * @cli = Client instance
  * @var = BLOB variable   * @var = BLOB variable
 * @data = BLOB data, must be free after use! * @data = BLOB data, must be io_free after use!
  * return: -1 error, 0 ok, 1 remote error   * return: -1 error, 0 ok, 1 remote error
  */   */
 int rpc_cli_recvBLOB(rpc_cli_t * __restrict cli, ait_val_t * __restrict var, void ** __restrict data);  int rpc_cli_recvBLOB(rpc_cli_t * __restrict cli, ait_val_t * __restrict var, void ** __restrict data);
Line 500  int rpc_cli_delBLOB(rpc_cli_t * __restrict cli, ait_va Line 494  int rpc_cli_delBLOB(rpc_cli_t * __restrict cli, ait_va
  *   *
  * @cli = Client instance   * @cli = Client instance
  * @var = BLOB variable   * @var = BLOB variable
 * @data = BLOB data, must be free after use! * @data = BLOB data, must be io_free after use!
  * return: -1 error, 0 ok, >0 remote error   * return: -1 error, 0 ok, >0 remote error
  */   */
 inline int rpc_cli_getBLOB(rpc_cli_t * __restrict cli, ait_val_t * __restrict var,   inline int rpc_cli_getBLOB(rpc_cli_t * __restrict cli, ait_val_t * __restrict var, 

Removed from v.1.8.2.21  
changed lines
  Added in v.1.9.2.1


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>