-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathClientThread.cpp
More file actions
99 lines (92 loc) · 2.98 KB
/
ClientThread.cpp
File metadata and controls
99 lines (92 loc) · 2.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#include "ClientThread.h"
#include "Messages.h"
#include <iostream>
ClientThreadClass::ClientThreadClass() {}
void ClientThreadClass::
ThreadBody(std::string ip, int port, int id, int orders, int type, int num_customers)
{
customer_id = id;
num_orders = orders;
request_type = type;
if (!stub.Init(ip, port))
{
std::cout << "Primary server is not available" << std::endl;
return;
}
if (request_type == 3)
{
for (int i = 0; i < num_orders; i++)
{
if((i % num_customers) == id)
{
// std::cout << "thread " << id << " :processing: " << i << std::endl;
CustomerRequest customerRequest;
CustomerRecord customerRecord;
customerRequest.SetCustomerRequest(i, 0, 2);
customerRecord = stub.ReadRecord(customerRequest);
// std::cout << "Thread " << i << " customerRecord" << std::endl;
if (customerRecord.GetLastOrder() != -1)
customerRecord.Print();
}
}
return;
}
if (request_type == 4)
{
int j = num_orders, i = 0;
// while(j < num_orders)
{
while (i <= j) {
CustomerRequest customerRequest;
CustomerRecord customerRecord;
customerRequest.SetCustomerRequest(i, 0, 2);
customerRecord = stub.ReadRecord(customerRequest);
// std::cout << "Thread " << i << " customerRecord" << std::endl;
if (customerRecord.GetLastOrder() != -1)
customerRecord.Print();
i++;
}
while(i > 0) {
i--;
CustomerRequest customerRequest;
CustomerRecord customerRecord;
customerRequest.SetCustomerRequest(i, 0, 2);
customerRecord = stub.ReadRecord(customerRequest);
// std::cout << "Thread " << i << " customerRecord" << std::endl;
if (customerRecord.GetLastOrder() != -1)
customerRecord.Print();
}
// j++;
}
return;
}
if (request_type == 2) // read for one customer id
{
CustomerRequest customerRequest;
CustomerRecord customerRecord;
customerRequest.SetCustomerRequest(orders, 0, request_type); // here orders is customer id
customerRecord = stub.ReadRecord(customerRequest);
// std::cout << "Thread " << customer_id << " customerRecord " << 0 << std::endl;
customerRecord.Print();
return;
}
for (int i = 0; i < num_orders; i++)
{
CustomerRequest customerRequest;
LaptopInfo laptop;
// std::cout << "Thread " << customer_id << " customerRequest " << i << std::endl;
customerRequest.SetCustomerRequest(customer_id, i, request_type);
timer.Start();
laptop = stub.OrderLaptop(customerRequest);
timer.EndAndMerge();
if (!laptop.IsValid())
{
// std::cout << "Invalid laptop " << customer_id << std::endl;
break;
}
}
}
ClientTimer ClientThreadClass::GetTimer()
{
return timer;
}