1 /* Copyright (c) 2014-2015. 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 // 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
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"
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;
27 return surf_get_clock();
34 simgrid::surf::CpuModel *getCpuModel(){
35 return surf_cpu_model_pm;
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);
44 void setCpuModel(simgrid::surf::CpuModel *cpuModel){
45 java_cpu_model = cpuModel;
46 surf_cpu_model_init_preparse = java_cpu_model_init_preparse;
49 void setCpu(char *name, simgrid::surf::Cpu *cpu) {
50 sg_host_surfcpu_set(sg_host_by_name(name), cpu);
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);
63 void Plugin::activateCpuCreatedCallback()
65 surf_callback_connect(simgrid::surf::cpuCreatedCallbacks,
66 std::bind(&Plugin::cpuCreatedCallback, this, _1));
69 void Plugin::activateCpuDestructedCallback()
71 surf_callback_connect(simgrid::surf::cpuDestructedCallbacks,
72 std::bind(&Plugin::cpuDestructedCallback, this, _1));
75 void Plugin::activateCpuStateChangedCallback()
77 surf_callback_connect(simgrid::surf::cpuStateChangedCallbacks,
78 std::bind(&Plugin::cpuStateChangedCallback, this, _1, _2, _3));
81 void Plugin::activateCpuActionStateChangedCallback()
83 surf_callback_connect(simgrid::surf::cpuActionStateChangedCallbacks,
84 std::bind(&Plugin::cpuActionStateChangedCallback, this, _1, _2, _3));
88 void Plugin::activateLinkCreatedCallback()
90 surf_callback_connect(simgrid::surf::networkLinkCreatedCallbacks,
91 std::bind(&Plugin::networkLinkCreatedCallback, this, _1));
94 void Plugin::activateLinkDestructedCallback()
96 surf_callback_connect(simgrid::surf::networkLinkDestructedCallbacks,
97 std::bind(&Plugin::networkLinkDestructedCallback, this, _1));
100 void Plugin::activateLinkStateChangedCallback()
102 surf_callback_connect(simgrid::surf::networkLinkStateChangedCallbacks,
103 std::bind(&Plugin::networkLinkStateChangedCallback, this, _1, _2, _3));
106 void Plugin::activateNetworkActionStateChangedCallback()
108 surf_callback_connect(simgrid::surf::networkActionStateChangedCallbacks,
109 std::bind(&Plugin::networkActionStateChangedCallback, this, _1, _2, _3));
112 void Plugin::activateNetworkCommunicateCallback()
114 surf_callback_connect(simgrid::surf::networkCommunicateCallbacks,
115 std::bind(&Plugin::networkCommunicateCallback, this, _1, _2, _3, _4, _5));