Почему подпись удаленного метода отличается от спецификации в RPC? - PullRequest
0 голосов
/ 22 декабря 2018

Я новичок в RPC.В файле спецификации .x я пишу один метод, который принимает структуру sqaure_in и возвращает структуру square_out.Но вот что делает меня неясным, когда я вызываю удаленный метод squareproc_1 из файла клиента, я передаю указатель, а не значение структуры, но в файле спецификации метод принимает struct square_in, а не указатель, так почемупроисходит?

client.c

int main(int argc, char **argv) {
    CLIENT *c1;
    square_in in;
    square_out *outp;

    if(argc != 3) {
        printf("usage: client <HOST NAME> <integer-value>\n");
        exit(-1);
    }
    c1 = clnt_create(argv[1], SQUARE_PROG, SQUARE_VERS, "tcp");

    in.arg1 = atoi(argv[2]);
    if((outp = squareproc_1(&in, c1))  == NULL) {
        printf("%s", clnt_sperror(c1, argv[1]));
        exit(-1);
    }
    printf("result: %ld\n", outp->res1);
    exit(0);
}

square.x

struct square_in {
    long arg1;
};

struct square_out {
    long res1;
};

program SQUARE_PROG {
    version SQUARE_VERS {
        square_out SQUAREPROC(square_in) = 1;
    } = 1;
} = 0x31230000;
...