Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
ac6c7c019bd6af6ee3741f8c4dd5eeb23e5e8214
[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 #include <functional>
8
9 #include <boost/lambda/bind.hpp>
10 #include "src/surf/surf_interface.hpp"
11 #include "surf_swig.hpp"
12 #include "src/simix/smx_private.h"
13
14 using std::placeholders::_1;
15 using std::placeholders::_2;
16 using std::placeholders::_3;
17 using std::placeholders::_4;
18 using std::placeholders::_5;
19
20 double getClock() {
21   return surf_get_clock();
22 }
23
24 void clean() {
25   SIMIX_clean();
26 }
27
28 CpuModel *getCpuModel(){
29   return surf_cpu_model_pm;
30 }
31
32 CpuModel *java_cpu_model;
33 static void java_cpu_model_init_preparse() {
34   surf_cpu_model_pm = java_cpu_model;
35   xbt_dynar_push(all_existing_models, &java_cpu_model);
36   sg_platf_host_add_cb(cpu_parse_init);
37 }
38
39 void setCpuModel(CpuModel *cpuModel){
40   java_cpu_model = cpuModel;
41   surf_cpu_model_init_preparse = java_cpu_model_init_preparse;
42 }
43
44 void setCpu(char *name, Cpu *cpu) {
45         sg_host_surfcpu_set(sg_host_by_name(name), cpu);
46 }
47
48 LinkDynar getRoute(char *srcName, char *dstName) {
49   RoutingEdge *src = sg_host_edge(sg_host_by_name(srcName));
50   RoutingEdge *dst = sg_host_edge(sg_host_by_name(dstName));
51   xbt_assert(src,"Cannot get the route from a NULL source");
52   xbt_assert(dst,"Cannot get the route to a NULL destination");
53   xbt_dynar_t route = xbt_dynar_new(sizeof(RoutingEdge*), NULL);
54   routing_platf->getRouteAndLatency(src, dst, &route, NULL);
55   return route;
56 }
57
58 void Plugin::activateCpuCreatedCallback(){
59   surf_callback_connect(cpuCreatedCallbacks, std::bind(&Plugin::cpuCreatedCallback, this, _1));
60 }
61
62 void Plugin::activateCpuDestructedCallback(){
63   surf_callback_connect(cpuDestructedCallbacks, std::bind(&Plugin::cpuDestructedCallback, this, _1));
64 }
65
66 void Plugin::activateCpuStateChangedCallback(){
67   surf_callback_connect(cpuStateChangedCallbacks, std::bind(&Plugin::cpuStateChangedCallback, this, _1, _2, _3));
68 }
69
70 void Plugin::activateCpuActionStateChangedCallback(){
71   surf_callback_connect(cpuActionStateChangedCallbacks, std::bind(&Plugin::cpuActionStateChangedCallback, this, _1, _2, _3));
72 }
73
74
75 void Plugin::activateLinkCreatedCallback(){
76   surf_callback_connect(networkLinkCreatedCallbacks, std::bind(&Plugin::networkLinkCreatedCallback, this, _1));
77 }
78
79 void Plugin::activateLinkDestructedCallback(){
80   surf_callback_connect(networkLinkDestructedCallbacks, std::bind(&Plugin::networkLinkDestructedCallback, this, _1));
81 }
82
83 void Plugin::activateLinkStateChangedCallback(){
84   surf_callback_connect(networkLinkStateChangedCallbacks, std::bind(&Plugin::networkLinkStateChangedCallback, this, _1, _2, _3));
85 }
86
87 void Plugin::activateNetworkActionStateChangedCallback(){
88   surf_callback_connect(networkActionStateChangedCallbacks, std::bind(&Plugin::networkActionStateChangedCallback, this, _1, _2, _3));
89 }
90
91 void Plugin::activateNetworkCommunicateCallback(){
92   surf_callback_connect(networkCommunicateCallbacks, std::bind(&Plugin::networkCommunicateCallback, this, _1, _2, _3, _4, _5));
93 }
94
95
96