#include <msg/msg.h>
#include <xbt/fifo.h>

typedef enum {
  REQUEST_CHANNEL = 0,
  GENERAL_CHANNEL,
  MAX_CHANNEL
} channel_t;

/*-----[ Task creation ]---------------------------*/
m_task_t work_task_create(void);
void work_task_destroy(m_task_t * task);

typedef struct s_request_data {
  m_host_t who_am_i;
  double computing_power;
  double bandwidth;
} *request_data_t;

m_task_t request_task_create(void);
void request_task_destroy(m_task_t * task);

extern double task_computation_amount;
extern double task_communication_amount;
extern double request_computation_amount;
extern double request_communication_amount;
extern double global_time;

int sched_master(int argc, char *argv[]);
int sched_smarter_master(int argc, char *argv[]);
int sched_slave(int argc, char *argv[]);
int sched_smarter_slave(int argc, char *argv[]);
