#include <stdio.h>
#include <pvm3.h>

int main()
{
  int myTID, leftTID, rightTID, senderTID;
  int res, i, bufid;
  FILE* cons;

  cons = fopen("/dev/pts/1", "a");
  myTID = pvm_mytid();
  sleep(1);
  fprintf(cons, "\nSlave [%d]: started\n", myTID);

  // get neighbors' TIDs
  pvm_recv(-1, -1);
  pvm_upkint(&leftTID, 1, 1);
  pvm_upkint(&rightTID, 1, 1);

  fprintf(cons, "Slave [%d]: left=%d right=%d\n", myTID, leftTID, rightTID);
  sleep(1);

  while(1)
  {
    bufid = pvm_recv(-1, -1);
    pvm_upkint(&i, 1, 1);
    pvm_bufinfo(bufid, NULL, NULL, &senderTID);
    fprintf(cons, "Slave [%d]: msg %2d from %d\n", myTID, i, senderTID);
    sleep(1);
    i++;
    pvm_initsend(PvmDataDefault);
    pvm_pkint(&i, 1, 1);
    pvm_send(rightTID, 1);
    if (i>20) break;
  }

  pvm_exit();
  return 0;
}

