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

version 1.24.2.3, 2014/11/17 23:51:26 version 1.26.2.1, 2015/01/27 23:50:46
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 - 2014Copyright 2004 - 2015
         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             7#define RPC_VERSION             8
 #define RPC_DEFPORT             2611  #define RPC_DEFPORT             2611
   
   /* Additional ELWIX RPC supporting protocols */
   #ifndef SOCK_STREAM
   #define SOCK_STREAM             1       /* stream socket */
   #endif
   #ifndef SOCK_DGRAM
   #define SOCK_DGRAM              2       /* datagram socket */
   #endif
   #ifndef SOCK_RAW
   #define SOCK_RAW                3       /* raw-protocol interface */
   #endif
   #define SOCK_BPF                4       /* ethernet interface */
   #define SOCK_EXT                5       /* bi-directional pipe interface */
   
 /* RPC call request flags */  /* RPC call request flags */
   
 #define RPC_REPLY               0x0  #define RPC_REPLY               0x0
 #define RPC_NOREPLY             0x1  #define RPC_NOREPLY             0x1
   
   /* RPC call I/O direction */
   
   #define RPC_REQ                 0x0
   #define RPC_ACK                 0x1
   
 /* RPC builtin registed calls */  /* RPC builtin registed calls */
   
 #define CALL_TAG_MAX            65535  #define CALL_TAG_MAX            65535
Line 141  struct tagRPCCall { Line 159  struct tagRPCCall {
         };          };
   
         uint16_t        call_tag;          uint16_t        call_tag;
        uint16_t        call_argc;        uint8_t             call_io;
         uint8_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)      (ntohl((u_long) (x)->call_req.flags) & RPC_NOREPLY)  #define RPC_CHK_NOREPLY(x)      (ntohl((u_long) (x)->call_req.flags) & RPC_NOREPLY)
Line 360  void rpc_srv_endServer(rpc_srv_t ** __restrict psrv); Line 379  void rpc_srv_endServer(rpc_srv_t ** __restrict psrv);
  * return: -1 error or 0 ok, infinite loop ...   * return: -1 error or 0 ok, infinite loop ...
  */   */
 int rpc_srv_loopServer(rpc_srv_t * __restrict srv);  int rpc_srv_loopServer(rpc_srv_t * __restrict srv);
