diff --git a/simpleclient.cpp b/simpleclient.cpp deleted file mode 100755 index b2e0bcf..0000000 --- a/simpleclient.cpp +++ /dev/null @@ -1,295 +0,0 @@ -/* - File: simpleclient.C - - Author: R. Bettati - Department of Computer Science - Texas A&M University - Date : 2013/01/31 - - Simple client main program for MP3 in CSCE 313 -*/ - -/*--------------------------------------------------------------------------*/ -/* DEFINES */ -/*--------------------------------------------------------------------------*/ - - /* -- (none) -- */ - -/*--------------------------------------------------------------------------*/ -/* INCLUDES */ -/*--------------------------------------------------------------------------*/ - -#include -#include -#include -#include -#include -#include - -#include -#include - -#include "reqchannel.h" -#include "semaphore.h" -#include "BoundedBuffer.h" - -using namespace std; - - -/*--------------------------------------------------------------------------*/ -/* DATA STRUCTURES */ -/*--------------------------------------------------------------------------*/ - - /* none */ - -/*--------------------------------------------------------------------------*/ -/* CONSTANTS */ -/*--------------------------------------------------------------------------*/ - - -BoundedBuffer Request_Buffer; -BoundedBuffer Response_Buffer[3]; -BoundedBuffer RB1; - -vector John_vec(100); -vector Jane_vec(100); -vector Joe_vec(100); - -int n = 1000, b = 100, w = 5;//set defaults - -/*--------------------------------------------------------------------------*/ -/* FORWARDS */ -/*--------------------------------------------------------------------------*/ - -void* Req_Thread(void* args); -void* Worker_Thread(void* args); -void* Stat_Thread(void* args); - -/*--------------------------------------------------------------------------*/ -/* MAIN FUNCTION */ -/*--------------------------------------------------------------------------*/ - -int main(int argc, char * argv[]) { - - int option = -1; - - while ((option = getopt(argc, argv, "n:b:w:")) != -1){ - switch (option){ - case 'n' : - n = atoi(optarg); - break; - case 'b' : - b = atoi(optarg); - break; - case 'w' : - w = atoi(optarg); - break; - } - } - - pid_t pid = fork(); - - if(pid != 0){ - - Request_Buffer.set_empty(b); - Response_Buffer[0].set_empty(b); - Response_Buffer[1].set_empty(b); - Response_Buffer[2].set_empty(b); - - - - RequestChannel chan("control", RequestChannel::CLIENT_SIDE); -<<<<<<< HEAD - - pthread_t request_thread_ids[3]; - pthread_t worker_thread_ids[w]; - pthread_t statistic_thread_ids[3]; - RequestChannel* worker_return[w]; -======= - cout << "done." << endl; - - for(int i = 0; i < 3; i++){ - pid = fork(); - if(pid){ //if in the parent still - if(i == 0){ - Req_Thread(" Joe Smith"); - }else if(i == 1){ - Req_Thread(" Jane Smith"); - }else if(i == 2){ - Req_Thread(" John Doe"); - } - continue; - }else if (pid == 0){ - break; - } else { - exit(1); - } - } - - -<<<<<<< HEAD - string channel_name; - for(int i=0; i < w; i++){ - channel_name = chan.send_request("newthread"); - cout << "\nChan: " << channel_name << endl; - RequestChannel* worker_ret = new RequestChannel(channel_name, RequestChannel::CLIENT_SIDE); - pid = fork(); - if(pid != 0) { - Worker_Thread(argv, worker_ret); - break; - } - } - - - chan.send_request("quit"); - -======= ->>>>>>> 4a988cc17197484a727d1eafa31fc5dc8788b952 - - - - - //--------------------------------------------- - //------- pthread_create ------- - //--------------------------------------------- - int index[3]; - for(int i=0; i < 3; i++){ - index[i] = i; - pthread_create(&request_thread_ids[i], NULL, Req_Thread, (void *)&index[i]); - } - - for(int i=0; i < w; i++){ - string channel_name = chan.send_request("newthread"); - worker_return[i] = new RequestChannel(channel_name, RequestChannel::CLIENT_SIDE); - pthread_create(&worker_thread_ids[i], NULL, Worker_Thread, worker_return[i]); - } - - for(int i=0; i < 3; i++){ - pthread_create(&statistic_thread_ids[i], NULL, Stat_Thread, (void *)&i); - } - - //--------------------------------------------- - //-------- pthread_join -------- - //--------------------------------------------- - - for(int i=0; i < 3; i++){ - pthread_join(request_thread_ids[i], NULL); - } - - for(int i=0; i < w; i++){ - pthread_join(worker_thread_ids[i], NULL); - } - - for(int i=0; i < 3; i++){ - pthread_join(statistic_thread_ids[i], NULL); - } - - for(int i=0; i < w; i++){ - worker_return[i]->send_request("quit"); - } - - cout << "\n\n HISTOGRAM \n"; - int ct = 0; - for(int i=0; i < 100; i++){ - cout << "Num: " << i << "\tTimes: " << John_vec[i] << endl; - - } - //STILL NEED TO OUTPUT THE HISTOGRAM SOMEHOW.... - - chan.send_request("quit"); - }else{ -<<<<<<< HEAD - execl("dataserver", 0); -======= - execve("dataserver", argv, argv); ->>>>>>> 7f3859db688a7e8629c7a88e7baad87ad6df405d ->>>>>>> 4a988cc17197484a727d1eafa31fc5dc8788b952 - } - usleep(1000000); - -} - -<<<<<<< HEAD -void* Worker_Thread(void* arg){ - RequestChannel* chann = (RequestChannel*)arg; - while(true){ - string request = Request_Buffer.pop(); - string response = chann->send_request(request); - if(request == "data Joe Smith"){ - Response_Buffer[0].push(response); - }else if(request == "data Jane Smith"){ - Response_Buffer[1].push(response); - }else if(request == "data John Doe"){ - Response_Buffer[2].push(response); - }else if(request == "quit"){ //Break out of the thread if quit response is found - break; - } -======= -void* Worker_Thread(char* arg[], RequestChannel* chan){ -<<<<<<< HEAD - //handles the data moving between the Server and Bounded Buffer - //control chan("control", RequestChannel::CLIENT_SIDE); - //string channel_name = control.send_request("newthread"); - //RequestChannel * channel_ret = new RequestChannel(channel_name, RequestChannel::CLIENT_SIDE); - while(true){ - -======= - while(true){ ->>>>>>> 7f3859db688a7e8629c7a88e7baad87ad6df405d - string req = Request_Buffer->pop(); - cout << "Request: " << req << endl; - string response = chan->send_request(req); - cout << "Response: " << response << endl; - //local_send_request(req, response); ->>>>>>> 4a988cc17197484a727d1eafa31fc5dc8788b952 - } -} - - -void* Req_Thread(void* arg){ - int person = *(int*)arg; - cout << "PERSON: " << person << endl; - switch(person){ - case 0: - for(int i=0; i < n; i++){ Request_Buffer.push("data Joe Smith"); cout << "JOE";} - break; - case 1: - for(int i=0; i < n; i++){ Request_Buffer.push("data Jane Smith"); cout << "JANE";} - break; - case 2: - for(int i=0; i < n; i++){ Request_Buffer.push("data John Doe"); cout << "JOHN";} - break; - } -} - -void* Stat_Thread(void* arg){ - //send to proper response buffer based on which name is found! - int person = *(int*)arg; - - string num; - if(person == 0){ - for(int i=0; i < n; i++){ - num = Response_Buffer[0].pop(); - int v = atoi(num.c_str()); - John_vec[v] = John_vec[v] + 1; - } - }else if(person == 1){ - for(int i=0; i < n; i++){ - num = Response_Buffer[1].pop(); - cout << "\nPERSON1: " << num << endl; - int v = atoi(num.c_str()); - - Jane_vec[v] = Jane_vec[v] + 1; - } - }else if(person == 2){ - for(int i=0; i < n; i++){ - num = Response_Buffer[2].pop(); - int v = atoi(num.c_str()); - John_vec[v] = John_vec[v] + 1; - } - } -} - - - -