def main_loop
@receiver_thread = start_receiver_thread
loop do
begin
case @state
when :stopping
Log.debug("Stopping MCollective server")
if @config.soft_shutdown
soft_shutdown
end
stop_threads
@state = :stopped
return
when :pausing
Log.debug("Pausing MCollective server")
stop_threads
@state = :paused
when :unpausing
Log.debug("Unpausing MCollective server")
start_receiver_thread
end
@agent_threads.reject! { |t| !t.alive? }
sleep 0.1
rescue SignalException => e
Log.info("Exiting after signal: #{e}")
stop
rescue => e
Log.error("A failure occurred in the MCollective runner.")
Log.error(e)
Log.error(e.backtrace.join("\n\t"))
stop
end
end
end