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