Скачиваний:
16
Добавлен:
01.05.2014
Размер:
1.8 Кб
Скачать
#include "RPC.h"
#include "test.h"

RPC_svc *svc1p, *svc2p, *svc3p;

/* RPC function: progno=1, vers=1, proc_no=1 */
int func1_1_1 (SVCXPRT* xprt) {
    cerr << "func1_1_1 called\n";
    svc1p->reply(xprt, (xdrproc_t)xdr_void, 0);
    return RPC_SUCCESS;
}

/* RPC function: progno=1, vers=1, proc_no=2 */
int func1_1_2 (SVCXPRT* xprt) {
    cerr << "func1_1_2 called\n";
    svc1p->reply(xprt, (xdrproc_t)xdr_void, 0);
    return RPC_SUCCESS;
}

/* RPC function: progno=1, vers=2, proc_no=1 */
int func1_2_1 (SVCXPRT* xprt) {
    cerr << "func1_2_1 called\n";
    svc2p->reply(xprt, (xdrproc_t)xdr_void, 0);
    return RPC_SUCCESS;
}

/* RPC function: progno=2, vers=1, proc_no=1 */
int func2_1_1 (SVCXPRT* xprt) {
    cerr << "func2_1_1 called\n";
    svc3p->reply(xprt, (xdrproc_t)xdr_void, 0);
    return RPC_SUCCESS;
}

/* syntax: test_rpc [-s] [<nettype>] */ 
int main(int argc, char* argv[]) 
{

    char* nettype = (argc>1) ? argv[1] : "netpath";

    /* create server handle for prog_no=1, vers=1 */
    svc1p = new RPC_svc ( PROG1NUM, VERS1NUM, nettype );
    /* create server handle for prog_no=1, vers=2 */
    svc2p = new RPC_svc ( PROG1NUM, VERS2NUM, nettype );
    /* create server handle for prog_no=2, vers=1 */
    svc3p = new RPC_svc ( PROG2NUM, VERS1NUM, nettype );

    if (!svc1p->good() || !svc2p->good() || !svc3p->good()) {
       cerr << "create server handle(s) failed\n";
       return 1;
    }

    /* register RPC functions with servers */
    svc1p->add_proc( PROC1NUM, func1_1_1 );
    svc1p->add_proc( PROC2NUM, func1_1_2 );
    svc2p->add_proc( PROC1NUM, func1_2_1 );
    svc3p->add_proc( PROC1NUM, func2_1_1 );

    /* wait for clients' RPC requests for all servers */
    RPC_svc::run();
    return 0;
}
Соседние файлы в папке test_rpc