Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
chainsend: change default number of pieces
[simgrid.git] / examples / msg / chainsend / broadcaster.h
1 #ifndef KADEPLOY_BROADCASTER_H
2 #define KADEPLOY_BROADCASTER_H
3
4 #include "msg/msg.h"
5 #include "xbt/sysdep.h"
6
7 /* Create a log channel to have nice outputs. */
8 #include "xbt/log.h"
9 #include "xbt/asserts.h"
10
11 #include "messages.h"
12 #include "iterator.h"
13 #include "common.h"
14
15 /* Connection parameters */
16 #define MAX_PENDING_SENDS 10
17
18 /* Default values for the ``file'' details */
19 #define PIECE_SIZE 65536
20 #define PIECE_COUNT 16384
21
22 /* Broadcaster struct */
23 typedef struct s_broadcaster {
24   const char *first;
25   int piece_count;
26   int current_piece;
27   xbt_dynar_t host_list;
28   xbt_dynar_iterator_t it;
29   int max_pending_sends;
30   xbt_dynar_t pending_sends;
31 } s_broadcaster_t, *broadcaster_t;
32
33 xbt_dynar_t build_hostlist_from_hostcount(int hostcount); 
34
35 /* Broadcaster: helper functions */
36 broadcaster_t broadcaster_init(xbt_dynar_t host_list, unsigned int piece_count);
37 int broadcaster_build_chain(broadcaster_t bc);
38 int broadcaster_send_file(broadcaster_t bc);
39 int broadcaster_finish(broadcaster_t bc);
40 static void broadcaster_destroy(broadcaster_t bc);
41
42 /* Tasks */
43 int broadcaster(int argc, char *argv[]);
44
45 #endif /* KADEPLOY_BROADCASTER_H */