Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Stuks When a process ( Slave ) Tries to Recieve a Task...
[simgrid.git] / src / bindings / ruby / Master.rb
index f96c5b2..eafe15d 100644 (file)
@@ -3,61 +3,54 @@ require 'RubyProcess'
 
 include MSG
 
-class Master < RbProcess
+class Master < RbProcess  
+  def initialize2()
+    super()
+  end
   
+  #for Testing
+  def msg_main2(args)
+   info("Hello From Master")
+  end
   
-
   
-  def initialize(*args)
-    
-    super()
-    channel = 0
-    puts "Hey ..from Master"#info("Hey")
-    
-   slaves = Array.new()
-   
-   size = args.size
-   
-   puts "Args = " + size
-   
+  # msg_main : that function that will be executed when Running Simulation
+  def msg_main(args) # args is an array Containin' arguments for function master
+    info("Hello From Master")
+    size = args.size
+    info ("Number of Args for Master = " + size.to_s)
    for i in 0..size-1
-     puts "argv :" + args[1]
+      info(args[i])
    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)
+   raise "Master needs 3 arguments" if size < 3 
+   numberOfTask = Integer(args[0]) 
+   taskComputeSize = Float(args[1])
+   taskCommunicationSize = Float(args[2])
+   slaveCount = Integer(args[3]) 
    
    #Creating & Sending Task
-   for i in 0..numberOfTask 
+   for i in 0..numberOfTask-1
+  
      
-     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
+     task = RbTask.new("Task_"+ i.to_s, taskComputeSize , taskCommunicationSize );
+     s_alias = "slave>>" + (i%slaveCount).to_s
+     info("Master Sending "+ RbTask.name(task) + " to " + s_alias + " with Comput Size " + RbTask.compSize(task).to_s)
      RbTask.send(task,s_alias)
-     puts "Master Done Sending " +RbTask.name(task) + " to " + s_alias
-     
+     info("Master Done Sending " +RbTask.name(task) + " to " + s_alias)
+#       sameTask = RbTask.receive(s_alias)
+#      puts "Master Receiving its Own Task"
    end
   
    # Sending Finalize Tasks
-   puts "Master: All tasks have been dispatched. Let's tell everybody the computation is over."
+   info ("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
+     info ("Master Sending Finalize to " + s_alias)
      RbTask.send(RbTask.new("finalize",0,0),s_alias)
    end
-     
-   puts "Master : Everything's Done"
-   
-  end
+   info("Master : Everything's Done")
+  end  
   
-end
-
-
+end
\ No newline at end of file