Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
First version of ruby bindings by Medhi
[simgrid.git] / src / bindings / ruby / Master.rb
diff --git a/src/bindings/ruby/Master.rb b/src/bindings/ruby/Master.rb
new file mode 100644 (file)
index 0000000..f96c5b2
--- /dev/null
@@ -0,0 +1,63 @@
+require 'msg'
+require 'RubyProcess'
+
+include MSG
+
+class Master < RbProcess
+  
+  
+
+  
+  def initialize(*args)
+    
+    super()
+    channel = 0
+    puts "Hey ..from Master"#info("Hey")
+    
+   slaves = Array.new()
+   
+   size = args.size
+   
+   puts "Args = " + size
+   
+   for i in 0..size-1
+     puts "argv :" + args[1]
+   end
+   
+   raise "Master needs 3 arguments" if size < 3
+   
+   numberOfTask = args[0] #convert to int
+   taskComputeSize = args[1] #convert to double
+   taskCommunicationSize = args[2] #convert to double
+   slaveCount = args[3] #convert to int
+   
+   
+#    todo = Array.new(numberOfTask)
+   
+   #Creating & Sending Task
+   for i in 0..numberOfTask 
+     
+     task = RbTask.new("Task_" + i.to_s, taskComputeSize , taskCommunicationSize );
+     s_alias = "slave " + (i%slaveCount).to_s
+     puts "Master Sending "+ RbTask.name(task) + " to " + s_alias
+     RbTask.send(task,s_alias)
+     puts "Master Done Sending " +RbTask.name(task) + " to " + s_alias
+     
+   end
+  
+   # Sending Finalize Tasks
+   puts "Master: All tasks have been dispatched. Let's tell everybody the computation is over."
+   for i in 0..slaveCount-1
+     s_alias = "slave " + i.to_s
+     puts "Master Sending Finalize to " + s_alias
+     RbTask.send(RbTask.new("finalize",0,0),s_alias)
+   end
+     
+   puts "Master : Everything's Done"
+   
+  end
+  
+end
+
+