class Strum::Server::Interceptor
Constants
- Settings
Settings
for this manager
Public Class Methods
new(settings = {})
click to toggle source
Create a Gateway object and spawn an endpoint for incoming connections. @param settings [Hash] Settings
for this interceptor.
Calls superclass method
Strum::Internal::Component::new
# File lib/strum/server/interceptor.rb, line 21 def initialize(settings = {}) self[:Settings] = Settings.new( ENV['SESSION_MAX_SIZE'].to_i, ENV['SESSION_THROTTLE_COUNT'].to_i, ENV['SESSION_DELAY_TIME'].to_i) super(:Reactor) end
Public Instance Methods
intercept(socket)
click to toggle source
Intercepts a socket
# File lib/strum/server/interceptor.rb, line 31 def intercept(socket) report "Intercepting incoming socket from #{socket.io.addr[-1]}" begin validate(socket) authenticate(socket) session = self[:SessionGenerator].generate(socket) self[:Manage].register_session(session) rescue SocketError close_socket(socket) end end
Private Instance Methods
authenticate(socket)
click to toggle source
# File lib/strum/server/interceptor.rb, line 73 def authenticate(socket); end
close_socket(socket)
click to toggle source
Closes a socket and removes it from our Manager's list.
# File lib/strum/server/interceptor.rb, line 67 def close_socket(socket) socket.close self[:Manager][:SessionList][socket.io.addr[-1]].delete(socket) end
validate(socket)
click to toggle source
Validates a socket.
# File lib/strum/server/interceptor.rb, line 47 def validate(socket) at = Time.now if self[:Manager][:SessionList].key? ip unless (at - self[:Manager][:SessionList].last[:InitTime]) < self[:Settings][:DELAY_TIME] self[:Component][:API].trigger_events(Strum::Internal::Events::SocketDelayViolationEvent) close_socket(socket) end unless self[:SessionList].size < self[:Settings][:MAX_SIZE] self[:Component][:API].trigger_events(Strum::Internal::Events::SocketListOverflow) close_socket(socket) end unless self[:SessionList][ip].size < self[:Settings][:THROTTLE_COUNT] self[:Component][:API].trigger_events(Strum::Internal::Events::SocketThrottleEvent) close_socket(socket) end end end