#include "ipc.h" #include "proc.h" #include #include #include int send(void * self, local_id dst, const Message * msg) { Process *p = (Process *)self; if (write(p->write_fildes[dst], (char *)msg, sizeof(Message)) == -1) { perror("sending"); return 1; } return 0; } int send_multicast(void * self, const Message * msg) { Process *p = (Process *)self; for (uint8_t i = 0; i < p->fildes_num; ++i) { if (i == p->id) continue; if (send(self, i, msg)) { return 1; } } return 0; } int receive(void * self, local_id from, Message * msg) { Process *p = (Process *)self; while (read(p->read_fildes[from], (char *)msg, sizeof(Message)) == -1) { if (errno != EAGAIN) { perror("receiving"); return 1; } } return 0; } int receive_any(void * self, Message * msg) { return 1; }