dispatch_svc.c.preserve
上传用户:dgyhgb
上传日期:2007-01-07
资源大小:676k
文件大小:3k
源码类别:

SQL Server

开发平台:

Unix_Linux

  1. /*
  2.  * Please do not edit this file.
  3.  * It was generated using rpcgen.
  4.  */
  5. #include "dispatch.h"
  6. #include <stdio.h>
  7. #include <stdlib.h>/* getenv, exit */
  8. #include <rpc/pmap_clnt.h> /* for pmap_unset */
  9. #include <string.h> /* strcmp */ 
  10. #include <memory.h>
  11. #include <sys/socket.h>
  12. #include <netinet/in.h>
  13. #ifdef __STDC__
  14. #define SIG_PF void(*)(int)
  15. #endif
  16. #define main adm_rpc_start
  17. #define RPC_SVC_FG
  18. static void
  19. sql_disp_1(struct svc_req *rqstp, register SVCXPRT *transp)
  20. {
  21. union {
  22. init_arg create_transaction_1_arg;
  23. opq is_ready_1_arg;
  24. int kill_all_1_arg;
  25. opq trn_kill_1_arg;
  26. int disp_finit_1_arg;
  27. opq copy_lj_1_arg;
  28. int change_params_1_arg;
  29. } argument;
  30. char *result;
  31. xdrproc_t xdr_argument, xdr_result;
  32. char *(*local)(char *, struct svc_req *);
  33. switch (rqstp->rq_proc) {
  34. case NULLPROC:
  35. (void) svc_sendreply(transp, (xdrproc_t) xdr_void, (char *)NULL);
  36. return;
  37. case CREATE_TRANSACTION:
  38. xdr_argument = (xdrproc_t) xdr_init_arg;
  39. xdr_result = (xdrproc_t) xdr_res;
  40. local = (char *(*)(char *, struct svc_req *)) create_transaction_1_svc;
  41. break;
  42. case IS_READY:
  43. xdr_argument = (xdrproc_t) xdr_opq;
  44. xdr_result = (xdrproc_t) xdr_int;
  45. local = (char *(*)(char *, struct svc_req *)) is_ready_1_svc;
  46. break;
  47. case KILL_ALL:
  48. xdr_argument = (xdrproc_t) xdr_int;
  49. xdr_result = (xdrproc_t) xdr_int;
  50. local = (char *(*)(char *, struct svc_req *)) kill_all_1_svc;
  51. break;
  52. case TRN_KILL:
  53. xdr_argument = (xdrproc_t) xdr_opq;
  54. xdr_result = (xdrproc_t) xdr_int;
  55. local = (char *(*)(char *, struct svc_req *)) trn_kill_1_svc;
  56. break;
  57. case DISP_FINIT:
  58. xdr_argument = (xdrproc_t) xdr_int;
  59. xdr_result = (xdrproc_t) xdr_int;
  60. local = (char *(*)(char *, struct svc_req *)) disp_finit_1_svc;
  61. break;
  62. case COPY_LJ:
  63. xdr_argument = (xdrproc_t) xdr_opq;
  64. xdr_result = (xdrproc_t) xdr_int;
  65. local = (char *(*)(char *, struct svc_req *)) copy_lj_1_svc;
  66. break;
  67. case CHANGE_PARAMS:
  68. xdr_argument = (xdrproc_t) xdr_int;
  69. xdr_result = (xdrproc_t) xdr_int;
  70. local = (char *(*)(char *, struct svc_req *)) change_params_1_svc;
  71. break;
  72. default:
  73. svcerr_noproc(transp);
  74. return;
  75. }
  76. (void) memset((char *)&argument, 0, sizeof (argument));
  77. if (!svc_getargs(transp, xdr_argument, (caddr_t) &argument)) {
  78. svcerr_decode(transp);
  79. return;
  80. }
  81. result = (*local)((char *)&argument, rqstp);
  82. if (result != NULL && !svc_sendreply(transp, xdr_result, result)) {
  83. svcerr_systemerr(transp);
  84. }
  85. if (!svc_freeargs(transp, xdr_argument, (caddr_t) &argument)) {
  86. fprintf(stderr, "unable to free arguments");
  87. exit(1);
  88. }
  89. return;
  90. }
  91. int
  92. main(int argc, char **argv)
  93. {
  94. register SVCXPRT *transp;
  95. (void) pmap_unset(SQL_DISP, SQL_DISP_ONE);
  96. transp = svcudp_create(RPC_ANYSOCK);
  97. if (transp == NULL) {
  98. fprintf(stderr, "cannot create udp service.");
  99. exit(1);
  100. }
  101. if (!svc_register(transp, SQL_DISP, SQL_DISP_ONE, sql_disp_1, IPPROTO_UDP)) {
  102. fprintf(stderr, "unable to register (SQL_DISP, SQL_DISP_ONE, udp).");
  103. exit(1);
  104. }
  105. transp = svctcp_create(RPC_ANYSOCK, 0, 0);
  106. if (transp == NULL) {
  107. fprintf(stderr, "cannot create tcp service.");
  108. exit(1);
  109. }
  110. if (!svc_register(transp, SQL_DISP, SQL_DISP_ONE, sql_disp_1, IPPROTO_TCP)) {
  111. fprintf(stderr, "unable to register (SQL_DISP, SQL_DISP_ONE, tcp).");
  112. exit(1);
  113. }
  114. svc_run();
  115. fprintf(stderr, "svc_run returned");
  116. exit(1);
  117. /* NOTREACHED */
  118. }