Sha256: 78de066004dd17632043fe662d7e46e94b5cf5d07894d184ae757fe4d4d7ce65

Contents?: true

Size: 1.27 KB

Versions: 8

Compression:

Stored size: 1.27 KB

Contents

require_relative 'ide_server'

module Debugger
  class << self

    def start_for_vim(options)
      return if @control_thread
      daemonize!
      $stdout.reopen(options.output_file, 'w')
      $stdout.sync
      $stderr.reopen($stdout)
      @mutex = Mutex.new
      @proceed = ConditionVariable.new
      start
      File.unlink(options.socket) if File.exist?(options.socket)
      server = UNIXServer.new(options.socket)
      Xml::Vim::Notification.new("establish_connection", options).send
      @control_thread = DebugThread.new do
        begin
          while (session = server.accept)
            interface = Xml::Vim::Interface.new(session, options)
            processor = Xml::Vim::ControlCommandProcessor.new(interface)
            self.handler = Xml::Vim::Processor.new(interface)
            processor.process_commands
          end
        rescue Exception => e
          puts "INTERNAL ERROR!!! #{$!}" rescue nil
          puts $!.backtrace.map{|l| "\t#{l}"}.join("\n") rescue nil
          raise e
        ensure
          server.close
        end
      end
      @mutex.synchronize { @proceed.wait(@mutex) } if wait_for_start
    end

    private

      def daemonize!
        pid = Process.fork
        if pid
          print pid
          exit
        end
      end

  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
debugger-xml-0.1.9 lib/debugger/xml/extensions/vim_server.rb
debugger-xml-0.1.8 lib/debugger/xml/extensions/vim_server.rb
debugger-xml-0.1.7 lib/debugger/xml/extensions/vim_server.rb
debugger-xml-0.1.6 lib/debugger/xml/extensions/vim_server.rb
debugger-xml-0.1.5 lib/debugger/xml/extensions/vim_server.rb
debugger-xml-0.1.4 lib/debugger/xml/extensions/vim_server.rb
debugger-xml-0.1.3 lib/debugger/xml/extensions/vim_server.rb
debugger-xml-0.1.2 lib/debugger/xml/extensions/vim_server.rb