| 
version 1.13, 2013/03/07 23:10:50
 | 
version 1.13.2.2, 2013/04/02 15:32:03
 | 
| 
 Line 62  SUCH DAMAGE.
 | 
 Line 62  SUCH DAMAGE.
 | 
 |  #include <aitsched.h> | 
  #include <aitsched.h> | 
 |   | 
   | 
 |   | 
   | 
| #define RPC_VERSION             5 | #define RPC_VERSION             6 | 
 |  #define RPC_DEFPORT             2611 | 
  #define RPC_DEFPORT             2611 | 
 |   | 
   | 
 |  /* RPC call request flags */ | 
  /* RPC call request flags */ | 
| 
 Line 91  SUCH DAMAGE.
 | 
 Line 91  SUCH DAMAGE.
 | 
 |  typedef enum { | 
  typedef enum { | 
 |          ok, error, no,                          /* for blob reply */ | 
          ok, error, no,                          /* for blob reply */ | 
 |          get, set, unset                         /* for blob request */ | 
          get, set, unset                         /* for blob request */ | 
| } cmd_type_t; | } blob_cmd_type_t; | 
 |   | 
   | 
 |   | 
   | 
 |  #define RPC_CALLBACK_CHECK_INPUT(x)     do { \ | 
  #define RPC_CALLBACK_CHECK_INPUT(x)     do { \ | 
