Sha256: 8dd5aaff31318a36da65dc67722b2d2bbfa4fb311e4468228be48d2a286e0a37

Contents?: true

Size: 1.44 KB

Versions: 12

Compression:

Stored size: 1.44 KB

Contents

#!/usr/bin/env ruby
# encoding: UTF-8

$: << File.dirname(__FILE__)

require 'helper'

require 'oj'
require 'securerandom'

class Handler
  def hash_start()      {} end
  def hash_set(h,k,v)   h.store(k,v) end
  def array_start()     [] end
  def array_append(a,v) a << v end
  def error(message, line, column)
    raise Exception.new(message, line, column)
  end
end

json = Oj.dump({"this"=>"object"})

if true
  name = "/tmp/#{SecureRandom.uuid}"
  `mkfifo #{name}`
  if fork
    open(name, 'r+') do |read_io|
      p "start reading #{read_io.stat.ftype}"
      Oj.sc_parse(Handler.new, read_io) {|v| p v}
      p "stop reading"
    end
  else
    open(name, 'w+') do |write_io|
      p "start writing #{write_io.stat.ftype}  autoclose: #{write_io.autoclose?}"
      write_io.write json
      write_io.write json
      p "stop writing"
    end
    sleep(1) # make it obvious that there are two threads
    open(name, 'w+') do |write_io|
      p "start writing #{write_io.stat.ftype}"
      write_io.write json
      write_io.write json
      p "stop writing"
    end
  end
else
  IO.pipe do |read_io, write_io|
    if fork
      write_io.close
      p "start reading #{read_io.stat.ftype}"
      Oj.sc_parse(Handler.new, read_io) {|v| p v}
      p "stop reading"
      read_io.close
    else
      read_io.close
      p "start writing #{write_io.stat.ftype}"
      write_io.write json
      write_io.write json
      p "stop writing"
      write_io.close
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
oj-2.17.4 test/bug.rb
oj-2.16.0 test/bug.rb
oj-2.15.1 test/bug.rb
oj-2.15.0 test/bug.rb
oj-2.12.11 test/bug.rb
oj-2.12.9 test/bug.rb
oj-2.12.6 test/bug.rb
oj-2.12.1 test/bug.rb
oj-2.11.5 test/bug.rb
oj-2.11.4 test/bug.rb
oj-2.10.4 test/bug.rb
oj-2.9.9 test/bug.rb