Class: QBWC::Job
- Inherits:
-
Object
- Object
- QBWC::Job
- Defined in:
- lib/qbwc/job.rb
Direct Known Subclasses
Instance Attribute Summary collapse
-
#company ⇒ Object
readonly
Returns the value of attribute company.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#worker_class ⇒ Object
readonly
Returns the value of attribute worker_class.
Instance Method Summary collapse
- #advance_next_request(session) ⇒ Object
- #data ⇒ Object
- #data=(d) ⇒ Object
- #disable ⇒ Object
- #enable ⇒ Object
- #enabled? ⇒ Boolean
-
#initialize(name, enabled, company, worker_class, requests = [], data = nil) ⇒ Job
constructor
A new instance of Job.
- #next_request(session = QBWC::Session.get) ⇒ Object (also: #next)
- #pending?(session) ⇒ Boolean
- #process_response(qbxml_response, response, session, advance) ⇒ Object
- #request_index(session) ⇒ Object
- #requests(session) ⇒ Object
- #requests=(requests) ⇒ Object
- #requests_provided_when_job_added ⇒ Object
- #requests_provided_when_job_added=(value) ⇒ Object
- #reset ⇒ Object
- #set_requests(session, requests) ⇒ Object
- #worker ⇒ Object
Constructor Details
#initialize(name, enabled, company, worker_class, requests = [], data = nil) ⇒ Job
Returns a new instance of Job.
5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/qbwc/job.rb', line 5 def initialize(name, enabled, company, worker_class, requests = [], data = nil) @name = name @enabled = enabled @company = company || QBWC.company_file_path @worker_class = worker_class @data = data default_key = [nil, company] requests = [requests].compact unless Hash === requests || Array === requests requests = { default_key => requests } unless Hash === requests || requests.empty? @requests = requests @request_index = { default_key => 0 } end |
Instance Attribute Details
#company ⇒ Object (readonly)
Returns the value of attribute company.
3 4 5 |
# File 'lib/qbwc/job.rb', line 3 def company @company end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
3 4 5 |
# File 'lib/qbwc/job.rb', line 3 def name @name end |
#worker_class ⇒ Object (readonly)
Returns the value of attribute worker_class.
3 4 5 |
# File 'lib/qbwc/job.rb', line 3 def worker_class @worker_class end |
Instance Method Details
#advance_next_request(session) ⇒ Object
33 34 35 36 37 |
# File 'lib/qbwc/job.rb', line 33 def advance_next_request(session) new_index = request_index(session) + 1 QBWC.logger.info "Job '#{name}' advancing to request #'#{new_index}'." @request_index[session.key] = new_index end |
#data ⇒ Object
80 81 82 |
# File 'lib/qbwc/job.rb', line 80 def data @data end |
#data=(d) ⇒ Object
84 85 86 |
# File 'lib/qbwc/job.rb', line 84 def data=(d) @data = d end |
#disable ⇒ Object
43 44 45 |
# File 'lib/qbwc/job.rb', line 43 def disable self.enabled = false end |
#enable ⇒ Object
39 40 41 |
# File 'lib/qbwc/job.rb', line 39 def enable self.enabled = true end |
#enabled? ⇒ Boolean
57 58 59 |
# File 'lib/qbwc/job.rb', line 57 def enabled? @enabled end |
#next_request(session = QBWC::Session.get) ⇒ Object Also known as: next
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 |
# File 'lib/qbwc/job.rb', line 100 def next_request(session = QBWC::Session.get) reqs = requests session # Generate and save the requests to run when starting the job. if (reqs.nil? || reqs.empty?) && ! self.requests_provided_when_job_added greqs = worker.requests(self, session, @data) greqs = [greqs] unless greqs.nil? || greqs.is_a?(Array) set_requests session, greqs reqs = requests session end QBWC.logger.info("Requests available are '#{reqs}'.") if QBWC.log_requests_and_responses ri = request_index session QBWC.logger.info("Request index is '#{ri}'.") return nil if ri.nil? || reqs.nil? || ri >= reqs.length nr = reqs[ri] QBWC.logger.info("Next request is '#{nr}'.") if QBWC.log_requests_and_responses return QBWC::Request.new(nr) if nr end |
#pending?(session) ⇒ Boolean
47 48 49 50 51 52 53 54 55 |
# File 'lib/qbwc/job.rb', line 47 def pending?(session) if !enabled? QBWC.logger.info "Job '#{name}' not enabled." return false end sr = worker.should_run?(self, session, @data) QBWC.logger.info "Job '#{name}' should_run?: #{sr}." return sr end |
#process_response(qbxml_response, response, session, advance) ⇒ Object
24 25 26 27 28 29 30 31 |
# File 'lib/qbwc/job.rb', line 24 def process_response(qbxml_response, response, session, advance) QBWC.logger.info "Processing response." request_list = requests(session) completed_request = request_list[request_index(session)] if request_list advance_next_request(session) if advance QBWC.logger.info "Job '#{name}' received response: '#{qbxml_response}'." if QBWC.log_requests_and_responses worker.handle_response(response, session, self, completed_request, data) end |
#request_index(session) ⇒ Object
88 89 90 |
# File 'lib/qbwc/job.rb', line 88 def request_index(session) @request_index[session.key] || 0 end |
#requests(session) ⇒ Object
61 62 63 64 65 66 67 68 69 |
# File 'lib/qbwc/job.rb', line 61 def requests(session) secondary_key = session.key.dup secondary_key[0] = nil # username = nil result = nil [session.key, secondary_key].each do |k| result ||= (@requests || {})[k] end result end |
#requests=(requests) ⇒ Object
76 77 78 |
# File 'lib/qbwc/job.rb', line 76 def requests=(requests) @requests = requests end |
#requests_provided_when_job_added ⇒ Object
92 93 94 |
# File 'lib/qbwc/job.rb', line 92 def requests_provided_when_job_added @requests_provided_when_job_added end |
#requests_provided_when_job_added=(value) ⇒ Object
96 97 98 |
# File 'lib/qbwc/job.rb', line 96 def requests_provided_when_job_added=(value) @requests_provided_when_job_added = value end |
#reset ⇒ Object
121 122 123 124 |
# File 'lib/qbwc/job.rb', line 121 def reset @request_index = {} @requests = {} unless self.requests_provided_when_job_added end |
#set_requests(session, requests) ⇒ Object
71 72 73 74 |
# File 'lib/qbwc/job.rb', line 71 def set_requests(session, requests) @requests ||= {} @requests[session.key] = requests end |
#worker ⇒ Object
20 21 22 |
# File 'lib/qbwc/job.rb', line 20 def worker worker_class.constantize.new end |