class QRPC::Client::Job
Queue RPC client job. @since 0.2.0
Public Class Methods
Constructor.
@param [Symbol] client_id client (session) ID @param [Symbol] method job method name @param [Array] arguments array of arguments for job @param [Integer] priority job priority @param [QRPC::Generator] ID generator @param [QRPC::Protocol::Abstract] protocol protocol instance @param [Proc] callback result callback
# File lib/qrpc/client/job.rb, line 99 def initialize(client_id, method, arguments = [ ], priority = QRPC::DEFAULT_PRIORITY, generator = QRPC::default_generator, protocol = QRPC::default_protocol, &callback) @client_id = client_id @method = method @arguments = arguments @callback = callback @priority = priority @protocol = protocol @generator = generator end
Public Instance Methods
Assigns job result and subsequently calls callback. @param [QRPC::Protocol::Abstract::Response] result of the call
# File lib/qrpc/client/job.rb, line 170 def assign_result(result) if not result.error? @result = result.result else exception = result.error raise exception end if not @callback.nil? @callback.call(@result) end end
Returns job ID. @return [Symbol] job ID
# File lib/qrpc/client/job.rb, line 114 def id if @id.nil? @id = @generator.generate(self) else @id end end
Indicates message is notification. So callback isn’t set and it doesn’t expect any result.
@return [Boolean] true
if it’s, false
in otherwise
# File lib/qrpc/client/job.rb, line 161 def notification? @callback.nil? end
Serializes job using serializer.
@return [Object] serialized object @since 0.4.0
# File lib/qrpc/client/job.rb, line 141 def serialize options = { :client_id => @client_id, :id => @id, :method => @method, :arguments => @arguments, :priority => @priority, :notification => self.notification? } @protocol.request::new(options).serialize end
Converts job to JSON.
@return [String] job in JSON form (JSON-RPC) @deprecated (since 0.4.0) Use #serialize
. @see serialize
# File lib/qrpc/client/job.rb, line 130 def to_json JsonRpc::Request::create(@client_id, @id, @method, @arguments, @priority).to_json end