-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathurb.hpp
44 lines (38 loc) · 1.01 KB
/
urb.hpp
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
//
// urb.hpp
// project1
//
// Created by Henrik Åslund on 2018-10-14.
// Copyright © 2018 Henrik Åslund. All rights reserved.
//
#ifndef urb_hpp
#define urb_hpp
#include <stdio.h>
#include <iostream>
#include <set>
#include <iterator>
#include <mutex>
#include "beb.h"
#include "structures.h"
using namespace std;
class urb: public deliver_callback { // @suppress("Class has a virtual method and non-virtual destructor")
private:
std::vector<Message> delivered;
std::mutex del_m;
std::vector<Message> pending;
std::mutex pen_m;
vector<Message>::iterator it;
std::mutex it_m;
std::mutex ack_m;
set<int, greater <int> > ack[MAX_PROCESSES_NUM][MAX_MESSAGE_NUM];
deliver_callback* frb_callback;
public:
beb bbb;
bool candeliver(Message message);
bool not_in_deliver(Message message);
void init(deliver_callback* callback);
void urbBroadcast(Message message);
void deliver(Message message);
void urb_deliver(Message message, int from);
};
#endif /* urb_hpp */