Class: QBWC::Session

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/qbwc/session.rb

Constant Summary collapse

@@session =
nil

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeSession

Returns a new instance of Session.



9
10
11
12
13
14
15
16
17
18
19
# File 'lib/qbwc/session.rb', line 9

def initialize
  @current_job = nil
  @current_request = nil
  @saved_requests = []

  @qbwc_iterator_queue = []
  @qbwc_iterating = false

  @@session = self
  reset
end

Instance Attribute Details

#current_jobObject (readonly)

Returns the value of attribute current_job.



4
5
6
# File 'lib/qbwc/session.rb', line 4

def current_job
  @current_job
end

#current_requestObject (readonly)

Returns the value of attribute current_request.



4
5
6
# File 'lib/qbwc/session.rb', line 4

def current_request
  @current_request
end

#progressObject (readonly)

Returns the value of attribute progress.



4
5
6
# File 'lib/qbwc/session.rb', line 4

def progress
  @progress
end

#qbwc_iteratingObject (readonly)

Returns the value of attribute qbwc_iterating.



5
6
7
# File 'lib/qbwc/session.rb', line 5

def qbwc_iterating
  @qbwc_iterating
end

#qbwc_iterator_queueObject (readonly)

Returns the value of attribute qbwc_iterator_queue.



5
6
7
# File 'lib/qbwc/session.rb', line 5

def qbwc_iterator_queue
  @qbwc_iterator_queue
end

#saved_requestsObject (readonly)

Returns the value of attribute saved_requests.



4
5
6
# File 'lib/qbwc/session.rb', line 4

def saved_requests
  @saved_requests
end

Class Method Details

.new_or_unfinishedObject



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

def new_or_unfinished
  (!@@session || @@session.finished?) ? new : @@session
end

Instance Method Details

#finished?Boolean

Returns:

  • (Boolean)


27
28
29
# File 'lib/qbwc/session.rb', line 27

def finished?
  @progress == 100
end

#nextObject



31
32
33
# File 'lib/qbwc/session.rb', line 31

def next
  @requests.alive? ? @requests.resume : nil
end

#process_saved_responsesObject



53
54
55
# File 'lib/qbwc/session.rb', line 53

def process_saved_responses
  @saved_requests.each { |r| r.process_response }
end

#resetObject



21
22
23
24
25
# File 'lib/qbwc/session.rb', line 21

def reset
  @progress = QBWC.jobs.blank? ? 100 : 0
  enabled_jobs.map { |j| j.reset }
  @requests = build_request_generator(enabled_jobs)
end

#response=(qbxml_response) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/qbwc/session.rb', line 35

def response=(qbxml_response)
  begin
    @current_request.response = QBWC.parser.qbxml_to_hash(qbxml_response)
    parse_response_header(@current_request.response)

    if QBWC.delayed_processing
      @saved_requests << @current_request
    else
      @current_request.process_response
    end
  rescue => e
    puts "An error occured in QBWC::Session: #{e}"
    puts e
    puts e.backtrace
  end

end