diff options
Diffstat (limited to 'sunrpc/thrsvc.c')
-rw-r--r-- | sunrpc/thrsvc.c | 109 |
1 files changed, 0 insertions, 109 deletions
diff --git a/sunrpc/thrsvc.c b/sunrpc/thrsvc.c deleted file mode 100644 index 63cfbf9810..0000000000 --- a/sunrpc/thrsvc.c +++ /dev/null @@ -1,109 +0,0 @@ -#include <pthread.h> -#include <stdio.h> -#include <string.h> -#include <unistd.h> -#include <rpc/rpc.h> -#include <arpa/inet.h> - -#define PROGNUM 1234 -#define VERSNUM 1 -#define PROCNUM 1 -#define PROCQUIT 2 - -static int exitcode; - -struct rpc_arg -{ - CLIENT *client; - u_long proc; -}; - -static void -dispatch(struct svc_req *request, SVCXPRT *xprt) -{ - svc_sendreply(xprt, (xdrproc_t)xdr_void, 0); - if (request->rq_proc == PROCQUIT) - exit (0); -} - -static void -test_one_call (struct rpc_arg *a) -{ - struct timeval tout = { 60, 0 }; - enum clnt_stat result; - - printf ("test_one_call: "); - result = clnt_call (a->client, a->proc, - (xdrproc_t) xdr_void, 0, - (xdrproc_t) xdr_void, 0, tout); - if (result == RPC_SUCCESS) - puts ("success"); - else - { - clnt_perrno (result); - putchar ('\n'); - exitcode = 1; - } -} - -static void * -thread_wrapper (void *arg) -{ - struct rpc_arg a; - - a.client = (CLIENT *)arg; - a.proc = PROCNUM; - test_one_call (&a); - a.client = (CLIENT *)arg; - a.proc = PROCQUIT; - test_one_call (&a); - return 0; -} - -int -main (void) -{ - pthread_t tid; - pid_t pid; - int err; - SVCXPRT *svx; - CLIENT *clnt; - struct sockaddr_in sin; - struct timeval wait = { 5, 0 }; - int sock = RPC_ANYSOCK; - struct rpc_arg a; - - svx = svcudp_create (RPC_ANYSOCK); - svc_register (svx, PROGNUM, VERSNUM, dispatch, 0); - - pid = fork (); - if (pid == -1) - { - perror ("fork"); - return 1; - } - if (pid == 0) - svc_run (); - - inet_aton ("127.0.0.1", &sin.sin_addr); - sin.sin_port = htons (svx->xp_port); - sin.sin_family = AF_INET; - - clnt = clntudp_create (&sin, PROGNUM, VERSNUM, wait, &sock); - - a.client = clnt; - a.proc = PROCNUM; - - /* Test in this thread */ - test_one_call (&a); - - /* Test in a child thread */ - err = pthread_create (&tid, 0, thread_wrapper, (void *) clnt); - if (err) - fprintf (stderr, "pthread_create: %s\n", strerror (err)); - err = pthread_join (tid, 0); - if (err) - fprintf (stderr, "pthread_join: %s\n", strerror (err)); - - return exitcode; -} |