/* FILE: receiver.c DESCRIPTION:This is a C simpl receiver. USAGE: receiver */ // include required headers #include #include #include // define possible message structures typedef struct { int token; int var1; int var2; int var3; } MSG1; int main() { char *me = "PIRECEIVER"; char *sender; char inmem[1024]; char outmem[1024]; int n; MSG1 *in1; MSG1 *out1; int *token; // perform simpl name attach if (name_attach(me, NULL) == -1) { printf("%s: cannot attach name-%s\n",me,whatsMyError()); exit(-1); } while (1) { // receive incoming messages n = Receive(&sender, inmem, 1024); if (n == -1) { printf("%s: Receive error-%s\n", me, whatsMyError()); continue; } // set a pointer to the value of the message token token = (int *)inmem; // decide course of action based on the value of the token switch (*token) { case 10: in1 = (MSG1 *)inmem; /* printf("token=%dvar1=%d var2=%d var3=%d\n", in1->token, in1->var1, in1->var2, in1->var3); */ //reply to sender out1 = (MSG1 *)outmem; out1->token=10; out1->var1=in1->var1+in1->var2+in1->var3; Reply(sender, outmem, 1024); break; default: out1 = (MSG1 *)outmem; out1->token=99; /* printf("%s:unknown token=%d\n",me,*token); */ Reply(sender, outmem, 1024); } } return(0); }