class Sumac::Reference

Attributes

exposed_id[R]

Public Class Methods

new(connection, exposed_id) click to toggle source
Calls superclass method
# File lib/sumac/reference.rb, line 25
def initialize(connection, exposed_id)
  super()
  raise "argument 'connection' must be a Connection" unless connection.is_a?(Connection)
  @connection = connection
  raise unless exposed_id.is_a?(Integer)
  @exposed_id = exposed_id
  @forget_condition_variable = ConditionVariable.new
end

Public Instance Methods

callable?() click to toggle source
# File lib/sumac/reference.rb, line 54
def callable?
  at?(:active)
end
destroy() click to toggle source
# File lib/sumac/reference.rb, line 58
def destroy
  raise unless at?(:detached)
  to(:stale)
end
detach() click to toggle source
# File lib/sumac/reference.rb, line 50
def detach
  to(:detached)
end
local_forget_request() click to toggle source
# File lib/sumac/reference.rb, line 34
def local_forget_request
  to(:forget_requested) if at?(:active)
  @forget_condition_variable.wait(@connection.mutex) if at?([:forget_requested, :detached])
end
remote_forget_request() click to toggle source
# File lib/sumac/reference.rb, line 39
def remote_forget_request
  raise if at?([:detached, :stale])
  to(:stale)
end
send_forget_notification() click to toggle source
# File lib/sumac/reference.rb, line 44
def send_forget_notification
  message = Message::Exchange::ForgetNotification.new(@connection)
  message.reference = self
  @connection.messenger.send(message)
end
stale?() click to toggle source
# File lib/sumac/reference.rb, line 63
def stale?
  at?(:stale)
end