| 
 Line 107  typedef enum {
 | 
 Line 107  typedef enum {
 | 
 |  /* RPC session identification */ | 
  /* RPC session identification */ | 
 |   | 
   | 
 |  typedef struct { | 
  typedef struct { | 
|         uint8_t             sess_version; | #if BYTE_ORDER == LITTLE_ENDIAN | 
|         uint32_t      sess_program; |         uint16_t    sess_instance:8; | 
|         uint8_t             sess_process; |         uint16_t        sess_version:8; | 
| } __packed rpc_sess_t;          /* size == 6 bytes */ | #endif | 
|   | #if BYTE_ORDER == BIG_ENDIAN | 
|   |         uint16_t      sess_version:8; | 
|   |         uint16_t        sess_instance:8; | 
|   | #endif | 
|   | } __packed rpc_sess_t;  /* size == 2 bytes */ | 
 |   | 
   | 
 |   | 
   | 
 |  /* Server managment RPC functions ... */ | 
  /* Server managment RPC functions ... */ | 
| 
 Line 137  struct tagRPCCall {
 | 
 Line 142  struct tagRPCCall {
 | 
 |          uint16_t        call_tag; | 
          uint16_t        call_tag; | 
 |          uint16_t        call_argc; | 
          uint16_t        call_argc; | 
 |          ait_val_t       call_argv[0]; | 
          ait_val_t       call_argv[0]; | 
| } __packed;                     /* size == 24 bytes */ | } __packed;                     /* size == 20 bytes */ | 
 |  #define RPC_CHK_NOREPLY(x)      ((x)->call_req.flags & RPC_NOREPLY) | 
  #define RPC_CHK_NOREPLY(x)      ((x)->call_req.flags & RPC_NOREPLY) | 
 |   | 
   | 
 |  /* Network BLOB packet - Header */ | 
  /* Network BLOB packet - Header */ | 
| 
 Line 148  struct tagBLOBHdr {
 | 
 Line 153  struct tagBLOBHdr {
 | 
 |          uint32_t        hdr_var; | 
          uint32_t        hdr_var; | 
 |          uint32_t        hdr_len; | 
          uint32_t        hdr_len; | 
 |          uint32_t        hdr_ret; | 
          uint32_t        hdr_ret; | 
 |          uint16_t        hdr_crc; | 
   | 
 |          uint8_t         hdr_pad; | 
          uint8_t         hdr_pad; | 
| } __packed;                     /* size == 22 bytes */ | } __packed;                     /* size == 16 bytes */ | 
 |   | 
   | 
 |  /* Network RPC client & server elements */ | 
  /* Network RPC client & server elements */ | 
 |   | 
   | 
| 
 Line 296  int rpc_register_blobServices(rpc_srv_t * __restrict s
 | 
 Line 300  int rpc_register_blobServices(rpc_srv_t * __restrict s
 | 
 |  /* | 
  /* | 
 |   * rpc_srv_initServer() - Init & create RPC Server | 
   * rpc_srv_initServer() - Init & create RPC Server | 
 |   * | 
   * | 
|  * @regProgID = ProgramID for authentication & recognition |  * @InstID = Instance for authentication & recognition | 
|  * @regProcID = ProcessID for authentication & recognition |   | 
 |   * @concurentClients = Concurent clients at same time to this server | 
   * @concurentClients = Concurent clients at same time to this server | 
 |   * @netBuf = Network buffer length (min:512 bytes), if =0 == BUFSIZ (also meaning max RPC packet) | 
   * @netBuf = Network buffer length (min:512 bytes), if =0 == BUFSIZ (also meaning max RPC packet) | 
 |   * @csHost = Host name or address for bind server, if NULL any address | 
   * @csHost = Host name or address for bind server, if NULL any address | 
| 
 Line 305  int rpc_register_blobServices(rpc_srv_t * __restrict s
 | 
 Line 308  int rpc_register_blobServices(rpc_srv_t * __restrict s
 | 
 |   * @proto = Protocol, if == 0 choose SOCK_STREAM | 
   * @proto = Protocol, if == 0 choose SOCK_STREAM | 
 |   * return: NULL == error or !=NULL bind and created RPC server instance | 
   * return: NULL == error or !=NULL bind and created RPC server instance | 
 |   */ | 
   */ | 
| rpc_srv_t *rpc_srv_initServer(unsigned int regProgID, unsigned char regProcID,  | rpc_srv_t *rpc_srv_initServer(unsigned char InstID, int concurentClients, int netBuf,  | 
|                 int concurentClients, int netBuf,  |   | 
 |                  const char *csHost, unsigned short Port, int proto); | 
                  const char *csHost, unsigned short Port, int proto); | 
 |  /* | 
  /* | 
 |   * rpc_srv_endServer() - Destroy RPC server, close all opened sockets and free resources | 
   * rpc_srv_endServer() - Destroy RPC server, close all opened sockets and free resources | 
| 
 Line 521  inline int rpc_cli_getBLOB(rpc_cli_t * __restrict cli,
 | 
 Line 523  inline int rpc_cli_getBLOB(rpc_cli_t * __restrict cli,
 | 
 |  /* | 
  /* | 
 |   * rpc_cli_openClient() - Connect to RPC Server | 
   * rpc_cli_openClient() - Connect to RPC Server | 
 |   * | 
   * | 
|  * @ProgID = ProgramID for RPC session request |  * @InstID = InstID for RPC session request | 
|  * @ProcID = ProcessID for RPC session request |   | 
 |   * @netBuf = Network buffer length (min:512 bytes), if =0 == BUFSIZ (also meaning max RPC packet) | 
   * @netBuf = Network buffer length (min:512 bytes), if =0 == BUFSIZ (also meaning max RPC packet) | 
 |   * @csHost = Host name or IP address for bind server | 
   * @csHost = Host name or IP address for bind server | 
 |   * @Port = Port for bind server, if Port == 0 default port is selected | 
   * @Port = Port for bind server, if Port == 0 default port is selected | 
 |   * @proto = Protocol, if == 0 choose SOCK_STREAM | 
   * @proto = Protocol, if == 0 choose SOCK_STREAM | 
 |   * return: NULL == error or !=NULL connection to RPC server established | 
   * return: NULL == error or !=NULL connection to RPC server established | 
 |   */ | 
   */ | 
| rpc_cli_t *rpc_cli_openClient(unsigned int ProgID, unsigned char ProcID, 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_closeClient() - Close connection to RPC server and free resources | 
   * rpc_cli_closeClient() - Close connection to RPC server and free resources | 
| 
 Line 569  int rpc_pkt_Receive(int sock, int type, sockaddr_t * _
 | 
 Line 570  int rpc_pkt_Receive(int sock, int type, sockaddr_t * _
 | 
 |   * @tag = Function tag for execution | 
   * @tag = Function tag for execution | 
 |   * @vars = Function argument array of values, may be NULL | 
   * @vars = Function argument array of values, may be NULL | 
 |   * @noreply = We not want RPC reply | 
   * @noreply = We not want RPC reply | 
 |   | 
   * @nocrc = Without CRC calculation | 
 |   * return: -1 error or != -1 prepared bytes into packet | 
   * return: -1 error or != -1 prepared bytes into packet | 
 |   */ | 
   */ | 
 |  int rpc_pkt_Request(ait_val_t * __restrict pkt, rpc_sess_t * __restrict sess,  | 
  int rpc_pkt_Request(ait_val_t * __restrict pkt, rpc_sess_t * __restrict sess,  | 
|                 unsigned short tag, array_t * __restrict vars, int noreply); |                 unsigned short tag, array_t * __restrict vars, int noreply, int nocrc); | 
 |  /* | 
  /* | 
 |   * rpc_pkt_Replay() - Decode RPC Replay packet | 
   * rpc_pkt_Replay() - Decode RPC Replay packet | 
 |   * | 
   * | 
| 
 Line 580  int rpc_pkt_Request(ait_val_t * __restrict pkt, rpc_se
 | 
 Line 582  int rpc_pkt_Request(ait_val_t * __restrict pkt, rpc_se
 | 
 |   * @sess = RPC session info | 
   * @sess = RPC session info | 
 |   * @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 | 
 |   * return: -1 error or != -1 return value from function | 
   * return: -1 error or != -1 return value from function | 
 |   */ | 
   */ | 
 |  int rpc_pkt_Replay(ait_val_t * __restrict pkt, rpc_sess_t * __restrict sess,  | 
  int rpc_pkt_Replay(ait_val_t * __restrict pkt, rpc_sess_t * __restrict sess,  | 
|                 unsigned short tag, array_t ** __restrict vars); |                 unsigned short tag, array_t ** __restrict vars, int nocrc); | 
 |  /* | 
  /* | 
 |   * rpc_cli_execCall() - Execute RPC call | 
   * rpc_cli_execCall() - Execute RPC call | 
 |   * | 
   * |