Class: SolidObjects::WakeUp

Inherits:
Object
  • Object
show all
Defined in:
lib/solid_objects/wake_up.rb,
sig/generated/lib/solid_objects/wake_up.rbs

Defined Under Namespace

Classes: Watch

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeWakeUp

Returns a new instance of WakeUp.

RBS:

  • () -> void



26
27
28
29
30
# File 'lib/solid_objects/wake_up.rb', line 26

def initialize
  @mutex = Mutex.new
  @condition = Thread::ConditionVariable.new
  @generation = 0
end

Instance Attribute Details

#conditionObject (readonly)

Returns the value of attribute condition.

Returns:

  • (Object)


58
59
60
# File 'lib/solid_objects/wake_up.rb', line 58

def condition
  @condition
end

#mutexObject (readonly)

Returns the value of attribute mutex.

Returns:

  • (Object)


58
59
60
# File 'lib/solid_objects/wake_up.rb', line 58

def mutex
  @mutex
end

Instance Method Details

#signalvoid

This method returns an undefined value.

RBS:

  • () -> void



33
34
35
36
37
38
# File 'lib/solid_objects/wake_up.rb', line 33

def signal
  mutex.synchronize do
    @generation += 1
    condition.broadcast
  end
end

#wait(timeout:, generation: nil) ⇒ Boolean

RBS:

  • (timeout: Numeric, ?generation: Integer?) -> bool

Parameters:

  • timeout: (Numeric)
  • generation: (Integer, nil) (defaults to: nil)

Returns:

  • (Boolean)


46
47
48
49
50
51
52
53
54
# File 'lib/solid_objects/wake_up.rb', line 46

def wait(timeout:, generation: nil)
  mutex.synchronize do
    return true if generation && @generation != generation

    generation ||= @generation
    condition.wait(mutex, timeout)
    @generation != generation
  end
end

#watchWatch

RBS:

  • () -> Watch

Returns:



41
42
43
# File 'lib/solid_objects/wake_up.rb', line 41

def watch
  mutex.synchronize { Watch.new(self, @generation) }
end