Skip to content

Commit 9979873

Browse files
committed
node: fix receive_message, dix loop of the cycle
1 parent a4e4ed4 commit 9979873

1 file changed

Lines changed: 48 additions & 42 deletions

File tree

src/network/node.c

Lines changed: 48 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -24,50 +24,56 @@ void write_on_node(struct node *n, size_t address, char *data, size_t size) {
2424
}
2525

2626
void node_cycle(struct node *n) {
27-
// cycle of node
28-
struct message m;
29-
receive_message(&m);
27+
while (1) {
28+
// cycle of node
29+
struct queue *q = queue_init();
30+
struct message *m;
31+
m = receive_message(q);
3032

31-
switch (m.op) {
32-
case OP_OK:
33-
break;
34-
case OP_MALLOC:
35-
break;
36-
case OP_FREE:
37-
break;
38-
case OP_WRITE: {
39-
size_t addr = m.address;
40-
size_t size = m.size;
41-
char *data = malloc(size * sizeof(char));
42-
MPI_Status st;
43-
MPI_Recv(data, size, MPI_BYTE, m.id_s, 4, MPI_COMM_WORLD, &st);
44-
write_on_node(n, addr, data, size);
45-
free(data);
33+
switch (m->op) {
34+
case OP_OK:
35+
break;
36+
case OP_MALLOC:
37+
break;
38+
case OP_FREE:
39+
break;
40+
case OP_WRITE: {
41+
size_t addr = m->address;
42+
size_t size = m->size;
43+
char *data = malloc(size * sizeof(char));
44+
MPI_Status st;
45+
MPI_Recv(data, size, MPI_BYTE, m->id_s, 4, MPI_COMM_WORLD, &st);
46+
write_on_node(n, addr, data, size);
47+
free(data);
48+
}
49+
break;
50+
case OP_READ:
51+
break;
52+
case OP_SNAP:
53+
break;
54+
case OP_LEADER:
55+
break;
56+
case OP_WHOISLEADER:
57+
break;
58+
case OP_REVIVE:
59+
break;
60+
case OP_KILL:
61+
break;
62+
case OP_TEST:
63+
break;
64+
case OP_NONE:
65+
break;
66+
case OP_DUMP:
67+
break;
68+
case OP_LEADER_OK:
69+
break;
70+
case OP_ALIVE:
71+
break;
72+
case OP_LEADER_AGAIN:
73+
break;
4674
}
75+
if (m->op == OP_KILL)
4776
break;
48-
case OP_READ:
49-
break;
50-
case OP_SNAP:
51-
break;
52-
case OP_LEADER:
53-
break;
54-
case OP_WHOISLEADER:
55-
break;
56-
case OP_REVIVE:
57-
break;
58-
case OP_KILL:
59-
break;
60-
case OP_TEST:
61-
break;
62-
case OP_NONE:
63-
break;
64-
case OP_DUMP:
65-
break;
66-
case OP_LEADER_OK:
67-
break;
68-
case OP_ALIVE:
69-
break;
70-
case OP_LEADER_AGAIN:
71-
break;
77+
free(m);
7278
}
7379
}

0 commit comments

Comments
 (0)