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

version 1.4.2.6, 2011/11/03 14:28:48 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:: not enough 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 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 351  int rpc_srv_execCall(rpc_func_t * __restrict call, str Line 358  int rpc_srv_execCall(rpc_func_t * __restrict call, str
                 array_t * __restrict args);                  array_t * __restrict args);
   
   
 /*  
  * rpc_srv_allocVars() Allocate array for call variables  
  * @call = RPC function call  
  * @varnum = Number of variables, if ==0 return already allocated variables number  
  * 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_freeVars() Clean values from variables of array  
  * @call = RPC function call  
  * return: -1 error, !=-1 Returned number of cleaned variables  
  */  
 inline int rpc_srv_freeVars(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

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


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