From 33613a85afc4b1481367fbe92a17ee59c240250b Mon Sep 17 00:00:00 2001 From: Sven Eisenhauer Date: Fri, 10 Nov 2023 15:11:48 +0100 Subject: add new repo --- .../Praktikum2/loesung/telbuch_svc.c | 98 ++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 Bachelor/Verteilte Systeme/Praktikum2/loesung/telbuch_svc.c (limited to 'Bachelor/Verteilte Systeme/Praktikum2/loesung/telbuch_svc.c') diff --git a/Bachelor/Verteilte Systeme/Praktikum2/loesung/telbuch_svc.c b/Bachelor/Verteilte Systeme/Praktikum2/loesung/telbuch_svc.c new file mode 100644 index 0000000..f14df2a --- /dev/null +++ b/Bachelor/Verteilte Systeme/Praktikum2/loesung/telbuch_svc.c @@ -0,0 +1,98 @@ +/* + * Please do not edit this file. + * It was generated using rpcgen. + */ + +#include "telbuch.h" +#include +#include +#include +#include +#include +#include +#include + +#ifndef SIG_PF +#define SIG_PF void(*)(int) +#endif + +static void +telbuch_verwaltung_1(struct svc_req *rqstp, register SVCXPRT *transp) +{ + union { + addStruct addentry_1_arg; + searchStruct searchentry_1_arg; + } argument; + char *result; + xdrproc_t _xdr_argument, _xdr_result; + char *(*local)(char *, struct svc_req *); + + switch (rqstp->rq_proc) { + case NULLPROC: + (void) svc_sendreply (transp, (xdrproc_t) xdr_void, (char *)NULL); + return; + + case addEntry: + _xdr_argument = (xdrproc_t) xdr_addStruct; + _xdr_result = (xdrproc_t) xdr_Ergebnis; + local = (char *(*)(char *, struct svc_req *)) addentry_1_svc; + break; + + case searchEntry: + _xdr_argument = (xdrproc_t) xdr_searchStruct; + _xdr_result = (xdrproc_t) xdr_Ergebnis; + local = (char *(*)(char *, struct svc_req *)) searchentry_1_svc; + break; + + default: + svcerr_noproc (transp); + return; + } + memset ((char *)&argument, 0, sizeof (argument)); + if (!svc_getargs (transp, (xdrproc_t) _xdr_argument, (caddr_t) &argument)) { + svcerr_decode (transp); + return; + } + result = (*local)((char *)&argument, rqstp); + if (result != NULL && !svc_sendreply(transp, (xdrproc_t) _xdr_result, result)) { + svcerr_systemerr (transp); + } + if (!svc_freeargs (transp, (xdrproc_t) _xdr_argument, (caddr_t) &argument)) { + fprintf (stderr, "%s", "unable to free arguments"); + exit (1); + } + return; +} + +int +main (int argc, char **argv) +{ + register SVCXPRT *transp; + + pmap_unset (TELBUCH_VERWALTUNG, ONE); + + transp = svcudp_create(RPC_ANYSOCK); + if (transp == NULL) { + fprintf (stderr, "%s", "cannot create udp service."); + exit(1); + } + if (!svc_register(transp, TELBUCH_VERWALTUNG, ONE, telbuch_verwaltung_1, IPPROTO_UDP)) { + fprintf (stderr, "%s", "unable to register (TELBUCH_VERWALTUNG, ONE, udp)."); + exit(1); + } + + transp = svctcp_create(RPC_ANYSOCK, 0, 0); + if (transp == NULL) { + fprintf (stderr, "%s", "cannot create tcp service."); + exit(1); + } + if (!svc_register(transp, TELBUCH_VERWALTUNG, ONE, telbuch_verwaltung_1, IPPROTO_TCP)) { + fprintf (stderr, "%s", "unable to register (TELBUCH_VERWALTUNG, ONE, tcp)."); + exit(1); + } + + svc_run (); + fprintf (stderr, "%s", "svc_run returned"); + exit (1); + /* NOTREACHED */ +} -- cgit v1.2.3