From dbed4e41d99ce199008bc915d0d44ccd2b7f9308 Mon Sep 17 00:00:00 2001 From: martinahansen Date: Sat, 26 Jun 2010 09:47:45 +0000 Subject: [PATCH] corrected typo git-svn-id: http://biopieces.googlecode.com/svn/trunk@995 74ccb610-7750-0410-82ae-013aeee3265d --- LICENCE => LICENSE | 0 code_ruby/Maasha/lib/biopieces.rb | 100 +++++++++++++++++++++++------- 2 files changed, 77 insertions(+), 23 deletions(-) rename LICENCE => LICENSE (100%) diff --git a/LICENCE b/LICENSE similarity index 100% rename from LICENCE rename to LICENSE diff --git a/code_ruby/Maasha/lib/biopieces.rb b/code_ruby/Maasha/lib/biopieces.rb index 46fb26b..1dfb9fb 100644 --- a/code_ruby/Maasha/lib/biopieces.rb +++ b/code_ruby/Maasha/lib/biopieces.rb @@ -22,6 +22,7 @@ class Biopieces @output = output @status = Status.new @status.set unless @test + #prime_teardown end # Check the integrity of a list of casts, followed by parsion options from argv @@ -81,35 +82,39 @@ class Biopieces path end - def do_at_exit - @in.close if @in.respond_to? :close - @out.close if @out.respond_to? :close - + def prime_teardown exit_status = "OK" - rescue SignalException => exception - if exception.class.to_s.upcase =~ /INT/ - exit_status = "INTERRUPTED" - elsif exception.to_s.upcase =~ /TERM/ - exit_status = "TERMINATED" - elsif exception.to_s.upcase =~ /QUIT/ - exit_status = "QUIT" + # Install signal handlers + %w( INT TERM QUIT ).each do |signal| + Signal.trap(signal) do + exit_status = signal + exit + end end - rescue Exception => exception - exit_status = "DIED" - - $stderr.puts exception - $stderr.puts exception.backtrace + at_exit do + begin + @in.close if @in.respond_to? :close + @out.close if @out.respond_to? :close - ensure - status = Status.new - FileUtils.remove_entry_secure(status.get_tmpdir) - status.log(exit_status) - status.delete + rescue Exception => exception + case exit_status + when 'INT' then exit_status = 'INTERRUPTED' + when 'TERM' then exit_status = 'TERMINATED' + end + exit_status = "DIED" unless exit_status =~ /INT|TERM|QUIT/ + $stderr.puts exit_status + $stderr.puts exception.backtrace + + ensure + status = Status.new + FileUtils.remove_entry_secure(status.get_tmpdir) + status.log(exit_status) + status.delete + end + end end - - at_exit {do_at_exit} end @@ -614,4 +619,53 @@ class Stream < IO end +# Stuff to be done at begin such as setting the exit status +# and signal handlers +def do_at_begin + status = Status.new + status.set + exit_status = "OK" + + # Install signal handlers + %w( INT TERM QUIT ).each do |signal| + Signal.trap(signal) do + exit_status = signal + exit + end + end + + exit_status +end + +# Make sure that file streams are closed, tmpdir removed, and +# exit status is written to log file. +def do_at_exit(exit_status) + at_exit do + begin + @in.close if @in.respond_to? :close + @out.close if @out.respond_to? :close + rescue Exception => exception + $stderr.puts "Exception caught!" # DEBUG + case exit_status + when 'INT' then exit_status = 'INTERRUPTED' + when 'TERM' then exit_status = 'TERMINATED' + end + exit_status = "DIED" unless exit_status =~ /INT|TERM|QUIT/ + $stderr.puts exit_status + $stderr.puts exception.backtrace + + ensure + status = Status.new + FileUtils.remove_entry_secure(status.get_tmpdir) + status.log(exit_status) + status.delete + puts "EXIT STATUS: #{exit_status}" + end + end +end + +exit_status = do_at_begin +do_at_exit(exit_status) + + __END__ -- 2.39.2