class SISFC::Request

Attributes

arrival_time[R]

# states STATE_WORKING = 1 STATE_SUSPENDED = 2

closure_time[R]

# states STATE_WORKING = 1 STATE_SUSPENDED = 2

customer_id[R]

# states STATE_WORKING = 1 STATE_SUSPENDED = 2

data_center_id[RW]

the data_center_id attribute is updated as requests move from a Cloud data center to another

generation_time[R]

# states STATE_WORKING = 1 STATE_SUSPENDED = 2

next_step[R]

# states STATE_WORKING = 1 STATE_SUSPENDED = 2

rid[R]

# states STATE_WORKING = 1 STATE_SUSPENDED = 2

workflow_type_id[R]

# states STATE_WORKING = 1 STATE_SUSPENDED = 2

Public Class Methods

new(rid:, generation_time:, initial_data_center_id:, arrival_time:, workflow_type_id:, customer_id:) click to toggle source
# File lib/sisfc/request.rb, line 24
def initialize(rid:,
               generation_time:,
               initial_data_center_id:,
               arrival_time:,
               workflow_type_id:,
               customer_id:)
  @rid              = rid
  @generation_time  = generation_time
  @data_center_id   = initial_data_center_id
  @arrival_time     = arrival_time
  @workflow_type_id = workflow_type_id
  @customer_id      = customer_id

  # steps start counting from zero
  @next_step = 0

  # calculate communication latency
  @communication_latency = @arrival_time - @generation_time

  @queuing_time = 0.0
  @working_time = 0.0
end

Public Instance Methods

closed?() click to toggle source
# File lib/sisfc/request.rb, line 65
def closed?
  !@closure_time.nil?
end
finished_processing(time) click to toggle source
# File lib/sisfc/request.rb, line 60
def finished_processing(time)
  # save closure time
  @closure_time = time
end
step_completed(duration) click to toggle source
# File lib/sisfc/request.rb, line 55
def step_completed(duration)
  @working_time += duration
  @next_step += 1
end
to_s() click to toggle source
# File lib/sisfc/request.rb, line 74
def to_s
  "rid: #{@rid}, generation_time: #{@generation_time}, data_center_id: #{@data_center_id}, arrival_time: #{@arrival_time}"
end
ttr() click to toggle source
# File lib/sisfc/request.rb, line 69
def ttr
  # if incident isn't closed yet, just return nil without raising an exception.
  @closure_time.nil? ? nil : (@closure_time - @arrival_time)
end
update_queuing_time(duration) click to toggle source
# File lib/sisfc/request.rb, line 47
def update_queuing_time(duration)
  @queuing_time += duration
end
update_transfer_time(duration) click to toggle source
# File lib/sisfc/request.rb, line 51
def update_transfer_time(duration)
  @communication_latency += duration
end