1 /* Copyright (c) 2010-2014. The SimGrid Team.
2 * All rights reserved. */
4 /* This program is free software; you can redistribute it and/or modify it
5 * under the terms of the license (GNU LGPL) which comes with this package. */
7 #include "simgrid/jedule/jedule_events.hpp"
8 #include "simgrid/jedule/jedule.hpp"
13 #include "xbt/asserts.h"
20 while (!this->resource_subsets.empty()){
21 xbt_free(this->resource_subsets.back());
22 this->resource_subsets.pop_back();
26 void Event::addResources(std::vector<sg_host_t> *host_selection) {
27 xbt_dynar_t resource_subset_list;
28 jed_res_subset_t res_set;
31 resource_subset_list = xbt_dynar_new(sizeof(jed_res_subset_t), nullptr);
33 jed_simgrid_get_resource_selection_by_hosts(resource_subset_list, host_selection);
34 xbt_dynar_foreach(resource_subset_list, i, res_set) {
35 this->resource_subsets.push_back(res_set);
38 xbt_dynar_free_container(&resource_subset_list);
41 void Event::addCharacteristic(char *characteristic) {
42 xbt_assert( characteristic != nullptr );
43 this->characteristics_list.push_back(characteristic);
46 void Event::addInfo(char* key, char *value) {
47 xbt_assert((key != nullptr) && value != nullptr);
48 this->info_map.insert({key, value});
51 void Event::print(FILE *jed_file){
52 fprintf(jed_file, " <event>\n");
53 fprintf(jed_file, " <prop key=\"name\" value=\"%s\" />\n", this->name.c_str());
54 fprintf(jed_file, " <prop key=\"start\" value=\"%g\" />\n", this->start_time);
55 fprintf(jed_file, " <prop key=\"end\" value=\"%g\" />\n", this->end_time);
56 fprintf(jed_file, " <prop key=\"type\" value=\"%s\" />\n", this->type.c_str());
58 xbt_assert(!this->resource_subsets.empty());
59 fprintf(jed_file, " <res_util>\n");
60 for (auto subset: this->resource_subsets) {
61 fprintf(jed_file, " <select resources=\"");
62 fprintf(jed_file, "%s", subset->parent->getHierarchyAsString().c_str());
63 fprintf(jed_file, ".[%d-%d]", subset->start_idx, subset->start_idx + subset->nres - 1);
64 fprintf(jed_file, "\" />\n");
66 fprintf(jed_file, " </res_util>\n");
68 if (!this->characteristics_list.empty()){
69 fprintf(jed_file, " <characteristics>\n");
70 for (auto ch: this->characteristics_list)
71 fprintf(jed_file, " <characteristic name=\"%s\" />\n", ch);
72 fprintf(jed_file, " </characteristics>\n");
75 if (!this->info_map.empty()){
76 fprintf(jed_file, " <info>\n");
77 for (auto elm: this->info_map)
78 fprintf(jed_file, " <prop key=\"%s\" value=\"%s\" />\n",elm.first,elm.second);
79 fprintf(jed_file, " </info>\n");
82 fprintf(jed_file, " </event>\n");