Class: Smith::Tool::BoundedCompletionState

Inherits:
Object
  • Object
show all
Extended by:
Dry::Initializer
Defined in:
lib/smith/tool/bounded_completion_state.rb

Instance Method Summary collapse

Constructor Details

#initializeBoundedCompletionState

Returns a new instance of BoundedCompletionState.



12
13
14
15
16
17
# File 'lib/smith/tool/bounded_completion_state.rb', line 12

def initialize(...)
  super
  @state = :open
  @continuation_required = false
  @mutex = Mutex.new
end

Instance Method Details

#abort_finalization!Object



44
45
46
# File 'lib/smith/tool/bounded_completion_state.rb', line 44

def abort_finalization!
  @mutex.synchronize { @state = :required if @state == :finalizing }
end

#begin_finalizationObject



35
36
37
38
39
40
41
42
# File 'lib/smith/tool/bounded_completion_state.rb', line 35

def begin_finalization
  @mutex.synchronize do
    return :active if @state == :finalizing

    @state = :finalizing
    :started
  end
end

#consume_continuation!Object



23
24
25
26
27
28
29
# File 'lib/smith/tool/bounded_completion_state.rb', line 23

def consume_continuation!
  @mutex.synchronize do
    required = @continuation_required
    @continuation_required = false
    required
  end
end

#finalization_required?Boolean

Returns:

  • (Boolean)


48
49
50
# File 'lib/smith/tool/bounded_completion_state.rb', line 48

def finalization_required?
  @mutex.synchronize { @state == :required }
end

#finalization_started?Boolean

Returns:

  • (Boolean)


52
53
54
# File 'lib/smith/tool/bounded_completion_state.rb', line 52

def finalization_started?
  @mutex.synchronize { @state == :finalizing }
end

#request_continuation!Object



19
20
21
# File 'lib/smith/tool/bounded_completion_state.rb', line 19

def request_continuation!
  @mutex.synchronize { @continuation_required = true }
end

#request_finalization!Object



31
32
33
# File 'lib/smith/tool/bounded_completion_state.rb', line 31

def request_finalization!
  @mutex.synchronize { @state = :required if @state == :open }
end