Skip to content

Commit 7c2f64c

Browse files
committed
leader: finished dump execution
1 parent 7015d11 commit 7c2f64c

1 file changed

Lines changed: 15 additions & 3 deletions

File tree

src/network/leader.c

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -407,16 +407,28 @@ void execute_dump(struct leader_resources *l_r) {
407407
debug("Seg Fault: requested dump to a not allocated address", l_r->id);
408408
return;
409409
}
410+
size_t offset = 0;
410411
size_t a_size = size_of_allocation(c_a);
411-
char *dump = malloc(sizeof(char) * a_size);
412+
char *dump = malloc(sizeof(char) * (a_size + 2));
412413
for (size_t i = 0; i < c_a->number_parts; i++) {
413414
struct block *b = c_a->parts[i];
414-
415+
struct message *m = generate_message(l_r->id, b->id, b->id, b->node_address, b->size, OP_READ);
416+
debug("Send Read OP", l_r->id);
417+
MPI_Send(m, sizeof(struct message), MPI_BYTE, b->id, 3, MPI_COMM_WORLD);
418+
void *buff = malloc(sizeof(char) * (b->size + 1));
419+
MPI_Status st;
420+
MPI_Recv(buff, b->size, MPI_BYTE, b->id, 4, MPI_COMM_WORLD, &st);
421+
memcpy((void *) (dump + (offset * sizeof(char))), buff, b->size);
422+
offset += b->size;
415423
}
424+
425+
// Dump done
426+
debug("Dump :", l_r->id);
427+
debug_n(dump, l_r->id, a_size + 1);
416428
}
417429

418430
void execute_dump_all(struct leader_resources *l_r) {
419-
431+
(void) l_r;
420432
}
421433

422434
void execute_command(struct leader_resources *l_r) {

0 commit comments

Comments
 (0)