module Asciidoctor::Diagram::OfficeServer
@private
Public Class Methods
is_port_open?()
click to toggle source
# File lib/asciidoctor-diagram-office/extension.rb, line 28 def self.is_port_open?() begin Timeout::timeout(10) do begin s = TCPSocket.open('localhost', 2002) s.close return true rescue sleep(1) retry end end rescue Timeout::Error raise 'Failed to start office listener' end end
listen()
click to toggle source
# File lib/asciidoctor-diagram-office/extension.rb, line 12 def self.listen unless defined?(@office_listener) && @office_listener pid = spawn('unoconv --listener > /dev/null 2>&1') thr = Process.detach(pid) is_port_open? at_exit do begin Process.kill(:TERM, pid) rescue => e end end @office_listener = true end end