/*****************************************************************************
* 	Project 	: Network Based Message Queue System		    **
*	Course		: CIS 650 - Software Engineering		    **
*	Location 	: ~sameer/cis650/proj/cl                 	    **
*	File		: shutdown.cc       	       			    **
*	Description 	: program to shutdown the message queue 	    **
*****************************************************************************/

#include <iostream.h>
#include "uai.h"
#include <sys/ipc.h>
#include <sys/msg.h>

struct nmsgbuf *ptr;

main()
{
  int msqid, n1, n2, clientID;
  nmsqid_ds *request;

  msqid = nmsgget(6, 5);

  clientID = ngetownid();

  ptr = new nmsgbuf;

  request = new nmsqid_ds;

  request->numberMsgsType = 1001;
  request->numberMsgs = 1002;
  request->numberBytes = 1003;
  request->numberPendingProcesses = 1004;
  request->numberConnections = 1005;

  nmsgctl(msqid, IPC_RMID, request);

                printf("got numberMsgsType = %d\n", request->numberMsgsType);
                printf("got numberMsgs = %d\n", request->numberMsgs);
                printf("got numberBytes = %d\n", request->numberBytes);
   printf("got numberPendingProcesses = %d\n", request->numberPendingProcesses);
  printf("got numberConnections = %d\n", request->numberConnections);

  ptr->mtype = 1;
  read_line(0,ptr->mtext,256);
  //cout << "ptr->mtype is " << ptr->mtype << endl;
  //cout << "ptr->mtext is " << ptr->mtext << endl;

  /* send the message */
  n1 = nmsgsnd(msqid, ptr, strlen(ptr->mtext), 0);
  if (n1 < 0) {
    cout << "nmsgsnd error" << endl;
    exit(1);
  }

  memset(ptr->mtext,0,256);
  /* receive the result */
  n2 = nmsgrcv(msqid, ptr, 256, clientID);
  if (n2 < 0) {
    cout << "nmsgsnd error" << endl;
    exit(1);
  }
  
  cout << "client: I just sent following" << endl;
  cout << ptr->mtext << endl;
  //cout << "Now the ptr->mtype is " << ptr->mtype << endl;

  delete ptr;
}



