class DEBUGGER__::UI_ServerBase
def activate session, on_fork: false
def activate session, on_fork: false @session = session @reader_thread = Thread.new do # An error on this thread should break the system. Thread.current.abort_on_exception = true Thread.current.name = 'DEBUGGER__::Server::reader' accept do |server, already_connected: false| DEBUGGER__.warn "Connected." greeting_done = false @need_pause_at_first = true @accept_m.synchronize{ @sock = server greeting greeting_done = true @accept_cv.signal # flush unsent messages @unsent_messages.each{|m| @sock.puts m } if @repl @unsent_messages.clear @q_msg = Queue.new @q_ans = Queue.new } unless already_connected setup_interrupt do pause if !already_connected && @need_pause_at_first process end rescue GreetingError => e DEBUGGER__.warn "GreetingError: #{e.message}" next rescue Terminate raise # should catch at outer scope rescue RetryConnection next rescue => e DEBUGGER__.warn "ReaderThreadError: #{e}" pp e.backtrace ensure DEBUGGER__.warn "Disconnected." cleanup_reader if greeting_done end # accept rescue Terminate # ignore end end