Module: EM::RemoteCall::Server

Includes:
JsonConnection::Server
Defined in:
lib/em_remote_call/server.rb

Instance Method Summary collapse

Instance Method Details

#json_parsed(hash) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/em_remote_call/server.rb', line 40

def json_parsed(hash)
  remote_call = EM::RemoteCall::Call.new hash[:instance], hash[:method].to_sym, hash[:arguments]
  puts "On Server: #{remote_call}: #{hash}" if hash[:debug]
  
  if remote_call.takes_block?
    remote_call.call{ |result| send_data :deferrable_id => hash[:deferrable_id], :method_type => :block, :success => result }
    return
  end
  
  ret = remote_call.call
  if ret.is_a? EM::Deferrable
    ret.callback{ |result| send_data :deferrable_id => hash[:deferrable_id], :debug => hash[:debug], :method_type => :deferrable, :success => result }
    ret.errback { |result| send_data :deferrable_id => hash[:deferrable_id], :debug => hash[:debug], :method_type => :deferrable, :error => result }
  else
    send_data :deferrable_id => hash[:deferrable_id], :success => ret, :method_type => :returned, :debug => hash[:debug]
  end
  
rescue => e
  puts "#{e}: #{e.message}"
  send_data :deferrable_id => hash[:deferrable_id], :error => {:class => e.class.name, :message => e.message}, :method_type => :rescue, :debug => hash[:debug]
end