class Going::Operation
Attributes
message[RW]
on_complete[R]
select_statement[R]
semaphore[R]
Public Class Methods
new(opts = {}, &on_complete)
click to toggle source
# File lib/going/operation.rb, line 8 def initialize(opts = {}, &on_complete) @message = opts[:message] @select_statement = opts[:select_statement] @on_complete = on_complete @completed = false @closed = false @signaled = false @semaphore = ConditionVariable.new end
Public Instance Methods
close()
click to toggle source
# File lib/going/operation.rb, line 34 def close @closed = true signal end
complete()
click to toggle source
# File lib/going/operation.rb, line 29 def complete @completed = true signal end
incomplete?()
click to toggle source
# File lib/going/operation.rb, line 39 def incomplete? !completed? end
signal()
click to toggle source
# File lib/going/operation.rb, line 24 def signal @signaled = true semaphore.signal end
wait(mutex)
click to toggle source
# File lib/going/operation.rb, line 20 def wait(mutex) semaphore.wait(mutex) until wake? end
Private Instance Methods
wake?()
click to toggle source
# File lib/going/operation.rb, line 45 def wake? signaled? || completed? || closed? end