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