--- /dev/null
+require "simgrid"
+
+ simgrid.AS.new{id="AS0",mode="Full"};
+
+ simgrid.AS.addHost{AS="AS0",id="Tremblay",power=98095000};
+ simgrid.AS.addHost{AS="AS0",id="Jupiter",power=76296000};
+ simgrid.AS.addHost{AS="AS0",id="Fafard",power=76296000};
+
+ simgrid.Host.setProperty{host="Tremblay",prop_id="ip",prop_value="199.23.98.3"};
+ simgrid.Host.setProperty{host="Tremblay",prop_id="port",prop_value="65"};
+ simgrid.Host.setProperty{host="Jupiter",prop_id="ip",prop_value="199.23.98.4"};
+ simgrid.Host.setProperty{host="Jupiter",prop_id="port",prop_value="83"};
+ simgrid.Host.setProperty{host="Fafard",prop_id="ip",prop_value="199.23.98.5"};
+ simgrid.Host.setProperty{host="Fafard",prop_id="port",prop_value="76"};
+ -- create Links
+ for i=10,0,-1 do
+ simgrid.AS.addLink{AS="AS0",id=i,bandwidth=252750+ i*768,latency=0.000270544+i*0.087};
+ end
+ -- simgrid.Route.new(src_id,des_id,links_nb,links_list)
+ simgrid.AS.addRoute("AS0","Tremblay","Jupiter",{"1"});
+ simgrid.AS.addRoute("AS0","Tremblay","Fafard",{"0","1","2","3","4","8"});
+
+ simgrid.AS.addRoute("AS0","Jupiter","Tremblay",{"1"});
+ simgrid.AS.addRoute("AS0","Jupiter","Fafard",{"0","1","2","3","4","8","9"});
+
+ simgrid.AS.addRoute("AS0","Fafard","Tremblay",{"0","1","2","3","4","8"});
+ simgrid.AS.addRoute("AS0","Fafard","Jupiter",{"0","1","2","3","4","8","9"});
+
+
+ --Save Platform
+ simgrid.msg_register_platform();
+
+ --Set Application
+ simgrid.Host.setFunction{host="Tremblay",fct="SPLAYschool",args=""};
+ simgrid.Host.setFunction{host="Fafard",fct="SPLAYschool",args=""};
+ simgrid.Host.setFunction{host="Jupiter",fct="SPLAYschool",args=""};
+
+ --Save Application
+ simgrid.msg_register_application();
+
+
--- /dev/null
+require "simgrid"
+-- Splay global modules
+rpc = {}
+log = {}
+job = {}
+event = {}
+os = {}
+start = {}
+-- Splay global variables
+job.me ={}
+job.nodes = {}
+job.list_type = "random"
+
+--Init nodes tables
+function init_nodes()
+ for i= 1,simgrid.Host.number() do
+ job.nodes[i] = simgrid.Host.getPropValue(simgrid.Host.at(i),"ip")..":"..simgrid.Host.getPropValue(simgrid.Host.at(i),"port");
+ end
+end
+
+function init_jobs()
+ init_nodes()
+end
+
+-- Job methods
+function job.me.ip()
+ return simgrid.Host.getPropValue(simgrid.Host.self(),"ip");
+end
+
+function job.me.port()
+ return simgrid.Host.getPropValue(simgrid.Host.self(),"port");
+end
+
+function job.position()
+ return simgrid.Host.getPropValue(simgrid.Host.self(),"position");
+end
+
+-- log Methods
+function log:print(msg)
+ simgrid.info(msg);
+end
+
+-- rpc Methods
+function rpc.call(node,call)
+ --init_nodes();
+ func = "empty"
+ arg = "empty"
+ mailbox = node
+
+ if type(call) == "table" then
+ func = call[1]
+ arg = call[2]
+ end
+ task_call = simgrid.Task.new("splay_task",10000,10000);
+ task_call['func_call_name'] = func;
+ task_call['func_call_arg'] = arg;
+ --log:print("Sending Task to mailbox "..mailbox.." to call "..func.." with arg "..arg);
+ simgrid.Task.iSend(task_call,mailbox);
+ call_function(func,arg)
+end
+
+-- event Methods
+function event.sleep(time)
+ my_mailbox = job.me.ip()..":"..job.me.port()
+ task = simgrid.Task.splay_recv(my_mailbox, time)
+end
+
+-- main func for each process, this is equivalent to the Deploiment file
+function event.thread(main_func)
+ dofile("platform_script.lua");
+ init_jobs()
+end
+
+-- OS methods
+function os.exit()
+ simgrid.Host.destroy(simgrid.Host.self());
+end
+
+-- Start Methods
+function start.loop()
+ simgrid.run()
+ simgrid.clean()
+end
+-- useful functions
+function call_function(fct,arg)
+ _G[fct](arg)
+end
+
+function SPLAYschool()
+ simgrid.info("Calling me...")
+end