Diff for /libaitrpc/inc/aitrpc.h between versions 1.4.2.2 and 1.5.2.2

version 1.4.2.2, 2011/09/07 09:42:46 version 1.5.2.2, 2012/03/12 14:53:07
Line 12  terms: Line 12  terms:
 All of the documentation and software included in the ELWIX and AITNET  All of the documentation and software included in the ELWIX and AITNET
 Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org>  Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org>
   
Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
         by Michael Pounov <misho@elwix.org>.  All rights reserved.          by Michael Pounov <misho@elwix.org>.  All rights reserved.
   
 Redistribution and use in source and binary forms, with or without  Redistribution and use in source and binary forms, with or without
Line 50  SUCH DAMAGE. Line 50  SUCH DAMAGE.
 #include <assert.h>  #include <assert.h>
 #include <stdlib.h>  #include <stdlib.h>
 #include <string.h>  #include <string.h>
   #include <errno.h>
 #include <sys/types.h>  #include <sys/types.h>
 #include <sys/param.h>  #include <sys/param.h>
 #if !defined(__NetBSD__)  #if !defined(__NetBSD__)
Line 57  SUCH DAMAGE. Line 58  SUCH DAMAGE.
 #endif  #endif
 #include <sys/socket.h>  #include <sys/socket.h>
 #include <aitio.h>  #include <aitio.h>
   #include <aitsched.h>
   
   
#define RPC_VERSION             2#define RPC_VERSION             3
 #define RPC_DEFPORT             2611  #define RPC_DEFPORT             2611
   
   
Line 88  typedef enum { Line 90  typedef enum {
 #define RPC_CALLBACK_CHECK_INPUT(_f)    do { \  #define RPC_CALLBACK_CHECK_INPUT(_f)    do { \
                                                 assert((_f)); \                                                  assert((_f)); \
                                                 if (!(_f)) { \                                                  if (!(_f)) { \
                                                        rpc_SetErr(22, "Error:: invalid callback parameters ...\n"); \                                                        rpc_SetErr(EINVAL, \
                                                                         "Invalid callback parameters ..."); \
                                                         return -1; \                                                          return -1; \
                                                 } \                                                  } \
                                         } while (0)                                          } while (0)
 #define RPC_CALLBACK_CHK_ARGS(_f, _n)   do { \  #define RPC_CALLBACK_CHK_ARGS(_f, _n)   do { \
                                                 RPC_CALLBACK_CHECK_INPUT((_f)); \                                                  RPC_CALLBACK_CHECK_INPUT((_f)); \
                                                if ((_f) && io_arraySize((_f)->func_vars) != _n) { \                                                if ((_f) && io_arraySize((_f)->func_vars) < _n) { \
                                                        rpc_SetErr(22, "Error:: different number of arguments!\n"); \                                                        rpc_SetErr(EINVAL, \
                                                                         "Not enough number of arguments!"); \
                                                         return -1; \                                                          return -1; \
                                                 } \                                                  } \
                                         } while (0)                                          } while (0)
