X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/f87eb709418e56ffc0ec34a0692aae093e381f90..80daf536b469046756c5064f704e5089c85c1d0a:/examples/lua/SimSplay/sim_splay.lua diff --git a/examples/lua/SimSplay/sim_splay.lua b/examples/lua/SimSplay/sim_splay.lua new file mode 100644 index 0000000000..401c17dd90 --- /dev/null +++ b/examples/lua/SimSplay/sim_splay.lua @@ -0,0 +1,91 @@ +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