Debugger

Attributes

control_thread[RW]
wait_for_start[RW]

Public Class Methods

proceed() click to toggle source
# File lib/debugger/xml/extensions/ide_server.rb, line 27
def proceed
  return unless @mutex
  @mutex.synchronize { @proceed.signal }
end
start_for_vim(options) click to toggle source
# File lib/debugger/xml/extensions/vim_server.rb, line 6
def start_for_vim(options)
  return if @control_thread
  Xml.logger.puts("Going to daemonize");
  daemonize!
  Xml.logger.puts("Successfully daemonized");
  $stdout.reopen(options.output_file, 'w')
  $stdout.sync
  $stderr.reopen($stdout)
  Xml.logger.puts("Redirected stderr");
  @mutex = Mutex.new
  @proceed = ConditionVariable.new
  start
  Xml.logger.puts("Started debugger");
  File.unlink(options.socket) if File.exist?(options.socket)
  server = UNIXServer.new(options.socket)
  Xml::Vim::Notification.new("establish_connection", options).send
  Xml.logger.puts("Sent 'established_connection' command");
  @control_thread = DebugThread.new do
    begin
      while (session = server.accept)
        Xml.logger.puts("Accepted connection");
        interface = Xml::Vim::Interface.new(session, options)
        processor = Xml::Vim::ControlCommandProcessor.new(interface)
        self.handler = Xml::Vim::Processor.new(interface)
        Xml.logger.puts("Going to process commands");
        processor.process_commands
      end
    rescue Exception => e
      Xml.logger.puts("INTERNAL ERROR!!! #{$!}") rescue nil
      Xml.logger.puts($!.backtrace.map{|l| "\t#{l}"}.join("\n")) rescue nil
      raise e
    ensure
      Xml.logger.puts("Closing server");
      server.close
    end
  end
  @mutex.synchronize { @proceed.wait(@mutex) } if wait_for_start
end
start_remote_ide(host, port) click to toggle source
# File lib/debugger/xml/extensions/ide_server.rb, line 5
def start_remote_ide(host, port)
  return if @control_thread
  @mutex = Mutex.new
  @proceed = ConditionVariable.new
  start
  @control_thread = DebugThread.new do
    server = TCPServer.new(host, port)
    $stderr.printf "Fast Debugger (debugger-xml #{Xml::VERSION}) listens on #{host}:#{port}\n"
    while (session = server.accept)
      dispatcher = ENV['IDE_PROCESS_DISPATCHER']
      if dispatcher && !dispatcher.include?(":")
        ENV['IDE_PROCESS_DISPATCHER'] = "#{session.peeraddr[2]}:#{dispatcher}"
      end
      interface = Xml::Ide::Interface.new(session)
      processor = Xml::Ide::ControlCommandProcessor.new(interface)
      self.handler = Xml::Ide::Processor.new(interface)
      processor.process_commands
    end
  end
  @mutex.synchronize { @proceed.wait(@mutex) } if wait_for_start
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.