Class: ParallelServer::Prefork::Child

Inherits:
Object
  • Object
show all
Defined in:
lib/parallel_server/prefork.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(sockets, opts, to_parent, from_parent) ⇒ Child

Returns a new instance of Child.

Parameters:

  • sockets (Array<Socket>)
  • opts (Hash)
  • to_parent (IO)
  • from_parent (IO)


353
354
355
356
357
358
359
360
361
362
363
# File 'lib/parallel_server/prefork.rb', line 353

def initialize(sockets, opts, to_parent, from_parent)
  @sockets = sockets
  @options = opts
  @to_parent = to_parent
  @from_parent = from_parent
  @threads = {}
  @threads_mutex = Mutex.new
  @threads_cv = ConditionVariable.new
  @parent_mutex = Mutex.new
  @status = :run
end

Instance Attribute Details

#optionsObject (readonly)

Returns the value of attribute options.



347
348
349
# File 'lib/parallel_server/prefork.rb', line 347

def options
  @options
end

Instance Method Details

#max_idleInteger

Returns:

  • (Integer)


371
372
373
# File 'lib/parallel_server/prefork.rb', line 371

def max_idle
  @options[:max_idle] || DEFAULT_MAX_IDLE
end

#max_threadsInteger

Returns:

  • (Integer)


366
367
368
# File 'lib/parallel_server/prefork.rb', line 366

def max_threads
  @options[:max_threads] || DEFAULT_MAX_THREADS
end

#max_useInteger

Returns:

  • (Integer)


376
377
378
# File 'lib/parallel_server/prefork.rb', line 376

def max_use
  @options[:max_use] || DEFAULT_MAX_USE
end

#start(block) ⇒ void

This method returns an undefined value.

Parameters:

  • block (#call)


382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
# File 'lib/parallel_server/prefork.rb', line 382

def start(block)
  queue = Queue.new
  accept_thread = Thread.new{ accept_loop(block, queue) }
  reload_thread = Thread.new{ reload_loop(queue) }

  # wait that accept_loop or reload_loop end
  queue.pop

  accept_thread.exit
  @sockets.each{|s| s.close rescue nil}
  @threads_mutex.synchronize do
    notify_status
  end
  wait_all_connections
  reload_thread.exit
end