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 +4 -4
- data/lib/demo_listener.rb +5 -10
- data/lib/server/config.rb +2 -2
- data/lib/server/default_handler.rb +43 -0
- data/lib/server/instance_methods.rb +5 -8
- data/lib/server/server.rb +4 -15
- data/lib/server/version.rb +1 -1
- data/lib/server.rb +3 -3
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e929584365fe9f6f2f5acd5730590308d9ccf84b7cafc7cb611fe80290014891
|
4
|
+
data.tar.gz: bd0148f3ebe104cc69dd4ed9f37dd68733c3a9e9dcca711184a5dc5e940005b8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
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
|
25
|
-
|
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 ||=
|
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
|
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
|
-
|
30
|
+
log.trace "##{__method__} handlers: #{handlers}"
|
31
|
+
configure_handlers(*(handlers.empty? ? [self] : handlers), &block)
|
31
32
|
ensure
|
32
|
-
|
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
|
data/lib/server/version.rb
CHANGED
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::
|
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.
|
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-
|
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
|