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