Class: QBWC::Job

Inherits:
Object
  • Object
show all
Defined in:
lib/qbwc/job.rb

Direct Known Subclasses

ActiveRecord::Job

Instance Attribute Summary collapse

Instance Method Summary collapse

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
# 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
  @requests = requests
  @data = data
  @request_index = 0
end

Instance Attribute Details

#companyObject (readonly)

Returns the value of attribute company.



3
4
5
# File 'lib/qbwc/job.rb', line 3

def company
  @company
end

#nameObject (readonly)

Returns the value of attribute name.



3
4
5
# File 'lib/qbwc/job.rb', line 3

def name
  @name
end

#worker_classObject (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_requestObject



27
28
29
30
31
# File 'lib/qbwc/job.rb', line 27

def advance_next_request
  new_index = request_index + 1
  QBWC.logger.info "Job '#{name}' advancing to request #'#{new_index}'."
  self.request_index = new_index
end

#dataObject



63
64
65
# File 'lib/qbwc/job.rb', line 63

def data
  @data
end

#data=(d) ⇒ Object



67
68
69
# File 'lib/qbwc/job.rb', line 67

def data=(d)
  @data = d
end

#disableObject



37
38
39
# File 'lib/qbwc/job.rb', line 37

def disable
  self.enabled = false
end

#enableObject



33
34
35
# File 'lib/qbwc/job.rb', line 33

def enable
  self.enabled = true
end

#enabled?Boolean

Returns:

  • (Boolean)


51
52
53
# File 'lib/qbwc/job.rb', line 51

def enabled?
  @enabled
end

#next_requestObject Also known as: next



87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/qbwc/job.rb', line 87

def next_request
  # Generate and save the requests to run when starting the job.
  if (requests.nil? || requests.empty?) && ! self.requests_provided_when_job_added
    r = worker.requests(self)
    r = [r] unless r.nil? || r.is_a?(Array)
    self.requests = r
  end

  QBWC.logger.info("Requests available are '#{requests}'.") if QBWC.log_requests_and_responses
  ri = request_index
  QBWC.logger.info("Request index is '#{ri}'.")
  return nil if ri.nil? || requests.nil? || ri >= requests.length
  nr = requests[ri]
  QBWC.logger.info("Next request is '#{nr}'.") if QBWC.log_requests_and_responses
  return QBWC::Request.new(nr)
end

#pending?Boolean

Returns:

  • (Boolean)


41
42
43
44
45
46
47
48
49
# File 'lib/qbwc/job.rb', line 41

def pending?
  if !enabled?
    QBWC.logger.info "Job '#{name}' not enabled."
    return false
  end
  sr = worker.should_run?(self)
  QBWC.logger.info "Job '#{name}' should_run?: #{sr}."
  return sr
end

#process_response(qbxml_response, response, session, advance) ⇒ Object



19
20
21
22
23
24
25
# File 'lib/qbwc/job.rb', line 19

def process_response(qbxml_response, response, session, advance)
  QBWC.logger.info "Processing response."
  completed_request = requests[request_index]
  advance_next_request 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_indexObject



71
72
73
# File 'lib/qbwc/job.rb', line 71

def request_index
  @request_index
end

#request_index=(ri) ⇒ Object



75
76
77
# File 'lib/qbwc/job.rb', line 75

def request_index=(ri)
  @request_index = ri
end

#requestsObject



55
56
57
# File 'lib/qbwc/job.rb', line 55

def requests
  @requests
end

#requests=(r) ⇒ Object



59
60
61
# File 'lib/qbwc/job.rb', line 59

def requests=(r)
  @requests = r
end

#requests_provided_when_job_addedObject



79
80
81
# File 'lib/qbwc/job.rb', line 79

def requests_provided_when_job_added
  @requests_provided_when_job_added
end

#requests_provided_when_job_added=(value) ⇒ Object



83
84
85
# File 'lib/qbwc/job.rb', line 83

def requests_provided_when_job_added=(value)
  @requests_provided_when_job_added = value
end

#resetObject



105
106
107
108
# File 'lib/qbwc/job.rb', line 105

def reset
  self.request_index = 0
  self.requests = [] unless self.requests_provided_when_job_added
end

#workerObject



15
16
17
# File 'lib/qbwc/job.rb', line 15

def worker
  worker_class.constantize.new
end