Sha256: 0ad7a1e504c96b1f80968fc9a26003e401d28f390093d288e3b0f18e41be6712

Contents?: true

Size: 667 Bytes

Versions: 2

Compression:

Stored size: 667 Bytes

Contents

module Culerity

  class RemoteObjectProxy
    def initialize(remote_object_id, io)
      @remote_object_id = remote_object_id
      @io = io
    end
    
    def method_missing(name, *args)
      @io << "[#{remote_object_id}, \"#{name}\", #{args.map{|a| a.inspect}.join(', ')}]\n"
      process_result @io.gets.to_s.strip
    end
    
    def exit
      @io << '["_exit_"]'
    end
    
    private
    
    def process_result(result)
      res = eval result
      if res.first == :return
        res[1]
      elsif res.first == :exception
        raise "#{res[1]}: #{res[2]}"
      end
    end
    
    def remote_object_id
      @remote_object_id
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
langalex-culerity-0.1.1 lib/culerity/remote_object_proxy.rb
langalex-culerity-0.1.2 lib/culerity/remote_object_proxy.rb