summaryrefslogtreecommitdiff
path: root/ipc.c
diff options
context:
space:
mode:
Diffstat (limited to 'ipc.c')
-rw-r--r--ipc.c20
1 files changed, 8 insertions, 12 deletions
diff --git a/ipc.c b/ipc.c
index 0b7a9d7..b208067 100644
--- a/ipc.c
+++ b/ipc.c
@@ -1,10 +1,11 @@
#define _DEFAULT_SOURCE
#include <stdint.h>
+#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include "ipc.h"
-#include "main.h"
+#include "dist.h"
int send(void * self, local_id dst, const Message * msg) {
if( self == NULL )
@@ -27,7 +28,8 @@ int send(void * self, local_id dst, const Message * msg) {
int wr_dscr = me->dist_info->pipes[idx][1];
size_t wr_size = sizeof(msg->s_header) + msg->s_header.s_payload_len;
- if( write( wr_dscr, &msg, wr_size ) != wr_size )
+
+ if( write( wr_dscr, msg, wr_size ) != wr_size )
return 1;
return 0;
@@ -94,7 +96,7 @@ int receive_any(void * self, Message * msg) {
return 1;
uint8_t i, j = 0;
- int descriptors[MAX_PROCCNT - 1];
+ int *descriptors = (int *)malloc( sizeof(int) * (me->dist_info->proccnt - 1) );
for(i = 0; i < me->dist_info->proccnt; i++) {
// don't see at pipes as ( ID -> Y )
if( me->id == i )
@@ -116,19 +118,13 @@ int receive_any(void * self, Message * msg) {
for( i = 0; i < j; i++ ) {
if( ( size = read( descriptors[i], buf, sizeof( buf ) ) ) > 0 ) {
memcpy( msg, buf, sizeof( *msg ) );
- /*switch( msg->s_header.s_type ) {
- case STARTED:
- fprintf( stderr, "[ID: %d] Message STARTED received\n", me->id );
- break;
-
- case DONE:
- fprintf( stderr, "[ID: %d] Message DONE received\n", me->id );
- break;
- }*/
+ free( descriptors );
return 0;
}
}
usleep(100000); // sleep 100 ms
}
+
+ free( descriptors );
return 1;
}