Signalhandler mit Puffer.

master
Denis Knauf 2010-03-07 19:30:33 +01:00
parent c20b420d4a
commit aa47581eb9
3 changed files with 9 additions and 4 deletions

View File

@ -1 +1 @@
0.0.0 0.0.0.1

View File

@ -52,6 +52,8 @@ class Retries
end end
class RobustServer class RobustServer
attr_reader :signals
def self.main *argv def self.main *argv
self.new( *argv).main self.new( *argv).main
end end
@ -62,6 +64,7 @@ class RobustServer
Signal[:INT] => sh, Signal[:HUP] => nil, Signal[:TERM] => sh, Signal[:INT] => sh, Signal[:HUP] => nil, Signal[:TERM] => sh,
Signal[:KILL] => sh, Signal[:USR1] => nil, Signal[:USR2] => nil Signal[:KILL] => sh, Signal[:USR1] => nil, Signal[:USR2] => nil
} }
@signals = []
end end
def trapping def trapping
@ -69,7 +72,8 @@ class RobustServer
end end
def signal_handler s def signal_handler s
@signal = s s = s
@signals.push s unless @signals.include? s
end end
def main max = nil, range = nil def main max = nil, range = nil
@ -85,6 +89,7 @@ class RobustServer
retry if retries.retry? retry if retries.retry?
$stderr.print "Zuviele Fehler in zu kurzer Zeit. Ich gebe auf und " $stderr.print "Zuviele Fehler in zu kurzer Zeit. Ich gebe auf und "
end end
$stderr.puts "Unbeachtete Signale: #{@signals.map(&Signal.method(:[])).join( ', ')}"
trapping trapping
$stderr.puts "Beende mich selbst." $stderr.puts "Beende mich selbst."
end end

View File

@ -5,11 +5,11 @@
Gem::Specification.new do |s| Gem::Specification.new do |s|
s.name = %q{robustserver} s.name = %q{robustserver}
s.version = "0.0.0" s.version = "0.0.0.1"
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version= s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
s.authors = ["Denis Knauf"] s.authors = ["Denis Knauf"]
s.date = %q{2010-03-02} s.date = %q{2010-03-07}
s.description = %q{Protects your Server against SIGS and unplaned exceptions} s.description = %q{Protects your Server against SIGS and unplaned exceptions}
s.email = %q{Denis.Knauf@gmail.com} s.email = %q{Denis.Knauf@gmail.com}
s.extra_rdoc_files = [ s.extra_rdoc_files = [