Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Remove field name from strucure SD_link_t.
[simgrid.git] / src / simdag / sd_link.c
1 #include "private.h"
2 #include "simdag/simdag.h"
3 #include "xbt/dict.h"
4 #include "xbt/sysdep.h"
5 #include "surf/surf.h"
6
7 /* Creates a link.
8  */
9 SD_link_t __SD_link_create(void *surf_link, void *data) {
10   CHECK_INIT_DONE();
11   xbt_assert0(surf_link != NULL, "surf_link is NULL !");
12
13   SD_link_data_t sd_data = xbt_new0(s_SD_link_data_t, 1); /* link private data */
14   sd_data->surf_link = surf_link;
15
16   SD_link_t link = xbt_new0(s_SD_link_t, 1);
17   link->sd_data = sd_data; /* private data */
18   link->data = data; /* user data */
19
20   const char *name = SD_link_get_name(link);
21   xbt_dict_set(sd_global->links, name, link, __SD_link_destroy); /* add the workstation to the dictionary */
22
23   return link;
24 }
25
26 /* Returns the user data of a link. The user data can be NULL.
27  */
28 void* SD_link_get_data(SD_link_t link) {
29   CHECK_INIT_DONE();
30   xbt_assert0(link != NULL, "Invalid parameter");
31   return link->data;
32 }
33
34 /* Sets the user data of a link. The new data can be NULL. The old data should have been freed first if it was not NULL.
35  */
36 void SD_link_set_data(SD_link_t link, void *data) {
37   CHECK_INIT_DONE();
38   xbt_assert0(link != NULL, "Invalid parameter");
39   link->data = data;
40 }
41
42 /* Returns the name of a link. The name cannot be NULL.
43  */
44 const char* SD_link_get_name(SD_link_t link) {
45   CHECK_INIT_DONE();
46   xbt_assert0(link != NULL, "Invalid parameter");
47   return surf_workstation_resource->extension_public->get_link_name(link->sd_data->surf_link);
48 }
49
50 /* Returns the capacity of a link.
51  */
52 /*
53 double SD_link_get_capacity(SD_link_t link) {
54   xbt_assert0(link, "Invalid parameter");
55   return link->capacity;
56 }*/
57
58 /* Return the current bandwidth of a link.
59  */
60 double SD_link_get_current_bandwidth(SD_link_t link) {
61   CHECK_INIT_DONE();
62   xbt_assert0(link != NULL, "Invalid parameter");
63   return surf_workstation_resource->extension_public->get_link_bandwidth(link->sd_data->surf_link);
64 }
65
66 /* Return the current latency of a link.
67  */
68 double SD_link_get_current_latency(SD_link_t link) {
69   CHECK_INIT_DONE();
70   xbt_assert0(link != NULL, "Invalid parameter");
71   return surf_workstation_resource->extension_public->get_link_latency(link->sd_data->surf_link);
72 }
73
74 /* Destroys a link. The user data (if any) should have been destroyed first.
75  */
76 void __SD_link_destroy(void *link) {
77   CHECK_INIT_DONE();
78   xbt_assert0(link != NULL, "Invalid parameter");
79
80   SD_link_data_t sd_data = ((SD_link_t) link)->data;
81   if (sd_data != NULL) {
82     xbt_free(sd_data);
83   }
84
85   xbt_free(link);
86 }
87