From 39a6460cb479dcd8bef5c52733c70e64cba9e932 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20S=2E=20Montero?= Date: Fri, 30 Jan 2009 20:58:20 +0000 Subject: [PATCH] OpenNebulaDriver now is an ActionManager git-svn-id: http://svn.opennebula.org/one/trunk@336 3034c82b-c49b-4eb3-8279-a7acafdc01c0 --- src/mad/ruby/ActionManager.rb | 20 +++++++++----------- src/mad/ruby/OpenNebulaDriver.rb | 15 ++++++--------- 2 files changed, 15 insertions(+), 20 deletions(-) diff --git a/src/mad/ruby/ActionManager.rb b/src/mad/ruby/ActionManager.rb index 92b2e546b6..c2b3c69630 100644 --- a/src/mad/ruby/ActionManager.rb +++ b/src/mad/ruby/ActionManager.rb @@ -46,7 +46,7 @@ class Sample end end - + s = Sample.new s.@am.start_listener @@ -96,11 +96,11 @@ class ActionManager # +aname+ name of the action # +aargs+ arguments to call the action def trigger_action(aname,*aargs) - + return if @finalize - + @threads_mutex.synchronize { - + if aname == "FINALIZE" @finalize = true @threads_cond.signal if @running_actions == 0 @@ -129,10 +129,10 @@ class ActionManager while ((@concurrency - @running_actions)==0) || @action_queue.size==0 @threads_cond.wait(@threads_mutex) - - return if ( @finalize && @running_actions == 0) + + return if (@finalize && @running_actions == 0) end - + run_action } end @@ -162,7 +162,6 @@ private end end end - end if __FILE__ == $0 @@ -187,7 +186,6 @@ if __FILE__ == $0 def nop_action p " - Just an action" end - end s = Sample.new @@ -200,11 +198,11 @@ if __FILE__ == $0 } s.am.trigger_action("FINALIZE") - + s.am.trigger_action("SLEEP",rand(3)+1,999) s.am.trigger_action("SLEEP",rand(3)+1,333) } - + s.am.start_listener end diff --git a/src/mad/ruby/OpenNebulaDriver.rb b/src/mad/ruby/OpenNebulaDriver.rb index 22d164b16f..73a5195c86 100644 --- a/src/mad/ruby/OpenNebulaDriver.rb +++ b/src/mad/ruby/OpenNebulaDriver.rb @@ -28,11 +28,10 @@ require "ActionManager" # for each action it wants to receive. The method must be associated # with the action name through the register_action func -class OpenNebulaDriver +class OpenNebulaDriver < ActionManager def initialize(concurrency=10, threaded=true) + super(concurrency,threaded) @send_mutex=Mutex.new - - @am = ActionManager.new(concurrency,threaded) end def send_message(*args) @@ -53,9 +52,7 @@ class OpenNebulaDriver def start_driver loop_thread = Thread.new { loop } - - @am.start_listener - + start_listener loop_thread.kill! end @@ -73,7 +70,7 @@ private action = args.shift.upcase - @am.trigger_action(action,*args) + trigger_action(action,*args) end end end @@ -82,9 +79,9 @@ if __FILE__ == $0 class SampleDriver < OpenNebulaDriver def initialize - super(5,true) + super(15,true) - @am.register_action("SLEEP",method("my_sleep")) + register_action("SLEEP",method("my_sleep")) end def response(action,result,info)