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