/***************************************************************/ /* mcast.h : data structures for multicast */ /* written by Lihao Xu, EE, Caltech */ /* May 1995 */ /***************************************************************/ #include "mayc.h" #include "message_passing.h" #include "boolean.h" #define MAX_NUM_NODE 10 #define MAX_MSG 1000 #define WINDOW 100 #define SPLIT 10 #define TR 4 #define TS 4 #define INI_DELAY 35 #define HIGH_DELAY 30 #define LOW_DELAY 10 #define PRECISION 100000 #define CHANNEL_DELAY (int) uniform_random(LOW_DELAY,HIGH_DELAY) #define min(x,y) ((x)<(y)?(x):(y)) #define max(x,y) ((x)>(y)?(x):(y)) MESSAGE packet{ int msg_source; int msg_num; int pkt_num; char data; } MESSAGE packet_head{ int msg_source; int msg_num; int msg_size; int group[MAX_NUM_NODE]; int group_size; } MESSAGE ack{ int msg_source; int msg_num; int pkt_num; int acker; } MESSAGE nack{ int msg_source; int msg_num; int pkt_num; } MESSAGE time_out_request{ int msg_source; int msg_num; int pkt_num; int wake_up_time; } MESSAGE time_out{ int msg_source; int msg_num; int pkt_num; } MESSAGE initiate_timer{ PROCESS_ID host; } MESSAGE initiate_sender{ PROCESS_ID my_id; int my_num; PROCESS_ID host; int num_node; PROCESS_ID receiver[MAX_NUM_NODE]; }; MESSAGE initiate_receiver{ PROCESS_ID my_id; int my_num; PROCESS_ID host; int num_node; PROCESS_ID receiver[MAX_NUM_NODE]; PROCESS_ID sender[MAX_NUM_NODE]; } MESSAGE usr_msg{ int group_size; int group[MAX_NUM_NODE]; int msg_size; char msg[MAX_MSG]; } MESSAGE delivered_msg{ int msg_source; int msg_size; char msg[MAX_MSG]; int group[MAX_NUM_NODE]; int group_size; }