class QRPC::Client::Job

Queue RPC client job. @since 0.2.0

Public Class Methods

new(client_id, method, arguments = [ ], priority = QRPC::DEFAULT_PRIORITY, generator = QRPC::default_generator, protocol = QRPC::default_protocol, &callback) click to toggle source

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

assign_result(result) click to toggle source

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
id() click to toggle source

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
notification?() click to toggle source

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
serialize() click to toggle source

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
to_json() click to toggle source

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