in lib/pygments/popen.rb [210:262]
def mentos(method, args=[], kwargs={}, original_code=nil)
start unless alive?
begin
timeout_time = 8
Timeout::timeout(timeout_time) do
id = (0...8).map{65.+(rand(25)).chr}.join
code = add_ids(original_code, id) if original_code
if code
bytesize = code.bytesize
else
bytesize = 0
end
kwargs.freeze
kwargs = kwargs.merge("fd" => @out.to_i, "id" => id, "bytes" => bytesize)
out_header = Yajl.dump(:method => method, :args => args, :kwargs => kwargs)
bits = get_fixed_bits_from_header(out_header)
@in.write(bits)
write_data(out_header, code)
header = get_header
res = handle_header_and_return(header, id)
return_result(res, method)
end
rescue Timeout::Error
@log.error "[#{Time.now.iso8601}] Timeout on a mentos #{method} call"
stop "Timeout on mentos #{method} call."
end
rescue Errno::EPIPE, EOFError
stop "EPIPE"
raise MentosError, "EPIPE"
end