Diff for /libaitrpc/inc/aitrpc.h between versions 1.1.1.1 and 1.1.1.1.2.4

version 1.1.1.1, 2010/06/18 01:48:06 version 1.1.1.1.2.4, 2010/06/23 07:50:01
Line 27 Line 27
   
 /* RPC builtin registed calls */  /* RPC builtin registed calls */
   
   #define CALL_SRVSHUTDOWN        "rpcServerShutdown"
 #define CALL_SRVCLIENTS         "rpcServerClients"  #define CALL_SRVCLIENTS         "rpcServerClients"
 #define CALL_SRVCALLS           "rpcServerCalls"  #define CALL_SRVCALLS           "rpcServerCalls"
 #define CALL_SRVSESSIONS        "rpcServerSessions"  #define CALL_SRVSESSIONS        "rpcServerSessions"
Line 36 Line 37
   
 typedef enum {  typedef enum {
         empty,                          // empty -> variable is not set          empty,                          // empty -> variable is not set
        buffer, string, array,               // buffer -> uint8_t*; string -> int8_t*; array -> char**;        buffer, string, blob,               // buffer -> uint8_t*; string -> int8_t*; blob -> void*(+socket);
         size, offset, datetime,         // size -> size_t; offset -> off_t; datetime -> time_t;          size, offset, datetime,         // size -> size_t; offset -> off_t; datetime -> time_t;
         real, bigreal,                  // real -> float; bigreal -> double;          real, bigreal,                  // real -> float; bigreal -> double;
         u8, u16, u32, u64,              // unsigned integers ...          u8, u16, u32, u64,              // unsigned integers ...
Line 51  typedef struct { Line 52  typedef struct {
         union {          union {
                 uint8_t         *buffer;                  uint8_t         *buffer;
                 int8_t          *string;                  int8_t          *string;
                int8_t          **array;                void            *blob;
                 size_t          size;                  size_t          size;
                 off_t           offset;                  off_t           offset;
                 time_t          datetime;                  time_t          datetime;
Line 70  typedef struct { Line 71  typedef struct {
   
 #define RPC_TYPE_VAL(vl)                ((vl)->val_type)  #define RPC_TYPE_VAL(vl)                ((vl)->val_type)
 #define RPC_LEN_VAL(vl)                 ((vl)->val_len)  #define RPC_LEN_VAL(vl)                 ((vl)->val_len)
   #define RPC_BLOB_CHUNKS(vl, n)          ((vl)->val_len / (n) + ((vl)->val_len % (n)) ? 1 : 0)
 #define RPC_EMPTY_VAL(vl)               ((vl)->val_type == empty)  #define RPC_EMPTY_VAL(vl)               ((vl)->val_type == empty)
   
 #define RPC_GET_BUF(vl)                 (assert((vl)->val_type == buffer), (vl)->val.buffer)  #define RPC_GET_BUF(vl)                 (assert((vl)->val_type == buffer), (vl)->val.buffer)
 #define RPC_GET_STR(vl)                 (assert((vl)->val_type == string), (vl)->val.string)  #define RPC_GET_STR(vl)                 (assert((vl)->val_type == string), (vl)->val.string)
#define RPC_GET_ARRAY(vl)            (assert((vl)->val_type == array), (vl)->val.array)#define RPC_GET_BLOB(vl)            (assert((vl)->val_type == blob), (vl)->val.blob)
 #define RPC_GET_SIZE(vl)                (assert((vl)->val_type == size), (vl)->val.size)  #define RPC_GET_SIZE(vl)                (assert((vl)->val_type == size), (vl)->val.size)
 #define RPC_GET_OFF(vl)                 (assert((vl)->val_type == offset), (vl)->val.offset)  #define RPC_GET_OFF(vl)                 (assert((vl)->val_type == offset), (vl)->val.offset)
 #define RPC_GET_TIME(vl)                (assert((vl)->val_type == datetime), (vl)->val.datetime)  #define RPC_GET_TIME(vl)                (assert((vl)->val_type == datetime), (vl)->val.datetime)
Line 98  typedef struct { Line 100  typedef struct {
                                                 if (val->val.string) { \                                                  if (val->val.string) { \
                                                         val->val_type = string; val->val_len = strlen(v) + 1; \                                                          val->val_type = string; val->val_len = strlen(v) + 1; \
                                                 } } while (0)                                                  } } while (0)
#define RPC_SET_ARRAY(vl, v, n, l)        do { rpc_val_t *val = (vl); assert(val); val->val.array = calloc(n, l); \#define RPC_SET_BLOB(vl, v, l)              do { rpc_val_t *val = (vl); assert(val); val->val.blob = realloc(val->val.blob, l); \
                                                if (val->val.array) { \                                                if (val->val.blob) { \
                                                        val->val_type = array; val->val_len = n * l; \                                                        val->val_type = blob; val->val_len = l; \
                                                        memcpy(val->val.array, v, val->val_len); \                                                        memcpy(val->val.blob, v, l); \
                                                 } } while (0)                                                  } } while (0)
 #define RPC_SET_SIZE(vl, v)             do { rpc_val_t *val = (vl); assert(val); val->val_type = size; val->val.size = v; \  #define RPC_SET_SIZE(vl, v)             do { rpc_val_t *val = (vl); assert(val); val->val_type = size; val->val.size = v; \
                                                 val->val_len = sizeof(size_t); } while (0)                                                  val->val_len = sizeof(size_t); } while (0)
Line 139  typedef struct { Line 141  typedef struct {
                                                         free(val->val.string); \                                                          free(val->val.string); \
                                                         val->val.string = NULL; \                                                          val->val.string = NULL; \
                                                 } \                                                  } \
                                                if (val->val_type == array && val->val.array) { \                                                if (val->val_type == blob && val->val.blob) { \
                                                        free(val->val.array); \                                                        free(val->val.blob); \
                                                        val->val.array = NULL; \                                                        val->val.blob = NULL; \
                                                 } \                                                  } \
                                                 val->val_type = val->val_len = 0; \                                                  val->val_type = val->val_len = 0; \
                                         } while (0)                                          } while (0)
   
   
#define RPC_CALLBACK_CHECK_ARGS(f, n)     do { \#define RPC_CALLBACK_CHK_NUM_ARGS(f, n)     do { \
                                                 if (f->func_args != n) { \                                                  if (f->func_args != n) { \
                                                         rpc_SetErr(22, "Error:: different number of arguments!\n"); \                                                          rpc_SetErr(22, "Error:: different number of arguments!\n"); \
                                                         return -1; \                                                          return -1; \
                                                 } \                                                  } \
                                        } while(0)                                        } while (0)
 #define RPC_CALLBACK_CHECK_INPUT(s, f)  do { \
                                                 if (!s || !f) { \
                                                         rpc_SetErr(22, "Error:: invalid callback parameters ...\n"); \
                                                         return -1; \
                                                 } \
                                         } while (0)
   
   
 /* RPC session identification */  /* RPC session identification */

Removed from v.1.1.1.1  
changed lines
  Added in v.1.1.1.1.2.4


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