class Wamp::Client::Manager::Establish

Constants

WAMP_FEATURES

Attributes

goodbye_sent[RW]
id[RW]
realm[RW]

Public Class Methods

new(session, send_message) click to toggle source

Constructor

Calls superclass method Wamp::Client::Manager::Base::new
# File lib/wamp/client/manager/establish.rb, line 51
def initialize(session, send_message)
  super session, send_message

  self.id = nil
  self.realm = nil
  self.goodbye_sent = false
end

Public Instance Methods

abort(message) click to toggle source

Handles an abort message

# File lib/wamp/client/manager/establish.rb, line 156
def abort(message)
  # Log leaving the session
  logger.info("#{self.session.class.name} left session '#{message.reason}'")

  # Trigger the leave event
  trigger :leave, message.reason, message.details
end
challenge(message) click to toggle source

Handles a challenge message

# File lib/wamp/client/manager/establish.rb, line 136
def challenge(message)
  # Log challenge received
  logger.debug("#{self.session.class.name} auth challenge '#{message.authmethod}', extra: #{message.extra}")

  # Call the callback if set
  signature, extra = trigger :challenge, message.authmethod, message.extra

  # Set with initial values
  signature ||= ''
  extra ||= {}

  # Create the message
  authenticate = Message::Authenticate.new(signature, extra)

  # Send it
  send_message(authenticate)
end
goodbye(message) click to toggle source

Handles the goodbye message

# File lib/wamp/client/manager/establish.rb, line 105
def goodbye(message)
  # If we didn't send the goodbye, respond
  unless self.goodbye_sent
    goodbye = Message::Goodbye.new({}, 'wamp.error.goodbye_and_out')
    send_message(goodbye)
  end

  # Close out session
  self.id = nil
  self.realm = nil
  self.goodbye_sent = false

  # Trigger leave event
  trigger :leave, message.reason, message.details
end
is_open?() click to toggle source

Returns true if the session is open

# File lib/wamp/client/manager/establish.rb, line 61
def is_open?
  self.id != nil
end
join(realm) click to toggle source

Will attempt to join a router

# File lib/wamp/client/manager/establish.rb, line 67
def join(realm)

  # Set the realm
  self.realm = realm

  # Create the details
  details = {}
  details[:roles] = WAMP_FEATURES
  details[:agent] = "Ruby-Wamp::Client-#{VERSION}"
  details[:authid] = self.session.options[:authid] if self.session.options[:authid]
  details[:authmethods] = self.session.options[:authmethods] if self.session.options[:authmethods]

  # Create the message
  hello = Message::Hello.new(realm, details)

  # Send it
  send_message(hello)
end
leave(reason, message) click to toggle source

Leave the session

# File lib/wamp/client/manager/establish.rb, line 87
def leave(reason, message)

  # Create the details
  details = {}
  details[:message] = message

  # Create the goobdbye message
  goodbye = Message::Goodbye.new(details, reason)

  # Send it
  send_message(goodbye)

  # Send it
  self.goodbye_sent = true
end
welcome(message) click to toggle source

Handles the welcome message

# File lib/wamp/client/manager/establish.rb, line 123
def welcome(message)
  # Get the session ID
  self.id = message.session

  # Log the message
  logger.info("#{self.session.class.name} joined session with realm '#{message.details[:realm]}'")

  # Trigger join event
  trigger :join, message.details
end