Sha256: e2c82b0442599b2f369d01c73a8b81bc4c9ca62b3d0ecc3421b2ec9345a723ab

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], res[3]
      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.3 lib/culerity/remote_object_proxy.rb
langalex-culerity-0.1.4 lib/culerity/remote_object_proxy.rb