--- /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