Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add example of java cpu model
[simgrid.git] / src / bindings / java / surf_swig.cpp
1 /* Copyright (c) 2014. 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 <boost/lambda/bind.hpp>
8 #include "src/surf/surf_interface.hpp"
9 #include "surf_swig.hpp"
10 #include "src/simix/smx_private.h"
11
12 double getClock() {
13   return surf_get_clock();
14 }
15
16 void clean() {
17   SIMIX_clean();
18 }
19
20 CpuModel *getCpuModel(){
21   return surf_cpu_model_pm;
22 }
23
24 CpuModel *java_cpu_model;
25 static void java_cpu_model_init_preparse() {
26   surf_cpu_model_pm = java_cpu_model;
27   xbt_dynar_push(model_list, &java_cpu_model);
28   xbt_dynar_push(model_list_invoke, &java_cpu_model);
29   sg_platf_host_add_cb(parse_cpu_init);
30 }
31
32 void setCpuModel(CpuModel *cpuModel){
33   java_cpu_model = cpuModel;
34   surf_cpu_model_init_preparse = java_cpu_model_init_preparse;
35 }
36
37 void setCpu(char *name, Cpu *cpu) {
38   xbt_lib_set(host_lib, name, SURF_CPU_LEVEL, cpu);
39 }
40
41 NetworkLinkDynar getRoute(char *srcName, char *dstName) {
42   RoutingEdge *src = (RoutingEdge*)xbt_lib_get_or_null(host_lib, srcName, ROUTING_HOST_LEVEL);
43   RoutingEdge *dst = (RoutingEdge*)xbt_lib_get_or_null(host_lib, dstName, ROUTING_HOST_LEVEL);
44   if (src==NULL)
45     xbt_die("TOTO");
46   if (dst==NULL)
47     xbt_die("TOTO");
48   xbt_dynar_t route = xbt_dynar_new(sizeof(RoutingEdgePtr), NULL);
49   routing_platf->getRouteAndLatency(src, dst, &route, NULL);
50   return route;
51 }
52
53 void Plugin::activateCpuCreatedCallback(){
54   surf_callback_connect(cpuCreatedCallbacks, boost::bind(&Plugin::cpuCreatedCallback, this, _1));
55 }
56
57 void Plugin::activateCpuDestructedCallback(){
58   surf_callback_connect(cpuDestructedCallbacks, boost::bind(&Plugin::cpuDestructedCallback, this, _1));
59 }
60
61 void Plugin::activateCpuStateChangedCallback(){
62   surf_callback_connect(cpuStateChangedCallbacks, boost::bind(&Plugin::cpuStateChangedCallback, this, _1, _2, _3));
63 }
64
65 void Plugin::activateCpuActionStateChangedCallback(){
66   surf_callback_connect(cpuActionStateChangedCallbacks, boost::bind(&Plugin::cpuActionStateChangedCallback, this, _1, _2, _3));
67 }
68
69
70 void Plugin::activateNetworkLinkCreatedCallback(){
71   surf_callback_connect(networkLinkCreatedCallbacks, boost::bind(&Plugin::networkLinkCreatedCallback, this, _1));
72 }
73
74 void Plugin::activateNetworkLinkDestructedCallback(){
75   surf_callback_connect(networkLinkDestructedCallbacks, boost::bind(&Plugin::networkLinkDestructedCallback, this, _1));
76 }
77
78 void Plugin::activateNetworkLinkStateChangedCallback(){
79   surf_callback_connect(networkLinkStateChangedCallbacks, boost::bind(&Plugin::networkLinkStateChangedCallback, this, _1, _2, _3));
80 }
81
82 void Plugin::activateNetworkActionStateChangedCallback(){
83   surf_callback_connect(networkActionStateChangedCallbacks, boost::bind(&Plugin::networkActionStateChangedCallback, this, _1, _2, _3));
84 }
85
86 void Plugin::activateNetworkCommunicateCallback(){
87   surf_callback_connect(networkCommunicateCallbacks, boost::bind(&Plugin::networkCommunicateCallback, this, _1, _2, _3, _4, _5));
88 }
89
90
91