SOURCE FILE: checkOP.cpp
#include <iostream>
#include <sched.h>
#include <time.h>
#include <pthread.h>
#include <string>
#include "sem.h"
#include "protocol.h"
#include <string>
using namespace std;
int main ()
{
bool isEmptyBuf[2] = {true,true}, problem=false;
int serial[2]= {0,0}, userOfBuf[2]={-1,-1},
serialOfBuf[2]={-1,-1}, lineNum=0;
int packetNum, userNum, agentNum, bufferNum ;
string startOfLine, remainder ;
while (cin >> startOfLine)
{
lineNum++ ;
char chr=startOfLine[0] ;
if (chr=='c' || chr=='C')
{
while (chr !='#') cin >> chr ; chr='@' ;
cin >> packetNum;
while (chr !='#') cin >> chr ; chr='@' ;
cin >> userNum;
while (chr !='#') cin >> chr ;
cin >> bufferNum ;
getline(cin,remainder); cin >> ws ;
if ( isEmptyBuf[bufferNum]
&& packetNum == serial[userNum] )
{
serial[userNum]++ ;
isEmptyBuf[bufferNum]= false;
userOfBuf[bufferNum]=userNum ;
serialOfBuf[bufferNum] = packetNum ;
}
else
{ cout << "WRITE FULL BUFFER at LINE " << lineNum << endl
<< "OR BAD PACKET NUMBER" << endl ;
problem=true;
}
}
else
{
while (chr !='#') cin >> chr ; chr='@' ;
cin >> agentNum ;
while (chr !='#') cin >> chr ; chr='@' ;
cin >> packetNum ;
while (chr !='#') cin >> chr ; chr='@' ;
cin >> userNum ;
while (chr !='#') cin >> chr ;
cin >> bufferNum ;
getline(cin,remainder); cin >> ws ;
if ( !isEmptyBuf[bufferNum]
&& userOfBuf[bufferNum]==userNum
&& serialOfBuf[bufferNum]==packetNum)
{
isEmptyBuf[bufferNum]=true ;
}
else
{ cout << "READ EMPTY BUFFER at LINE " << lineNum << endl
<< "OR BAD PACKET NUMBER" << endl ;
problem=true;
}
}
}
if (!problem)
cout << "NO " ;
cout << "PROBLEM(S) FOUND!!" << endl ;
return 0;
}