lib/openwfe/util/workqueue.rb in ruote-0.9.18 vs lib/openwfe/util/workqueue.rb in ruote-0.9.19

- old
+ new

@@ -1,34 +1,34 @@ # #-- # Copyright (c) 2007-2008, John Mettraux, OpenWFE.org # All rights reserved. -# -# Redistribution and use in source and binary forms, with or without +# +# Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: -# +# # . Redistributions of source code must retain the above copyright notice, this -# list of conditions and the following disclaimer. -# -# . Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation +# list of conditions and the following disclaimer. +# +# . Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. -# +# # . Neither the name of the "OpenWFE" nor the names of its contributors may be # used to endorse or promote products derived from this software without # specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. #++ # # @@ -41,84 +41,84 @@ require 'openwfe/utils' module OpenWFE - class WorkQueue < Service + class WorkQueue < Service - include OwfeServiceLocator + include OwfeServiceLocator - # - # Inits the WorkQueue - # - def service_init (service_name, application_context) + # + # Inits the WorkQueue + # + def service_init (service_name, application_context) - super + super - @queue = Queue.new + @queue = Queue.new - @stopped = false + @stopped = false - thread_name = "#{service_name} (engine #{get_engine.object_id})" + thread_name = "#{service_name} (engine #{get_engine.object_id})" - OpenWFE::call_in_thread thread_name, self do + OpenWFE::call_in_thread thread_name, self do - loop do + loop do - work = @queue.pop + work = @queue.pop - break if work == :stop + break if work == :stop - target, method_name, args = work + target, method_name, args = work - target.send method_name, *args - end - end + target.send method_name, *args end + end + end - # - # Returns true if there is or there just was activity for the - # work queue. - # - def busy? - - @queue.size > 0 - end + # + # Returns true if there is or there just was activity for the + # work queue. + # + def busy? - # - # Returns the current count of jobs on the workqueue - # - def size + @queue.size > 0 + end - @queue.size - end + # + # Returns the current count of jobs on the workqueue + # + def size - # - # Stops the workqueue. - # - def stop + @queue.size + end - @stopped = true - @queue.push :stop - end + # + # Stops the workqueue. + # + def stop - # - # the method called by the mixer to actually queue the work. - # - def push (target, method_name, *args) + @stopped = true + @queue.push :stop + end - if @stopped + # + # the method called by the mixer to actually queue the work. + # + def push (target, method_name, *args) - target.send method_name, *args - # - # degraded mode : as if there were no workqueue - else + if @stopped - @queue.push [ target, method_name, args ] - # - # work will be done later (millisec order) - # by the work thread - end - end + target.send method_name, *args + # + # degraded mode : as if there were no workqueue + else + + @queue.push [ target, method_name, args ] + # + # work will be done later (millisec order) + # by the work thread + end end + end end