tcp-server 1.1.5-java → 1.2.0-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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