From 5a4a3fbc945c6768112243b34877bb7549ed8bba Mon Sep 17 00:00:00 2001 From: mehdi Date: Wed, 27 Apr 2011 17:57:33 +0200 Subject: [PATCH] reimplement splay/lua methods --- examples/lua/SimSplay/sim_splay.lua | 44 ++++++++++++++++++++------ examples/lua/SimSplay/splay_school.lua | 8 ++--- 2 files changed, 38 insertions(+), 14 deletions(-) diff --git a/examples/lua/SimSplay/sim_splay.lua b/examples/lua/SimSplay/sim_splay.lua index 401c17dd90..79c8c9d0f5 100644 --- a/examples/lua/SimSplay/sim_splay.lua +++ b/examples/lua/SimSplay/sim_splay.lua @@ -3,14 +3,14 @@ require "simgrid" rpc = {} log = {} job = {} -event = {} +events = {} os = {} start = {} +misc = {} -- Splay global variables job.me ={} job.nodes = {} job.list_type = "random" - --Init nodes tables function init_nodes() for i= 1,simgrid.Host.number() do @@ -22,15 +22,18 @@ 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 @@ -47,6 +50,10 @@ function rpc.call(node,call) arg = "empty" mailbox = node + if type(node) == "table" then + mailbox = node.ip..":"..node.port + end + if type(call) == "table" then func = call[1] arg = call[2] @@ -54,19 +61,30 @@ function rpc.call(node,call) 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); + log:print("Sending Task to mailbox "..mailbox.." to call '"..func.."' with arg '"..arg.."'"); simgrid.Task.iSend(task_call,mailbox); - call_function(func,arg) + end +function rpc.server(port) + -- nothing really to do : no need to open Socket since it's a Simulation +end + + -- event Methods -function event.sleep(time) +function events.sleep(time) my_mailbox = job.me.ip()..":"..job.me.port() - task = simgrid.Task.splay_recv(my_mailbox, time) + tk = simgrid.Task.splay_recv(my_mailbox, time) + + if type(tk) == "table" then + call_function(task['func_call_name'],task['func_call_arg']) + else log:print("task type is :"..type(tk).." it must be table?!"); + end end + -- main func for each process, this is equivalent to the Deploiment file -function event.thread(main_func) +function events.thread(main_func) dofile("platform_script.lua"); init_jobs() end @@ -79,13 +97,19 @@ end -- Start Methods function start.loop() simgrid.run() - simgrid.clean() + --simgrid.clean() end + +-- Misc Methods +function misc.between(a,b) + return a +end + -- useful functions function call_function(fct,arg) _G[fct](arg) end -function SPLAYschool() - simgrid.info("Calling me...") +function SPLAYschool(arg) + simgrid.info("Calling me..."..arg) end diff --git a/examples/lua/SimSplay/splay_school.lua b/examples/lua/SimSplay/splay_school.lua index abaf7c97b3..6be8f726a3 100644 --- a/examples/lua/SimSplay/splay_school.lua +++ b/examples/lua/SimSplay/splay_school.lua @@ -2,9 +2,9 @@ dofile 'sim_splay.lua' function SPLAYschool() log:print("My ip is :" ..job.me.ip()) - event.sleep(5) - rpc.call(job.nodes[3],{"call_me","Helloooooow"}) - event.sleep(5) + events.sleep(5) + rpc.call(job.nodes[3],{"call_me","Arg_test"}) + events.sleep(5) os.exit() end @@ -12,7 +12,7 @@ function call_me(position) log:print("I received an RPC from node "..position); end -event.thread("SPLAYschool") +events.thread("SPLAYschool") start.loop() -- 2.20.1