def start_messengers(num_of_messengers, socket_queue, document, logger, factory, restart_signal=nil)
messenger_list = Array.new
num_of_messengers.times do
messenger = factory.new(document, logger)
messenger.timeout = self.timeout
messenger.keep_alive = self.keep_alive
messenger.max_requests = self.max_requests
messenger.open(self)
messenger_list.push(messenger)
end
messenger_thgrp = ThreadGroup.new
if (restart_signal) then
thread = Thread.new{
restart_signal.wait
}
messenger_thgrp.add(thread)
end
messenger_list.each do |messenger|
thread = Thread.new{
logger.debug("[#{Time.now.httpdate}] start #{factory} thread.")
begin
messenger.accept(socket_queue)
rescue StandardError, ScriptError
logger.warning("[#{Time.now.httpdate}] aborted #{factory} thread: #{$!.message} (#{$!.class}): #{$!.backtrace[0]}")
ensure
logger.debug("[#{Time.now.httpdate}] stop #{factory} thread.")
end
}
messenger_thgrp.add(thread)
end
messenger_thgrp
end