--- /dev/null
+function getn(t)
+ if type(t.n) == "number" then return t.n end
+ local max=0
+ for i,_ in to do
+ if type(i) == "number" and i>max then max=i end
+ end
+ t.n = max
+ return max
+end
+
+--Master Function
+function master(...)
+
+print("Hello from lua, I'm the master")
+for i,v in ipairs(arg) do
+ print("Got "..v)
+end
+t_tasks={} --tasks table
+t_slaves={} --slaves table
+
+nb_task = arg[1];
+comp_size = arg[2];
+comm_size = arg[3];
+
+-- Let's Create the tasks to dispatch
+for i=1,nb_task do
+ t_tasks[i] = Task.new("Task "..i,comp_size,comm_size); --data set to NULL
+end
+
+
+-- Process Organisation
+
+argc=getn(arg)
+print("Argc="..argc.." (should be 8)")
+
+slave_count = getn(arg) -3;
+
+for i=4,argc do
+slv_name = arg[i];
+t_slaves[i - 3] = Host.new(slv_name);
+-- do not do directly that : t_slaves[i - 4] = Host.new(argv[i]);
+end
+
+
+
+
+-- Print List Of Tasks / Slaves
+--[[
+for i=1,nb_task do
+todo = Task.name(t_tasks[i]);
+print(i % slave_count+1);
+slv = Host.name(t_slaves[i % slave_count+1]);
+print ( "Sending : " .. todo .. " To : " .. slv);
+end
+]]--
+
+
+
+for i=1,nb_task do
+tk_name = Task.name(t_tasks[i]);
+ht_name = Host.name(t_slaves[i]);
+print("Sending " .. tk_name .." To " .. ht_name);
+Task.send(t_task[i],"slave "..(i%slave_count));
+print("Sent");
+end
+
+end
+
+--Slave Function ---------------------------------------------------------
+function slave(...)
+
+my_mailbox="slave "..arg[1]
+print("Hello from lua, I'm a poor slave with mbox: "..my_mailbox)
+
+while true do
+ tk = Task.recv(my_mailbox);
+ print("Got something");
+ --testing res !!!!
+ tk_name = Task.name(tk)
+
+ if (tk_name == "finalize") then
+ Task.destroy(tk);
+ end
+
+ print("Processing "..Task.name(tk))
+ Task.execute(tk);
+
+ print(Task.name(tk) .. "Done")
+ Task.destroy(tk);
+end -- while
+
+print("I'm Done . See You !!");
+
+end -- function ----------------------------------------------------------
+--]]