Module: Server

Defined in:
lib/server.rb,
lib/demo_listener.rb,
lib/server/config.rb,
lib/server/server.rb,
lib/server/version.rb,
lib/server/listenable.rb,
lib/server/shutdown_hook.rb,
lib/server/argument_parser.rb,
lib/server/default_handler.rb,
lib/server/message_handler.rb,
lib/server/modular_handler.rb,
lib/server/instance_methods.rb,
lib/server/channel_initializer.rb

Overview

The Server module

Defined Under Namespace

Modules: DefaultHandler, InstanceMethods, Listenable Classes: ArgumentsParser, ChannelInitializer, Demo, MessageHandler, ModularHandler, Server, ShutdownHook

Constant Summary collapse

DEFAULT_LOG_LEVEL =
Logger::INFO
DEFAULT_HOST =
'0.0.0.0'.freeze
DEFAULT_PORT =
8080
DEFAULT_SSL_ENABLED =
false
DEFAULT_IDLE_READING_SECONDS =

seconds

5 * 60
DEFAULT_IDLE_WRITING_SECONDS =

seconds

30
DEFAULT_KEEP_ALIVE =
false
DEFAULT_MAX_QUEUED_INCOMING_CONNECTIONS =
100
DEFAULT_MAX_FRAME_LENGTH =
8192
DEFAULT_DELIMITER =
Java::io.netty.handler.codec.Delimiters.lineDelimiter
DEFAULT_LOG_REQUESTS =
false
DEFAULT_QUIT_COMMANDS =
%i[
  bye cease desist exit leave quit stop terminate
].freeze
VERSION =
'1.2.0'.freeze

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.server_configObject

rubocop: disable Metrics/MethodLength



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/server/config.rb', line 36

def server_config
  @server_config ||= {
    host: DEFAULT_HOST,
    port: DEFAULT_PORT,
    ssl: DEFAULT_SSL_ENABLED,
    idle_reading: DEFAULT_IDLE_READING_SECONDS,
    idle_writing: DEFAULT_IDLE_WRITING_SECONDS,
    max_queued_incoming_connections: DEFAULT_MAX_QUEUED_INCOMING_CONNECTIONS,
    log_requests: DEFAULT_LOG_REQUESTS,
    log_level: DEFAULT_LOG_LEVEL,
    max_frame_length: DEFAULT_MAX_FRAME_LENGTH,
    keep_alive: DEFAULT_KEEP_ALIVE,
    delimiter: DEFAULT_DELIMITER,
    quit_commands: DEFAULT_QUIT_COMMANDS
  }.freeze
end

Instance Method Details

#main(args = parse_arguments) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/server.rb', line 22

def main(args = parse_arguments)
  Logging.log_level = args[:log_level]
  demo_handler = ::Server::Demo.new(args)
  ::Server::Server.new(args, demo_handler).run
rescue Interrupt => e
  warn format("\r%<class>s", class: e.class)
  exit
rescue StandardError => e
  ::Server.log.fatal(e)
  e.backtrace.each { |t| ::Server.log.fatal t }
  exit 1
end

#parse_arguments(arguments_parser = ::Server::ArgumentsParser.new) ⇒ Object

class ArgumentsParser



97
98
99
100
101
102
103
# File 'lib/server/argument_parser.rb', line 97

def parse_arguments(arguments_parser = ::Server::ArgumentsParser.new)
  arguments_parser.parser.parse!(ARGV)
  arguments_parser.options
rescue OptionParser::InvalidArgument, OptionParser::InvalidOption,
       OptionParser::AmbiguousOption => e
  abort e.message
end