Skip to content

Commit 550878f

Browse files
Add files via upload
1 parent 8814dc8 commit 550878f

File tree

1 file changed

+29
-21
lines changed

1 file changed

+29
-21
lines changed

wellcoordination/benchmark/rubis.hpp

+29-21
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,11 @@ class Rubis : public ReplicatedObject
3636
CLOSE_AUCTION=5,
3737
QUERY = 6
3838
};
39-
std::atomic<int> auction [200][4]={{0}}; //auctionid-quantity-user propsed max value-max value -valid auction
40-
std::atomic<bool> registeredusers [200]={false};
39+
std::atomic<int> auction [200][2]={{0}}; //auctionid-user propsed max value-max value //item id eaqual to auciton id
40+
std::atomic<int> directbuysell [200]= {0};
41+
std::set<std::int> registeredusers;
42+
std::set<std::int> openauctions;
43+
std::set<std::int> closeauctions;
4144
int userscounter=0;
4245
//std::set<std::string> movies;
4346
//std::set<std::string> customers;
@@ -72,20 +75,21 @@ class Rubis : public ReplicatedObject
7275
synch_groups.push_back(g2);
7376

7477
for (int i = 0; i < 100; i++) {
75-
auction[i][0] = 1000;
76-
auction[i][3] =1; //auctions that are open.
77-
registeredusers[i] = true;
78+
directbuysell[i] = 1000;
79+
registeredusers.insert(i);
7880
}
7981
}
8082

8183
Rubis(Rubis &obj) : ReplicatedObject(obj)
8284
{
8385
//state
8486
std::memcpy(auction, obj.auction, sizeof(auction));
85-
std::memcpy(registeredusers, obj.registeredusers, sizeof(registeredusers));
87+
std::memcpy(directbuysell, obj.directbuysell, sizeof(directbuysell));
88+
registeredusers = obj.registeredusers;
89+
openauctions= obj.openauctions;
90+
closeauctions= obj.closeAction;
91+
8692
userscounter =obj.userscounter;
87-
//auction = obj.auction;
88-
//registeredusers = obj.registeredusers;
8993
}
9094

9195
virtual void toString()
@@ -98,43 +102,47 @@ class Rubis : public ReplicatedObject
98102
// 0
99103
void sellItem(int s_id, int value)
100104
{
101-
if(auction[s_id][3]==1){
102-
auction[s_id][0]=value;
105+
if(registeredusers.count(s_id)==1){
106+
directbuysell[s_id]=value;
103107
}
104108
}
105109
// 1
106110
void storeBuyNow(int s_id, int value)
107111
{
108-
if (auction[s_id][0]>value)
109-
auction[s_id][0]=auction[s_id][0]-value;
112+
if (directbuysell[s_id]>value && registeredusers.count(s_id)==1 )
113+
directbuysell[s_id]=directbuysell[s_id]-value;
110114
}
111115
// 2
112116
void registerUser(int u_id)
113117
{
114-
registeredusers[u_id]=true;
115-
userscounter++;
118+
if(registeredusers.count(u_id)==0){
119+
registeredusers.insert(u_id);
120+
userscounter++;
121+
}
116122
}
117123
// 3
118124
void placeBid(int a_id, int u_id, int value)
119125
{
120-
if(registeredusers[u_id] && auction[a_id][3]==1){
121-
if(auction[a_id][2]<value){
122-
auction[a_id][1]=u_id;
123-
auction[a_id][2]=value;
126+
if(registeredusers.count(u_id)==1 && openauction.count(a_id)==1 && closeauction.count(a_id)==0){
127+
if(auction[a_id][1]<value){
128+
auction[a_id][0]=u_id;
129+
auction[a_id][1]=value;
124130
}
125131
}
126132
}
127133

128134
void openAction(int a_id, int stock)
129135
{
130-
if(auction[a_id][3]==0){
136+
if(openauction.count(a_id)==0 && closeauction.count(a_id)==0){
131137
auction[a_id][0]=stock;
132-
auction[a_id][3]=1;
138+
openauction.insert(a_id);
133139
}
134140
}
135141
void closeAction(int a_id)
136142
{
137-
auction[a_id][3]=0;
143+
if(openauction.count(a_id)==1 && closeauction.count(a_id)==0){
144+
closeauction.insert(a_id);
145+
}
138146
}
139147

140148
Rubis query() { return *this; }

0 commit comments

Comments
 (0)