#define rpc_srv_execServer(_srv, _sync) do { assert((_srv)); \#define rpc_srv_execServer(_srv, _sync) \
                                                if (!(_srv)->srv_kill) { \        do { assert((_srv)); \
                                                        pthread_create(&(_srv)->srv_tid, NULL, (void*(*)(void*)) \                if (!(_srv)->srv_kill) { \
                                                                        rpc_srv_loopServer, (_srv)); \                        pthread_create(&(_srv)->srv_tid, NULL, (void*(*)(void*)) \
                                                        if ((_sync)) \                                        rpc_srv_loopServer, (_srv)); \
                                                                pthread_join((_srv)->srv_tid, (void**) (_sync)); \                        if ((_sync)) \
                                                        else \                                pthread_join((_srv)->srv_tid, (void**) (_sync)); \
                                                                pthread_detach((_srv)->srv_tid); \                        else \
                                                } } while (0)                                pthread_detach((_srv)->srv_tid); \
#define rpc_srv_killServer(_srv)        (assert((_srv)), (_srv)->srv_blob.kill = 1, (_srv)->srv_kill = 1)        } } 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 394  void rpc_srv_endBLOBServer(rpc_srv_t * __restrict srv) Line 415  void rpc_srv_endBLOBServer(rpc_srv_t * __restrict srv)
  * return: -1 error or 0 ok, infinite loop ...   * return: -1 error or 0 ok, infinite loop ...
  */   */
 int rpc_srv_loopBLOBServer(rpc_srv_t * __restrict srv);  int rpc_srv_loopBLOBServer(rpc_srv_t * __restrict srv);
#define rpc_srv_execBLOBServer(_srv)    do { assert((_srv)); \#define rpc_srv_execBLOBServer(_srv) \
                                                if (!(_srv)->srv_kill && !(_srv)->srv_blob.kill) { \        do { assert((_srv)); \
                                                        pthread_create(&(_srv)->srv_blob.tid, NULL, \                if (!(_srv)->srv_kill && !(_srv)->srv_blob.kill) { \
                                                                        (void*(*)(void*)) \                        pthread_create(&(_srv)->srv_blob.tid, NULL, \
                                                                        rpc_srv_loopBLOBServer, (_srv)); \                                        (void*(*)(void*)) rpc_srv_loopBLOBServer, (_srv)); \
                                                        pthread_detach((_srv)->srv_blob.tid); \                        pthread_detach((_srv)->srv_blob.tid); \
                                                } \                } \
                                        } while (0)        } while (0)
   
 /*  /*
  * rpc_srv_initServer2() - Init & create layer2 RPC Server   * rpc_srv_initServer2() - Init & create layer2 RPC Server
Line 414  int rpc_srv_loopBLOBServer(rpc_srv_t * __restrict srv) Line 435  int rpc_srv_loopBLOBServer(rpc_srv_t * __restrict srv)
  */   */
 rpc_srv_t *rpc_srv_initServer2(u_char InstID, int concurentClients, int netBuf,   rpc_srv_t *rpc_srv_initServer2(u_char InstID, int concurentClients, int netBuf, 
                 const char *csIface);                  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 * rpc_srv_initServerExt() - Init & create pipe RPC Server
  *   *
 * @srv = RPC Server instance * @InstID = Instance for authentication & recognition
 * return: -1 error or 0 ok, infinite loop ... * @netBuf = Network buffer length (min:512 bytes), if =0 == BUFSIZ (also meaning max RPC packet)
  * @fd = File descriptor
  * return: NULL == error or !=NULL bind and created RPC server instance
  */   */
int rpc_srv_loopServer2(rpc_srv_t * __restrict srv);rpc_srv_t *rpc_srv_initServerExt(u_char InstID, int netBuf, int fd);
   
 /*  /*
  * rpc_srv_registerCall() - Register call to RPC server   * rpc_srv_registerCall() - Register call to RPC server
Line 648  int rpc_pkt_Request(ait_val_t * __restrict pkt, rpc_se Line 671  int rpc_pkt_Request(ait_val_t * __restrict pkt, rpc_se
  *   *
  * @pkt = Packet buffer   * @pkt = Packet buffer
  * @sess = RPC session info, if =NULL don't check session   * @sess = RPC session info, if =NULL don't check session
 * @tag = Function tag * @tag = Function tag, if =CALL_TAG_MAX don't check 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
  * return: -1 error or != -1 return value from function   * return: -1 error or != -1 return value from function
Line 698  rpc_cli_t *rpc_cli_openBLOBClient(rpc_cli_t * __restri Line 721  rpc_cli_t *rpc_cli_openBLOBClient(rpc_cli_t * __restri
  * return: none   * return: none
  */   */
 void rpc_cli_closeBLOBClient(rpc_cli_t ** __restrict cli);  void rpc_cli_closeBLOBClient(rpc_cli_t ** __restrict cli);
   
   
   /*
    * rpc_cli_openClient2() - Connect to layer2 RPC Server
    *
    * @InstID = InstID for RPC session request
    * @netBuf = Network buffer length (min:512 bytes), if =0 == BUFSIZ (also meaning max RPC packet)
    * @csIface = Interface name for bind client, if NULL first interface on host
    * @csHost = Host ethernet address
    * return: NULL == error or !=NULL connection to RPC server established
    */
   rpc_cli_t *rpc_cli_openClient2(u_char InstID, int netBuf, 
                   const char *csIface, const char *csHost);
   /*
    * rpc_cli_closeClient2() - Close layer2 connection to RPC server and free resources
    *
    * @cli = RPC Client session
    * return: none
    */
   void rpc_cli_closeClient2(rpc_cli_t ** __restrict cli);
   
   
   /*
    * rpc_cli_openClientExt() - Connect to pipe RPC Server
    *
    * @InstID = InstID for RPC session request
    * @netBuf = Network buffer length (min:512 bytes), if =0 == BUFSIZ (also meaning max RPC packet)
    * @fd = File descriptor
    * return: NULL == error or !=NULL connection to RPC server established
    */
   rpc_cli_t *rpc_cli_openClientExt(u_char InstID, int netBuf, int fd);
   /*
    * rpc_cli_closeClientExt() - Close pipe connection to RPC server and free resources
    *
    * @cli = RPC Client session
    * return: none
    */
   void rpc_cli_closeClientExt(rpc_cli_t ** __restrict cli);
   
   
 #endif  #endif

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


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