tcp-server 1.1.5-java → 1.2.0-java

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2174a5497f0b0358242e9592b698912fd8f06943deaa8291cd24045478eac44e
4
- data.tar.gz: c21770eddc3798b518c2685c5e93adf56d560b8380264b4673914b59a24cc26a
3
+ metadata.gz: e929584365fe9f6f2f5acd5730590308d9ccf84b7cafc7cb611fe80290014891
4
+ data.tar.gz: bd0148f3ebe104cc69dd4ed9f37dd68733c3a9e9dcca711184a5dc5e940005b8
5
5
  SHA512:
6
- metadata.gz: 8811e5ba0e0d1556f0b31d13b04fbaf40465031c0b568a390432330eefdc991346eb5507ee76ca72254629de2a5cbfd928870d6e20a942daf6accb9f0bc36f83
7
- data.tar.gz: 178e6ef353f59025743761d138fc51a7c0e1c4f0b517f3b4f1ab7a50d55e2652d3094a2b817ff48497ee1522197efed04b4ea380761a29f2e53f080a7312bab8
6
+ metadata.gz: 6260d608a17649fe1114e0e9382398e56297a9430ac9755c516578317d2e691fde6063e096847fc9f24e5d9ce8d34b940bf1a798433e19cb736be8ad1d956ca1
7
+ data.tar.gz: 28e72cd37f04f4a958c638841a8742e13f991c89e91977c9298978695c8801eb29d1ca6c8a71e28ac7e6d3aea37c4022c4998e8a1fe1d308111bf0f0b7162e49
data/lib/demo_listener.rb CHANGED
@@ -10,21 +10,16 @@
10
10
  #
11
11
  # =end
12
12
 
13
+ require_relative 'server/default_handler'
14
+
13
15
  # The Server module
14
16
  module Server
15
17
  # The Demo class
16
18
  class Demo
17
- def channel_active(ctx)
18
- ::Server.log.info "Channel active: #{ctx.channel}"
19
- response = 'Hello, world!'
20
- log.trace "Sending response: #{response.inspect}"
21
- ctx.channel.writeAndFlush("#{response}\n")
22
- end
19
+ include Server::DefaultHandler
23
20
 
24
- def exception_caught(_ctx, cause)
25
- ::Server.log.error "Exception caught: #{cause}"
26
- cause.backtrace.each { |t| ::Server.log.error t }
27
- ctx.close()
21
+ def initialize(options = {})
22
+ @options = options
28
23
  end
29
24
  end
30
25
  end
data/lib/server/config.rb CHANGED
@@ -43,10 +43,10 @@ module Server
43
43
  max_queued_incoming_connections: DEFAULT_MAX_QUEUED_INCOMING_CONNECTIONS,
44
44
  log_requests: DEFAULT_LOG_REQUESTS,
45
45
  log_level: DEFAULT_LOG_LEVEL,
46
- quit_commands: DEFAULT_QUIT_COMMANDS,
47
46
  max_frame_length: DEFAULT_MAX_FRAME_LENGTH,
48
47
  keep_alive: DEFAULT_KEEP_ALIVE,
49
- delimiter: DEFAULT_DELIMITER
48
+ delimiter: DEFAULT_DELIMITER,
49
+ quit_commands: DEFAULT_QUIT_COMMANDS
50
50
  }.freeze
51
51
  end
52
52
  module_function :server_config
@@ -0,0 +1,43 @@
1
+ # encoding: utf-8
2
+ # frozen_string_literal: false
3
+
4
+ # -*- mode: ruby -*-
5
+ # vi: set ft=ruby :
6
+
7
+ # =begin
8
+ #
9
+ # Copyright Nels Nelson 2016-2024 but freely usable (see license)
10
+ #
11
+ # =end
12
+
13
+ # The Server module
14
+ module Server
15
+ # The DefaultHandler module
16
+ module DefaultHandler
17
+ def channel_active(ctx)
18
+ ::Server.log.info "Channel active: #{ctx.channel}"
19
+ response = 'Hello, world!'
20
+ log.trace "Sending response: #{response.inspect}"
21
+ ctx.channel.writeAndFlush("#{response}\n")
22
+ end
23
+
24
+ # rubocop: disable Metrics/AbcSize
25
+ def message_received(ctx, msg)
26
+ return if msg.nil?
27
+ msg.chomp! if msg.respond_to?(:chomp!)
28
+ return if msg.respond_to?(:empty?) && msg.empty?
29
+ log.trace "##{__method__} channel: #{ctx.channel}, message: #{msg.inspect}"
30
+ return ctx.close() if @options[:quit_commands].include?(msg.downcase.to_sym)
31
+ response = msg.upcase
32
+ log.debug "Sending response: #{response.inspect}"
33
+ ctx.writeAndFlush("#{response}\n")
34
+ end
35
+ # rubocop: enable Metrics/AbcSize
36
+
37
+ def exception_caught(_ctx, cause)
38
+ ::Server.log.error "Exception caught: #{cause}"
39
+ cause.backtrace.each { |t| ::Server.log.error t }
40
+ ctx.close()
41
+ end
42
+ end
43
+ end
@@ -14,6 +14,7 @@ require 'java'
14
14
  require 'netty'
