-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathEspera_procesos.cc
executable file
·70 lines (60 loc) · 2.04 KB
/
Espera_procesos.cc
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
#include "Espera_procesos.hh"
using namespace std;
// Constructoras
Espera_procesos::Espera_procesos() {}
// Modificadoras
void Espera_procesos::add_prioridad(const string& priority_ID) {
auto it = prioridades.find(priority_ID);
if (it != prioridades.end()) cout << "error: ya existe prioridad" << endl;
else {
Prioridad p;
prioridades.emplace(priority_ID, p);
}
}
void Espera_procesos::add_proceso(const Proceso& p, const string& priority_ID) {
auto it = prioridades.find(priority_ID);
if (it == prioridades.end()) cout << "error: no existe prioridad" << endl;
else {
if (it->second.existe_proceso(p.consultar_PID())) cout << "error: ya existe proceso" << endl;
else it->second.add_proceso(p);
}
}
void Espera_procesos::del_prioridad(const string& priority_ID) {
auto it = prioridades.find(priority_ID);
if (it == prioridades.end()) cout << "error: no existe prioridad" << endl;
else if (not it->second.empty()) cout << "error: prioridad con procesos" << endl;
else prioridades.erase(it);
}
void Espera_procesos::proceso_cluster(int num, Cluster& c) {
auto it = prioridades.begin();
while (num > 0 and it != prioridades.end()) {
it->second.send_proceso(num, c);
++it;
}
}
// Lectura y escritura
void Espera_procesos::leer_id_prioridades() {
int N;
cin >> N;
string priority_ID;
for (int i = 0; i < N; ++i) {
cin >> priority_ID;
Prioridad p;
prioridades.emplace(priority_ID, p);
}
}
void Espera_procesos::imprimir_area_espera() const {
for (const auto& par : prioridades) {
cout << par.first << endl;
par.second.print_procesos();
par.second.enviados_rechazados();
}
}
void Espera_procesos::procesos_prioridad(const string& priority_ID) const {
const auto& it = prioridades.find(priority_ID);
if (it == prioridades.end()) cout << "error: no existe prioridad" << endl;
else {
it->second.print_procesos();
it->second.enviados_rechazados();
}
}