Class: Upfluence::Context

Inherits:
Object
  • Object
show all
Defined in:
lib/upfluence/context.rb

Defined Under Namespace

Classes: ThreadWrapper

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeContext

Returns a new instance of Context.



11
12
13
# File 'lib/upfluence/context.rb', line 11

def initialize
  @deadline = nil
end

Instance Attribute Details

#deadlineObject (readonly)

Returns the value of attribute deadline.



9
10
11
# File 'lib/upfluence/context.rb', line 9

def deadline
  @deadline
end

Instance Method Details

#timeoutObject



15
16
17
18
19
# File 'lib/upfluence/context.rb', line 15

def timeout
  return nil if @deadline.nil?

  [(@deadline - Time.now).to_f, 0.0].max
end

#with_deadline(deadline, override: false) ⇒ Object



21
22
23
24
25
26
27
28
# File 'lib/upfluence/context.rb', line 21

def with_deadline(deadline, override: false)
  previous = @deadline
  @deadline = override || previous.nil? ? deadline : [previous, deadline].min

  yield
ensure
  @deadline = previous
end

#with_timeout(duration, override: false) ⇒ Object



30
31
32
# File 'lib/upfluence/context.rb', line 30

def with_timeout(duration, override: false)
  with_deadline(Time.now + duration, override: override) { yield }
end