class ManagerRemoteSocketBase
Attributes
ip[R]
Properties
port[R]
port_secure[R]
sessions[R]
Public Class Methods
new()
click to toggle source
default constructor
Calls superclass method
ManagerBase::new
# File lib/mrpin/core/remote/socket/base/manager_remote_socket_base.rb, line 67 def initialize super @port = 0 @port_secure = 0 init_api init_handle init_sessions end
Public Instance Methods
is_ready_for_shutdown?()
click to toggle source
# File lib/mrpin/core/remote/socket/base/manager_remote_socket_base.rb, line 31 def is_ready_for_shutdown? result = false @sessions_locker.synchronize do result = @sessions.empty? end result end
on_server_maintenance_on()
click to toggle source
# File lib/mrpin/core/remote/socket/base/manager_remote_socket_base.rb, line 55 def on_server_maintenance_on self.disconnect_all_with_message(EStringTypeBase::EST_ERROR_SERVER_ON_MAINTENANCE) nil end
on_server_shutdown()
click to toggle source
Events
Calls superclass method
ManagerBase#on_server_shutdown
# File lib/mrpin/core/remote/socket/base/manager_remote_socket_base.rb, line 46 def on_server_shutdown super disconnect_all_with_message(EStringTypeBase::EST_ERROR_SERVER_SHUTDOWN) nil end
post_init()
click to toggle source
Calls superclass method
ManagerBase#post_init
# File lib/mrpin/core/remote/socket/base/manager_remote_socket_base.rb, line 79 def post_init super register_classes register_handlers nil end
start!(callback = nil)
click to toggle source
# File lib/mrpin/core/remote/socket/base/manager_remote_socket_base.rb, line 97 def start!(callback = nil) begin descriptor_size = EventMachine.set_descriptor_table_size(60000) @logger.info "descriptors size is #{descriptor_size}" rescue Exception => e AppInfo.instance.on_server_error(e.to_s, e) end end
start_tasks()
click to toggle source
# File lib/mrpin/core/remote/socket/base/manager_remote_socket_base.rb, line 89 def start_tasks Constants::THREADS_HANDLERS_COUNT.times do |n| create_handler(n) end nil end
Protected Instance Methods
default_port()
click to toggle source
# File lib/mrpin/core/remote/socket/base/manager_remote_socket_base.rb, line 21 def default_port assert(false, 'please override') end
server_type()
click to toggle source
# File lib/mrpin/core/remote/socket/base/manager_remote_socket_base.rb, line 26 def server_type 'unknown' end
start_server_on_port(port, client_class, continue_after_error = true, callback = nil)
click to toggle source
# File lib/mrpin/core/remote/socket/base/manager_remote_socket_base.rb, line 109 def start_server_on_port(port, client_class, continue_after_error = true, callback = nil) thread = Thread.new do client_class.manager_remote = self if client_class.respond_to?('manager_remote=') begin EventMachine.epoll EventMachine.run do ip = '0.0.0.0' EventMachine.start_server(ip, port, client_class) @logger.info "server #{self.server_type}\t\tstarted on #{ip}:#{port}" callback.call unless callback.nil? end rescue Exception => e message = "error on server #{ip}:#{port} thread: #{e}" AppInfo.instance.on_server_error(message, e) sleep 10 retry if continue_after_error end end thread.name = "thread_remote_server_#{ip}:#{port}" nil end