15
15
 
16
16
  require_relative 'channel_initializer'
17
+ require_relative 'default_handler'
17
18
  require_relative 'shutdown_hook'
18
19
 
19
20
  # The Server module
@@ -28,6 +29,8 @@ module Server
28
29
 
29
30
  # The InstanceMethods module
30
31
  module InstanceMethods
32
+ include ::Server::DefaultHandler
33
+
31
34
  # rubocop: disable Metrics/AbcSize
32
35
  def bootstrap
33
36
  @bootstrap = ServerBootstrap.new
@@ -41,7 +44,6 @@ module Server
41
44
  # rubocop: enable Metrics/AbcSize
42
45
 
43
46
  def configure_handlers(*handlers, &block)
44
- add_listener(self)
45
47
  channel_initializer << block if block_given?
46
48
  add_listener(*handlers)
47
49
  end
@@ -91,11 +93,7 @@ module Server
91
93
  # rubocop: enable Metrics/MethodLength
92
94
 
93
95
  def port
94
- @port ||= begin
95
- value = @options[:port]
96
- value = DEFAULT_PORT if value.nil?
97
- value.to_i
98
- end
96
+ @port ||= (@options[:port] || DEFAULT_PORT).to_i
99
97
  end
100
98
 
101
99
  def shutdown
@@ -123,8 +121,7 @@ module Server
123
121
  def keep_alive
124
122
  @keep_alive ||= begin
125
123
  value = @options[:keep_alive]
126
- value = DEFAULT_KEEP_ALIVE if value.nil?
127
- value
124
+ value || DEFAULT_KEEP_ALIVE
128
125
  end
129
126
  end
130
127
 
data/lib/server/server.rb CHANGED
@@ -27,23 +27,12 @@ module Server
27
27
  def initialize(options = {}, *handlers, &block)
28
28
  raise ArgumentError, 'Parameter may not be nil: options' if options.nil?
29
29
  @options = ::Server.server_config.merge(options)
30
- configure_handlers(*handlers, &block)
30
+ log.trace "##{__method__} handlers: #{handlers}"
31
+ configure_handlers(*(handlers.empty? ? [self] : handlers), &block)
31
32
  ensure
32
- log.trace "Listeners after initialization of #{self}: #{channel_initializer.default_handler.listeners}"
33
+ listeners = channel_initializer.default_handler.listeners
34
+ log.trace "##{__method__} listeners: #{listeners}"
33
35
  end
34
-
35
- # rubocop: disable Metrics/AbcSize
36
- def message_received(ctx, msg)
37
- return if msg.nil?
38
- msg.chomp! if msg.respond_to?(:chomp!)
39
- return if msg.respond_to?(:empty?) && msg.empty?
40
- log.trace "##{__method__} channel: #{ctx.channel}, message: #{msg.inspect}"
41
- return ctx.close() if @options[:quit_commands].include?(msg.downcase.to_sym)
42
- response = msg.upcase
43
- log.debug "Sending response: #{response.inspect}"
44
- ctx.writeAndFlush("#{response}\n")
45
- end
46
- # rubocop: enable Metrics/AbcSize
47
36
  end
48
37
  # class Server
49
38
  end
@@ -12,5 +12,5 @@
12
12
 
13
13
  # The Server module
14
14
  module Server
15
- VERSION = '1.1.5'.freeze
15
+ VERSION = '1.2.0'.freeze
16
16
  end
data/lib/server.rb CHANGED
@@ -12,6 +12,7 @@
12
12
  #
13
13
  # =end
14
14
 
15
+ require_relative 'demo_listener'
15
16
  require_relative 'logging'
16
17
  require_relative 'server/argument_parser'
17
18
  require_relative 'server/server'
@@ -20,7 +21,8 @@ require_relative 'server/server'
20
21
  module Server
21
22
  def main(args = parse_arguments)
22
23
  Logging.log_level = args[:log_level]
23
- ::Server::Server.new(args, ::Server::Demo.new).run
24
+ demo_handler = ::Server::Demo.new(args)
25
+ ::Server::Server.new(args, demo_handler).run
24
26
  rescue Interrupt => e
25
27
  warn format("\r%<class>s", class: e.class)
26
28
  exit
@@ -31,6 +33,4 @@ module Server
31
33
  end
32
34
  end
33
35
 
34
- require_relative 'demo_listener'
35
-
36
36
  Object.new.extend(Server).main if $PROGRAM_NAME == __FILE__
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tcp-server
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.5
4
+ version: 1.2.0
5
5
  platform: java
6
6
  authors:
7
7
  - Nels Nelson
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-04-13 00:00:00.000000000 Z
11
+ date: 2024-04-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -74,6 +74,7 @@ files:
74
74
  - lib/server/argument_parser.rb
75
75
  - lib/server/channel_initializer.rb
76
76
  - lib/server/config.rb
77
+ - lib/server/default_handler.rb
77
78
  - lib/server/instance_methods.rb
78
79
  - lib/server/listenable.rb
79
80
  - lib/server/message_handler.rb