Line 105  typedef enum { Line 109  typedef enum {
   
 typedef struct {  typedef struct {
         uint8_t         sess_version;          uint8_t         sess_version;
           uint8_t         sess_timeout;
         uint32_t        sess_program;          uint32_t        sess_program;
         uint32_t        sess_process;          uint32_t        sess_process;
 } __packed rpc_sess_t;  } __packed rpc_sess_t;
Line 112  typedef struct { Line 117  typedef struct {
   
 /* Server managment RPC functions ... */  /* Server managment RPC functions ... */
   
// RPC function registration element!/* RPC function registration element! */
 typedef struct tagRPCFunc {  typedef struct tagRPCFunc {
         uint16_t                func_tag;          uint16_t                func_tag;
         uint32_t                func_hash;          uint32_t                func_hash;
Line 159  struct tagBLOBHdr { Line 164  struct tagBLOBHdr {
 /* Network RPC client & server elements */  /* Network RPC client & server elements */
   
 typedef struct {  typedef struct {
        struct sockaddr       cli_sa;         // host info        io_sockaddr_t        cli_sa;         // host info
         int             cli_sock;       // socket fd          int             cli_sock;       // socket fd
         pthread_t       cli_tid;        // TID of thread          pthread_t       cli_tid;        // TID of thread
   
Line 168  typedef struct { Line 173  typedef struct {
 } rpc_cli_t;  } rpc_cli_t;
   
   
// BLOB registration element!/* BLOB registration element! */
 typedef struct tagBLOB {  typedef struct tagBLOB {
         uint32_t        blob_var;          uint32_t        blob_var;
   
Line 179  typedef struct tagBLOB { Line 184  typedef struct tagBLOB {
 } rpc_blob_t;  } rpc_blob_t;
   
 typedef struct {  typedef struct {
        rpc_sess_t      srv_session;    // RPC session registration info        rpc_sess_t              srv_session;    // RPC session registration info
        int             srv_numcli;     // maximum concurent client connections        int                     srv_numcli;     // maximum concurent client connections
        int             srv_netbuf;     // size of network buffer size        int                     srv_netbuf;     // size of network buffer size
   
        rpc_cli_t       srv_server;     // RPC server socket        rpc_cli_t               srv_server;     // RPC server socket
        rpc_cli_t       *srv_clients;   // connected rpc client sockets        rpc_cli_t               *srv_clients;   // connected rpc client sockets
   
        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;        cmd_type_t              srv_kill;
   
         struct {          struct {
                 cmd_type_t      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;
   
                 rpc_cli_t       server;         // BLOB server socket                  rpc_cli_t       server;         // BLOB server socket
                 rpc_cli_t       *clients;       // connected blob client sockets                  rpc_cli_t       *clients;       // connected blob client sockets
Line 201  typedef struct { Line 206  typedef struct {
                 rpc_blob_t      *blobs;         // registered blob variables list                  rpc_blob_t      *blobs;         // registered blob variables list
   
                 pthread_mutex_t mtx;                  pthread_mutex_t mtx;
        }               srv_blob;        }                       srv_blob;
 
         sched_root_task_t       *srv_sched;
 } rpc_srv_t;  } rpc_srv_t;
   
   
Line 352  int rpc_srv_execCall(rpc_func_t * __restrict call, str Line 359  int rpc_srv_execCall(rpc_func_t * __restrict call, str
   
   
 /*  /*
  * rpc_srv_allocVars() Allocate array for call variables,   
                                 if already allocated memory for RPC call reallocate used space  
  * @call = RPC function call  
  * @varnum = Number of variables, if ==0 free previous allocated variables  
  * return: -1 error, !=-1 return varnum value  
  */  
 inline int rpc_srv_allocVars(rpc_func_t * __restrict call, int varnum);  
 /*  
  * rpc_srv_destroyVars() Destroy variables of array & array  
  * @call = RPC function call  
  * return: -1 error, !=-1 Returne remained variables  
  */  
 inline int rpc_srv_destroyVars(rpc_func_t * __restrict call);  
 /*  
  * rpc_srv_freeVals() Clean values from variables of array  
  * @call = RPC function call  
  * return: -1 error, !=-1 Returned number of cleaned variables  
  */  
 inline int rpc_srv_freeVals(rpc_func_t * __restrict call);  
 /*  
  * rpc_srv_copyVars() Copy variables for RPC call to new variable array   * rpc_srv_copyVars() Copy variables for RPC call to new variable array
  * @call = RPC function call   * @call = RPC function call
  * @newvars = New allocated variables array, must be free after use   * @newvars = New allocated variables array, must be free after use
Line 519  void rpc_cli_closeClient(rpc_cli_t * __restrict cli); Line 506  void rpc_cli_closeClient(rpc_cli_t * __restrict cli);
  */   */
 int rpc_cli_execCall(rpc_cli_t *cli, const char *csModule, const char *csFunc,   int rpc_cli_execCall(rpc_cli_t *cli, const char *csModule, const char *csFunc, 
                 array_t * __restrict in_vars, array_t ** __restrict out_vars);                  array_t * __restrict in_vars, array_t ** __restrict out_vars);
 /*  
  * rpc_cli_freeVals() Free ait_val_t array returned from RPC call  
  * @vars = Variable array  
  * return: none  
  */  
 inline void rpc_cli_freeVals(array_t ** __restrict vars);  
 /*  
  * rpc_cli_allocVals() Allocate ait_val_t array for RPC call  
  * @args = Number of arguments  
  * return: =NULL error or !=NULL allocated array  
  */  
 inline array_t *rpc_cli_allocVals(unsigned short args);  
   
   
 /*  /*

Removed from v.1.4.2.2  
changed lines
  Added in v.1.5.2.2


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