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