Diff for /libaitrpc/inc/aitrpc.h between versions 1.16 and 1.24.2.3

version 1.16, 2013/07/16 13:04:20 version 1.24.2.3, 2014/11/17 23:51:26
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, 2011, 2012, 2013Copyright 2004 - 2014
         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 62  SUCH DAMAGE. Line 62  SUCH DAMAGE.
 #include <aitsched.h>  #include <aitsched.h>
   
   
#define RPC_VERSION             6#define RPC_VERSION             7
 #define RPC_DEFPORT             2611  #define RPC_DEFPORT             2611
   
 /* RPC call request flags */  /* RPC call request flags */
Line 127  typedef struct { Line 127  typedef struct {
 struct tagRPCCall {  struct tagRPCCall {
         rpc_sess_t      call_session;          rpc_sess_t      call_session;
   
        uint16_t    call_seq;        uint32_t      call_len;
        uint16_t      call_len; 
         uint16_t        call_crc;          uint16_t        call_crc;
   
         union {          union {
Line 145  struct tagRPCCall { Line 144  struct tagRPCCall {
         uint16_t        call_argc;          uint16_t        call_argc;
         ait_val_t       call_argv[0];          ait_val_t       call_argv[0];
 } __packed;                     /* size == 20 bytes */  } __packed;                     /* size == 20 bytes */
#define RPC_CHK_NOREPLY(x)      ((x)->call_req.flags & RPC_NOREPLY)#define RPC_CHK_NOREPLY(x)      (ntohl((u_long) (x)->call_req.flags) & RPC_NOREPLY)
 #define RPC_SET_ERRNO(x, _v)    ((x)->call_rep.eno = htonl((_v)))
   
 /* Network BLOB packet - Header */  /* Network BLOB packet - Header */
   
Line 247  typedef struct { Line 247  typedef struct {
  */   */
 typedef int (*rpc_callback_t)(rpc_cli_t *, struct tagRPCCall *, array_t *);  typedef int (*rpc_callback_t)(rpc_cli_t *, struct tagRPCCall *, array_t *);
   
   #define RPC_CALL_DEFINE(x)      int (x)(rpc_cli_t*, struct tagRPCCall*, array_t*)
   #define RPC_CALL_ARGS(arg1, arg2, arg3) rpc_cli_t* arg1, struct tagRPCCall* arg2, array_t* arg3
   #define RPC_CALL_STDARGS        RPC_CALL_ARGS(cli, rpc, iv)
   
   
 /* ----------------------------------------------------------------------- */  /* ----------------------------------------------------------------------- */
   
 /* Error support functions */  /* Error support functions */
Line 256  typedef int (*rpc_callback_t)(rpc_cli_t *, struct tagR Line 260  typedef int (*rpc_callback_t)(rpc_cli_t *, struct tagR
 int rpc_GetErrno();  int rpc_GetErrno();
 // rpc_GetError() Get error text of last operation  // rpc_GetError() Get error text of last operation
 const char *rpc_GetError();  const char *rpc_GetError();
   // rpc_SetErr() Set error to variables for internal use!!!
   void rpc_SetErr(int eno, char *estr, ...);
   
   
   
 /*  /*
    * rpc_Read() - RPC read operation
    *
    * @sock = socket
    * @type = type of socket
    * @flags = receive flags
    * @sa = check client address, if you use udp protocol
    * @buf = buffer
    * @blen = buffer length
    * return: -1 error, 0 EOF or or >0 readed bytes into buffer
    */
   ssize_t rpc_Read(int sock, int type, int flags, sockaddr_t * __restrict sa, 
                   unsigned char * __restrict buf, size_t blen);
   /*
    * rpc_Write() - RPC write operation
    *
    * @sock = socket
    * @type = type of socket
    * @flags = send flags
    * @sa = send to client address, if you use udp protocol
    * @buf = buffer
    * @blen = buffer length
    * return: -1 error, 0 EOF or >0 written bytes into buffer
    */
   ssize_t rpc_Write(int sock, int type, int flags, sockaddr_t * __restrict sa, 
                   unsigned char * __restrict buf, size_t blen);
   
   /*
  * rpc_chkPktSession() - Check RPC session   * rpc_chkPktSession() - Check RPC session
  *   *
  * @p = packet session   * @p = packet session
Line 335  int rpc_srv_loopServer(rpc_srv_t * __restrict srv); Line 369  int rpc_srv_loopServer(rpc_srv_t * __restrict srv);
                                                         else \                                                          else \
                                                                 pthread_detach((_srv)->srv_tid); \                                                                  pthread_detach((_srv)->srv_tid); \
                                                 } } while (0)                                                  } } while (0)
   #define rpc_srv_killServer(_srv)        (assert((_srv)), (_srv)->srv_blob.kill = 1, (_srv)->srv_kill = 1)
   
 /*  /*
  * rpc_srv_initBLOBServer() - Init & create BLOB Server   * rpc_srv_initBLOBServer() - Init & create BLOB Server
Line 369  int rpc_srv_loopBLOBServer(rpc_srv_t * __restrict srv) Line 404  int rpc_srv_loopBLOBServer(rpc_srv_t * __restrict srv)
                                         } while (0)                                          } while (0)
   
 /*  /*
    * rpc_srv_initServer2() - Init & create layer2 RPC Server
    *
    * @InstID = Instance for authentication & recognition
    * @concurentClients = Concurent clients at same time to this server
    * @netBuf = Network buffer length (min:512 bytes), if =0 == BUFSIZ (also meaning max RPC packet)
    * @csIface = Interface name for bind server, if NULL first interface on host
    * return: NULL == error or !=NULL bind and created RPC server instance
    */
   rpc_srv_t *rpc_srv_initServer2(u_char InstID, int concurentClients, int netBuf, 
                   const char *csIface);
   #define rpc_srv_endServer2(x)   rpc_srv_endServer((x))
   /*
    * rpc_srv_loopServer2() - Execute Main layer2 server loop and wait for clients requests
    *
    * @srv = RPC Server instance
    * return: -1 error or 0 ok, infinite loop ...
    */
   int rpc_srv_loopServer2(rpc_srv_t * __restrict srv);
   
   /*
  * rpc_srv_registerCall() - Register call to RPC server   * rpc_srv_registerCall() - Register call to RPC server
  *   *
  * @srv = RPC Server instance   * @srv = RPC Server instance
Line 539  int rpc_cli_getBLOB(rpc_cli_t * __restrict cli, ait_va Line 594  int rpc_cli_getBLOB(rpc_cli_t * __restrict cli, ait_va
 rpc_cli_t *rpc_cli_openClient(unsigned char InstID, int netBuf,   rpc_cli_t *rpc_cli_openClient(unsigned char InstID, int netBuf, 
                 const char *csHost, unsigned short Port, int proto);                  const char *csHost, unsigned short Port, int proto);
 /*  /*
    * rpc_cli_reconnectClient() - Reconnecting client to RPC server
    *
    * @cli = RPC Client session
    * return: -1 error or 0 ok
    */
   int rpc_cli_reconnectClient(rpc_cli_t * __restrict cli);
   /*
  * 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 553  void rpc_cli_closeClient(rpc_cli_t ** __restrict cli); Line 615  void rpc_cli_closeClient(rpc_cli_t ** __restrict cli);
  * @sa = Server address   * @sa = Server address
  * @pkt = RPC packet   * @pkt = RPC packet
  * @len = Length of packet   * @len = Length of packet
 * return: -1 error or !=-1 sended bytes * return: -1 error, 0  EOF or >0 sended bytes
  */   */
 int rpc_pkt_Send(int sock, int type, sockaddr_t * __restrict sa,   int rpc_pkt_Send(int sock, int type, sockaddr_t * __restrict sa, 
                 ait_val_t * __restrict pkt, int len);                  ait_val_t * __restrict pkt, int len);
Line 564  int rpc_pkt_Send(int sock, int type, sockaddr_t * __re Line 626  int rpc_pkt_Send(int sock, int type, sockaddr_t * __re
  * @type = Type of socket   * @type = Type of socket
  * @sa = Server address   * @sa = Server address
  * @pkt = RPC packet   * @pkt = RPC packet
 * return: -1 error or !=-1 sended bytes * return: -1 error, 0 EOF or >0 received bytes
  */   */
 int rpc_pkt_Receive(int sock, int type, sockaddr_t * __restrict sa,   int rpc_pkt_Receive(int sock, int type, sockaddr_t * __restrict sa, 
                 ait_val_t * __restrict pkt);                  ait_val_t * __restrict pkt);
Line 585  int rpc_pkt_Request(ait_val_t * __restrict pkt, rpc_se Line 647  int rpc_pkt_Request(ait_val_t * __restrict pkt, rpc_se
  * rpc_pkt_Replay() - Decode RPC Replay packet   * rpc_pkt_Replay() - Decode RPC Replay packet
  *   *
  * @pkt = Packet buffer   * @pkt = Packet buffer
 * @sess = RPC session info * @sess = RPC session info, if =NULL don't check session
  * @tag = Function tag   * @tag = Function tag
  * @vars = Function argument array of values, may be NULL   * @vars = Function argument array of values, may be NULL
  * @nocrc = Without CRC calculation   * @nocrc = Without CRC calculation
Line 601  int rpc_pkt_Replay(ait_val_t * __restrict pkt, rpc_ses Line 663  int rpc_pkt_Replay(ait_val_t * __restrict pkt, rpc_ses
  * @tag = Function tag for execution   * @tag = Function tag for execution
  * @in_vars = IN function argument array of values, may be NULL   * @in_vars = IN function argument array of values, may be NULL
  * @out_vars = OUT returned array of rpc values, if !=NULL must be free after use with ait_freeVars()   * @out_vars = OUT returned array of rpc values, if !=NULL must be free after use with ait_freeVars()
 * return: -1 error or != -1 ok result * return: -1 error, 0 ok result or 1 closed rpc connection
  */   */
 int rpc_cli_execCall(rpc_cli_t *cli, int noreply, unsigned short tag,   int rpc_cli_execCall(rpc_cli_t *cli, int noreply, unsigned short tag, 
                 array_t * __restrict in_vars, array_t ** __restrict out_vars);                  array_t * __restrict in_vars, array_t ** __restrict out_vars);

Removed from v.1.16  
changed lines
  Added in v.1.24.2.3


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