class OskieRpc::Request
Attributes
command[RW]
params[RW]
timeout[RW]
Public Class Methods
new(command = '', params = {})
click to toggle source
# File lib/oskie_rpc/request.rb, line 7 def initialize(command = '', params = {}) @command = command @params = params @timeout = 60 @message_id = SecureRandom.uuid @callbacks = {} @state = :initialized end
Public Instance Methods
<=>(request)
click to toggle source
# File lib/oskie_rpc/request.rb, line 16 def <=>(request) timeout_at <=> request.timeout_at end
__request_received(processor)
click to toggle source
# File lib/oskie_rpc/request.rb, line 81 def __request_received(processor) @state = :received @processor = processor end
__request_sent()
click to toggle source
Private API for use by Processor
only.
# File lib/oskie_rpc/request.rb, line 76 def __request_sent @state = :sent @sent_at = Time.now.utc end
__response_failed()
click to toggle source
# File lib/oskie_rpc/request.rb, line 91 def __response_failed @state = :failed @callbacks[:failure].call if @callbacks[:failure] end
__response_received(response)
click to toggle source
# File lib/oskie_rpc/request.rb, line 86 def __response_received(response) @state = :responded @callbacks[:response].call(response) if @callbacks[:response] end
dump()
click to toggle source
# File lib/oskie_rpc/request.rb, line 30 def dump validate! { 'type' => 'rpcRequest', 'request' => { 'command' => @command, 'params' => @params, 'messageId' => @message_id } } end
load(payload)
click to toggle source
# File lib/oskie_rpc/request.rb, line 20 def load(payload) @command = payload['request']['command'] @params = payload['request']['params'] @message_id = payload['request']['messageId'] validate! self end
on(name, &block)
click to toggle source
# File lib/oskie_rpc/request.rb, line 43 def on(name, &block) @callbacks[name.to_sym] = block end
respond() { || ... }
click to toggle source
# File lib/oskie_rpc/request.rb, line 55 def respond raise InvalidStateError unless @state == :received response = Response.new(message_id) response.result = yield @processor.deliver(response) nil end
timed_out?()
click to toggle source
# File lib/oskie_rpc/request.rb, line 47 def timed_out? Time.now.utc > timeout_at end
timeout_at()
click to toggle source
# File lib/oskie_rpc/request.rb, line 51 def timeout_at @sent_at + timeout end
validate!()
click to toggle source
# File lib/oskie_rpc/request.rb, line 64 def validate! @command.is_a?(String) || raise(ValidationError, "Command is not a string.") @params.is_a?(Hash) || raise(ValidationError, "Params is not a hash.") @message_id.is_a?(String) || raise(ValidationError, "Message ID is not a string.") nil end