lib/openwfe/expool/journal.rb in ruote-0.9.19 vs lib/openwfe/expool/journal.rb in ruote-0.9.20

- old
+ new

@@ -1,80 +1,66 @@ -# #-- -# Copyright (c) 2007-2008, John Mettraux, OpenWFE.org -# All rights reserved. +# Copyright (c) 2007-2009, John Mettraux, jmettraux@gmail.com # -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: # -# . Redistributions of source code must retain the above copyright notice, this -# list of conditions and the following disclaimer. +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. # -# . 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. +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. # -# . 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 -# POSSIBILITY OF SUCH DAMAGE. +# Made in Japan. #++ -# -# -# "made in Japan" -# -# John Mettraux at openwfe.org -# require 'monitor' require 'fileutils' require 'openwfe/service' require 'openwfe/omixins' require 'openwfe/rudefinitions' require 'openwfe/flowexpressionid' -require 'openwfe/storage/yamlcustom' require 'openwfe/expool/journal_replay' module OpenWFE # # Keeping a replayable track of the events in an OpenWFEru engine # class Journal < Service + include MonitorMixin include OwfeServiceLocator include JournalReplay include FeiMixin attr_reader :workdir, :donedir - FREQ = "1m" + FREQ = '1m' # # once per minute, makes sure the buckets are flushed def initialize (service_name, application_context) - super + super # necessary since we're extending MonitorMixin @buckets = {} - @workdir = get_work_directory + "/journal" - @donedir = @workdir + "/done" + @workdir = get_work_directory + '/journal' + @donedir = @workdir + '/done' FileUtils.makedirs(@donedir) unless File.exist?(@donedir) get_expression_pool.add_observer(:all) do |event, *args| #ldebug { ":#{event} for #{args[0].class.name}" } @@ -181,11 +167,11 @@ args.insert(1, Time.now) args.to_yaml end def get_path (wfid) - @workdir + "/" + wfid.to_s + ".journal" + "#{@workdir}/#{wfid.to_s}.journal" end # # for each process instance, there is one bucket holding the # events waiting to get written in the journal @@ -208,10 +194,10 @@ @events.size end alias :length :size def flush - File.open(@path, "a+") do |f| + File.open(@path, 'a+') do |f| @events.each do |e| f.puts e end end @events.clear