Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
jedule binding to SD started
[simgrid.git] / src / instr / jedule / jedule_events.c
1 /*
2  * jedule_events.c
3  *
4  *  Created on: Nov 30, 2010
5  *      Author: sascha
6  */
7
8 #include <stdio.h>
9 #include <stdlib.h>
10 #include <string.h>
11
12 #include "jedule_events.h"
13 #include "jedule_platform.h"
14
15 #include "xbt/dict.h"
16 #include "xbt/dynar.h"
17 #include "xbt/asserts.h"
18
19 void jed_event_add_resources(jed_event_t event, xbt_dynar_t host_selection) {
20         xbt_dynar_t resource_subset_list;
21         jed_res_subset_t res_set;
22         int i;
23
24         resource_subset_list = xbt_dynar_new(sizeof(jed_res_subset_t), NULL);
25
26         jed_simgrid_get_resource_selection_by_hosts(resource_subset_list, host_selection);
27         xbt_dynar_foreach(resource_subset_list, i, res_set)  {
28                 xbt_dynar_push(event->resource_subsets, &res_set);
29         }
30
31         xbt_dynar_free(&resource_subset_list);
32 }
33
34 void jed_event_add_characteristic(jed_event_t event, char *characteristic) {
35         xbt_assert( characteristic != NULL );
36         xbt_dynar_push(event->characteristics_list, &characteristic);
37 }
38
39
40 void jed_event_add_info(jed_event_t event, char *key, char *value) {
41         char *val_cp;
42
43         xbt_assert(key != NULL);
44         xbt_assert(value != NULL);
45
46         val_cp = strdup(value);
47         xbt_dict_set(event->info_hash, key, val_cp, NULL);
48 }
49
50
51 void create_jed_event(jed_event_t *event, char *name, double start_time,
52                 double end_time, char *type) {
53
54         *event = (jed_event_t) calloc(1, sizeof(s_jed_event_t));
55         (*event)->name = (char*) calloc(strlen(name) + 1, sizeof(char));
56         strcpy((*event)->name, name);
57
58         (*event)->start_time = start_time;
59         (*event)->end_time = end_time;
60
61         (*event)->type = (char*) calloc(strlen(type) + 1, sizeof(char));
62         strcpy((*event)->type, type);
63
64         (*event)->resource_subsets = xbt_dynar_new(sizeof(jed_res_subset_t), NULL);
65         (*event)->characteristics_list = xbt_dynar_new(sizeof(char*), NULL);
66         (*event)->info_hash = xbt_dict_new();
67
68 }
69
70
71 void jed_event_free(jed_event_t event) {
72
73         free(event->name);
74         free(event->type);
75
76         xbt_dynar_free(&event->resource_subsets);
77
78         xbt_dynar_free(&event->characteristics_list);
79         xbt_dict_free(&event->info_hash);
80
81         free(event);
82 }