class RedisRPC::Server
Public Class Methods
new(redis_server, message_queue, local_object)
click to toggle source
# File lib/redisrpc.rb, line 96 def initialize(redis_server, message_queue, local_object) @redis_server = redis_server @message_queue = message_queue @local_object = local_object end
Public Instance Methods
flush_queue!()
click to toggle source
# File lib/redisrpc.rb, line 131 def flush_queue! @redis_server.del @message_queue end
run()
click to toggle source
# File lib/redisrpc.rb, line 102 def run loop do message_queue, message = @redis_server.blpop @message_queue, 0 if $DEBUG fail 'assertion failed' if message_queue != @message_queue $stderr.puts 'RPC Request: ' + message end rpc_request = MultiJson.load message response_queue = rpc_request['response_queue'] function_call = FunctionCall.new(rpc_request['function_call']) begin return_value = @local_object.send( function_call.method, *function_call.args ) rpc_response = {'return_value' => return_value} rescue => err rpc_response = {'exception' => err} end message = MultiJson.dump rpc_response if $DEBUG $stderr.puts 'RPC Response: ' + message end @redis_server.rpush response_queue, message end end
run!()
click to toggle source
# File lib/redisrpc.rb, line 126 def run! flush_queue! run end