class Strum::Server::Manager

Public Class Methods

new(data = {}) click to toggle source

Creates a new SessionManager.

Calls superclass method Strum::Internal::Component::new
# File lib/strum/server/manager.rb, line 14
def initialize(data = {})
  self[:Components] = {Generator: Strum::Server::Session::Generator.instance,
                       Endpoint: Strum::Server::Endpoint.instance,
                       API: Strum::Internal::Listener.instance }
  self[:SessionList] = {}
  hook_components
  self[:Components][:API].trigger_events(Strum::Internal::Events::ManagerEvent)
  super(:Container)
end

Public Instance Methods

any_sockets?(&block) click to toggle source

Test against all sockets.

# File lib/strum/server/manager.rb, line 54
def any_sockets?(&block)
  raise Strum::Errors::NilBlockInvocation unless block_given?

  self[:SessionList].any? do |_ip, sockets|
    sockets.any? { |socket| block.call(socket)}
  end
end
connection_count() click to toggle source

Get the current connection Count

# File lib/strum/server/manager.rb, line 40
def connection_count
  size = 0
  self[:SessionList].values.each { |socket_list| size =+ socket_list.size}
  size
end
receive(socket) click to toggle source

Receives a socket @param socket [TCPSocket] the Socket object we're receiving

# File lib/strum/server/manager.rb, line 65
def receive(socket)
  session = self[:Components][:Generator].generate(socket)
  ## Intercept the socket and pass to our Interceptor

  unless ENV['INTERCEPT_MODE'].to_i.zero?
    raise Strum::Errors::NilInterceptor unless self[:Interceptor]
    self[:Components][:Interceptor].intercept(session)
  end

  register_session(session)

  self[:Components][:API].trigger_events(Strum::Internal::Events::ManagerEvent)
end
register_interceptor(klass) click to toggle source

Registers an interceptor to this manager.

# File lib/strum/server/manager.rb, line 48
def register_interceptor(klass)
  self[:Components][:Interceptor] = klass.instance
end
register_session(session) click to toggle source

Registers a Session to this SessionManager @param session [Strum::Server::Session::Template] - the session we're registering.

# File lib/strum/server/manager.rb, line 27
def register_session(session)
  self[:Components][:API].trigger_events(Strum::Internal::Events::ManagerEvent)
  raise Strum::Errors::InvalidSessionRegistration unless session.is_a? Strum::Server::Session::Template
  if self[:SessionList].keys.include?(session[:IP])
    self[:SessionList][session[:IP]] << session
  else
    self[:SessionList][session[:IP]] = [session]
  end
  self[:Components][:API].trigger_generic_events(session, Strum::Internal::Events::SessionRegistrationEvent)
end

Private Instance Methods

hook_components() click to toggle source

Hook all components

# File lib/strum/server/manager.rb, line 83
def hook_components
  self[:Components].each {|_name, component| component.hook(:Manager, self)}
end