Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
rename host callbacks
[simgrid.git] / src / bindings / java / surf_swig.cpp
1 /* Copyright (c) 2014-2015. The SimGrid Team.
2  * All rights reserved.                                                     */
3
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. */
6
7 // Avoid ambiguity between boost and std placeholders
8 // (the std placeholders are imported through boost::signals2):
9 #ifndef BOOST_BIND_NO_PLACEHOLDERS
10   #define BOOST_BIND_NO_PLACEHOLDERS
11 #endif
12
13 #include <functional>
14
15 #include <boost/lambda/bind.hpp>
16 #include "src/surf/surf_interface.hpp"
17 #include "surf_swig.hpp"
18 #include "src/simix/smx_private.h"
19
20 using std::placeholders::_1;
21 using std::placeholders::_2;
22 using std::placeholders::_3;
23 using std::placeholders::_4;
24 using std::placeholders::_5;
25
26 double getClock() {
27   return surf_get_clock();
28 }
29
30 void clean() {
31   SIMIX_clean();
32 }
33
34 simgrid::surf::CpuModel *getCpuModel(){
35   return surf_cpu_model_pm;
36 }
37
38 simgrid::surf::CpuModel *java_cpu_model;
39 static void java_cpu_model_init_preparse() {
40   surf_cpu_model_pm = java_cpu_model;
41   xbt_dynar_push(all_existing_models, &java_cpu_model);
42 }
43
44 void setCpuModel(simgrid::surf::CpuModel *cpuModel){
45   java_cpu_model = cpuModel;
46   surf_cpu_model_init_preparse = java_cpu_model_init_preparse;
47 }
48
49 void setCpu(char *name, simgrid::surf::Cpu *cpu) {
50         // No-op here for compatibility with previous versions
51 }
52
53 LinkDynar getRoute(char *srcName, char *dstName) {
54   simgrid::surf::RoutingEdge *src = sg_host_edge(sg_host_by_name(srcName));
55   simgrid::surf::RoutingEdge *dst = sg_host_edge(sg_host_by_name(dstName));
56   xbt_assert(src,"Cannot get the route from a NULL source");
57   xbt_assert(dst,"Cannot get the route to a NULL destination");
58   xbt_dynar_t route = xbt_dynar_new(sizeof(simgrid::surf::RoutingEdge*), NULL);
59   routing_platf->getRouteAndLatency(src, dst, &route, NULL);
60   return route;
61 }
62
63 void Plugin::activateCpuCreatedCallback()
64 {
65   simgrid::surf::cpuCreatedCallbacks.connect(
66     std::bind(&Plugin::cpuCreatedCallback, this, _1));
67 }
68
69 void Plugin::activateCpuDestructedCallback()
70 {
71   simgrid::surf::cpuDestructedCallbacks.connect(
72     std::bind(&Plugin::cpuDestructedCallback, this, _1));
73 }
74
75 void Plugin::activateCpuStateChangedCallback()
76 {
77   simgrid::surf::cpuStateChangedCallbacks.connect(
78     std::bind(&Plugin::cpuStateChangedCallback, this, _1, _2, _3));
79 }
80
81 void Plugin::activateCpuActionStateChangedCallback()
82 {
83   simgrid::surf::cpuActionStateChangedCallbacks.connect(
84     std::bind(&Plugin::cpuActionStateChangedCallback, this, _1, _2, _3));
85 }
86
87
88 void Plugin::activateLinkCreatedCallback()
89 {
90   simgrid::surf::networkLinkCreatedCallbacks.connect(
91     std::bind(&Plugin::networkLinkCreatedCallback, this, _1));
92 }
93
94 void Plugin::activateLinkDestructedCallback()
95 {
96   simgrid::surf::networkLinkDestructedCallbacks.connect(
97     std::bind(&Plugin::networkLinkDestructedCallback, this, _1));
98 }
99
100 void Plugin::activateLinkStateChangedCallback()
101 {
102   simgrid::surf::networkLinkStateChangedCallbacks.connect(
103     std::bind(&Plugin::networkLinkStateChangedCallback, this, _1, _2, _3));
104 }
105
106 void Plugin::activateNetworkActionStateChangedCallback()
107 {
108   simgrid::surf::networkActionStateChangedCallbacks.connect(
109     std::bind(&Plugin::networkActionStateChangedCallback, this, _1, _2, _3));
110 }
111
112 void Plugin::activateNetworkCommunicateCallback()
113 {
114   simgrid::surf::networkCommunicateCallbacks.connect(
115     std::bind(&Plugin::networkCommunicateCallback, this, _1, _2, _3, _4, _5));
116 }
117
118
119