Class: Knjappserver::Leakproxy_server
- Inherits:
-
Object
- Object
- Knjappserver::Leakproxy_server
- Defined in:
- lib/include/class_knjappserver_leakproxy_server.rb
Overview
This class starts a Knjappserver in another process. This process can be used for scripts that leak memory. The memoy-usage is looked over and the process restarted when it reaches a certain point. Doing the restart all waiting requests will wait gracefully.
Instance Method Summary collapse
-
#initialize(args) ⇒ Leakproxy_server
constructor
A new instance of Leakproxy_server.
- #spawn ⇒ Object
Constructor Details
#initialize(args) ⇒ Leakproxy_server
Returns a new instance of Leakproxy_server.
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/include/class_knjappserver_leakproxy_server.rb', line 4 def initialize(args) require "#{$knjpath}/process" leakproxy_path = "#{File.dirname(__FILE__)}/../scripts/leakproxy.rb" executable = Knj::Os.executed_executable @stdin, @stdout, @stderr, @wait_thr = Open3.popen3(executable, leakproxy_path, "r+") @kas = args[:kas] @config = @kas.config Thread.new do STDOUT.print "Doing loop:\n" @stderr.each_line do |str| STDOUT.print "Test: #{str}" end end pass_conf = {} pass_conf_keys = [:knjrbfw_path] pass_conf_keys.each do |key, val| pass_conf[key] = val if @config.key?(key) end args_pass = { :config => pass_conf } @stdin.write("#{Marshal.dump(args_pass)}\n") @process = Knj::Process.new( :out => @stdin, :in => @stdout, :err => @stderr, :listen => true, :debug => true, :on_rec => proc{|d| obj = d.obj if obj.is_a?(Hash) if obj["type"] == "print" STDOUT.print obj["str"] end else STDOUT.print Php4r.print_r(obj, true) end } ) end |
Instance Method Details
#spawn ⇒ Object
53 54 55 |
# File 'lib/include/class_knjappserver_leakproxy_server.rb', line 53 def spawn end |