class QRPC::Server::Job
Queue RPC job.
Constants
- DEFAULT_PRIORITY
Indicates default priority. @deprecated (since 0.2.0)
Public Class Methods
new(api, synchronicity, job, protocol = QRPC::default_protocol)
click to toggle source
Constructor.
@param [Object] object which will serve as API @param [Symbol] synchronicity API methods synchronicity @param [Object] job beanstalk job @param [QRPC::Protocol::Abstract] protocol protocol handling instance
# File lib/qrpc/server/job.rb, line 69 def initialize(api, synchronicity, job, protocol = QRPC::default_protocol) @synchronicity = synchronicity @protocol = protocol @job = job @api = api end
Public Instance Methods
client()
click to toggle source
Returns client identifier. @return [String] client identifier
# File lib/qrpc/server/job.rb, line 166 def client self.request.client end
priority()
click to toggle source
Returns job priority according to request.
Default priority is 50. You can scale up and down according to your needs in fact without limits.
@return [Integer] priority level
# File lib/qrpc/server/job.rb, line 150 def priority priority = self.request.priority if priority.nil? priority = QRPC::DEFAULT_PRIORITY else priority = priority.to_i end return priority end
process!()
click to toggle source
Starts processing.
# File lib/qrpc/server/job.rb, line 80 def process! result = nil error = nil request = self.request if not request.notification? finalize = Proc::new do options = { :result => result, :error => error, :request => request } response = @protocol.response::new(options) self.set_deferred_status(:succeeded, response.serialize) end end if @synchronicity == :synchronous begin result = @api.send(request.method, *request.params) rescue ::Exception => e if not request.notification? error = self.generate_error(request, e) end end if not request.notification? finalize.call() end else begin @api.send(request.method, *request.params) do |res| if not request.notification? result = res finalize.call() end end rescue ::Exception => e if not request.notification? error = self.generate_error(request, e) finalize.call() end end end end
request()
click to toggle source
Returns job in request form. @return [QRPC::Protocol::Abstract::Request] request associated to job
# File lib/qrpc/server/job.rb, line 133 def request if @request.nil? @request = @protocol.request::parse(@job) else @request end end
Protected Instance Methods
generate_error(request, exception)
click to toggle source
Generates error from exception.
# File lib/qrpc/server/job.rb, line 177 def generate_error(request, exception) options = { :exception => exception, :request => request } @protocol.error::new(options) end