Class: ParallelServer::Prefork
- Inherits:
-
Object
- Object
- ParallelServer::Prefork
- Defined in:
- lib/parallel_server/prefork.rb
Defined Under Namespace
Classes: Child, Conversation
Constant Summary collapse
- DEFAULT_MIN_PROCESSES =
5- DEFAULT_MAX_PROCESSES =
20- DEFAULT_MAX_THREADS =
1- DEFAULT_STANDBY_THREADS =
5- DEFAULT_MAX_IDLE =
10- DEFAULT_MAX_USE =
1000
Instance Attribute Summary collapse
-
#child_status ⇒ Object
readonly
Returns the value of attribute child_status.
Instance Method Summary collapse
-
#initialize(*args) ⇒ Prefork
constructor
A new instance of Prefork.
- #reload(*args) ⇒ void
- #start {|sock, addr, child| ... } ⇒ void
- #stop ⇒ void
- #stop! ⇒ void
Constructor Details
#initialize(host = nil, port, opts = {}) ⇒ Prefork #initialize(socket, opts = {}) ⇒ Prefork #initialize(sockets, opts = {}) ⇒ Prefork
Returns a new instance of Prefork.
39 40 41 42 43 44 45 46 47 48 |
# File 'lib/parallel_server/prefork.rb', line 39 def initialize(*args) @sockets, @host, @port, @opts = parse_args(*args) set_variables_from_opts @from_child = {} # IO(r) => pid @to_child = {} # IO(r) => IO(w) @child_status = {} # IO(r) => Hash @children = [] # pid @loop = true @sockets_created = false end |
Instance Attribute Details
#child_status ⇒ Object (readonly)
Returns the value of attribute child_status.
13 14 15 |
# File 'lib/parallel_server/prefork.rb', line 13 def child_status @child_status end |
Instance Method Details
#reload(host = nil, port, opts = {}) ⇒ void #reload(socket, opts = {}) ⇒ void #reload(sockets, opts = {}) ⇒ void
This method returns an undefined value.
87 88 89 |
# File 'lib/parallel_server/prefork.rb', line 87 def reload(*args) @reload_args = parse_args(*args) end |
#start {|sock, addr, child| ... } ⇒ void
This method returns an undefined value.
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/parallel_server/prefork.rb', line 55 def start(&block) raise 'block required' unless block @block = block unless @sockets @sockets = Socket.tcp_server_sockets(@host, @port) @sockets.each{|s| s.listen(@listen_backlog)} if @listen_backlog @sockets_created = true end @reload_args = nil while @loop do_reload if @reload_args watch_children adjust_children end ensure @sockets.each{|s| s.close rescue nil} if @sockets && @sockets_created @to_child.values.each{|s| s.close rescue nil} @to_child.clear Timeout.timeout(1){wait_all_children} rescue Thread.new{wait_all_children} end |
#stop ⇒ void
This method returns an undefined value.
92 93 94 |
# File 'lib/parallel_server/prefork.rb', line 92 def stop @loop = false end |
#stop! ⇒ void
This method returns an undefined value.
97 98 99 100 |
# File 'lib/parallel_server/prefork.rb', line 97 def stop! Process.kill 'TERM', *@children rescue nil @loop = false end |