diff options
Diffstat (limited to 'ipc.c')
-rw-r--r-- | ipc.c | 20 |
1 files changed, 8 insertions, 12 deletions
@@ -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; } |