tcp-server 1.0.5-java → 1.0.6-java
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/server/channel_initializer.rb +11 -3
- data/lib/server/instance_methods.rb +11 -5
- data/lib/server/modular_handler.rb +8 -11
- data/lib/server/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: adb40677b97f1b1ce0fb1fad9308d527d3086c927044f5e71d1e378c5e0d8e25
|
4
|
+
data.tar.gz: 7e489022262138faae081772672bb99ca5eef415f943ff2b9cf96120390cb984
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1d8afb5280d5a8bfe5dd234dcb5f0dfb26558543074b917de3c39bd08cd5331319a32bd764400d7183fa8814d8b978a57532306dfb2b7464c28cc58aacc5c732
|
7
|
+
data.tar.gz: 8a6c94c3ee130ea33a8c4e95009b75414d9622916b4277a38664f3f08d3f238d787941c9c0e7ed5c566a2c3efd2b2d064dda83f0cdce513fd95036c08c959e09
|
@@ -30,7 +30,6 @@ module Server
|
|
30
30
|
|
31
31
|
# The ChannelInitializer class
|
32
32
|
class ChannelInitializer < Java::io.netty.channel.ChannelInitializer
|
33
|
-
DefaultServerHandler = ModularHandler.new
|
34
33
|
FrameDecoderBufferBytesSize = 8192
|
35
34
|
# The encoder and decoder are sharable. If they were not, then
|
36
35
|
# constant definitions could not be used.
|
@@ -39,8 +38,9 @@ module Server
|
|
39
38
|
attr_accessor :user_handlers
|
40
39
|
attr_reader :options
|
41
40
|
|
42
|
-
def initialize(options = {})
|
41
|
+
def initialize(channel_group, options = {})
|
43
42
|
super()
|
43
|
+
@channel_group = channel_group
|
44
44
|
@options = options
|
45
45
|
@user_handlers = []
|
46
46
|
end
|
@@ -58,7 +58,15 @@ module Server
|
|
58
58
|
Encoder
|
59
59
|
)
|
60
60
|
add_user_handlers(pipeline)
|
61
|
-
pipeline.addLast(
|
61
|
+
pipeline.addLast(default_handler)
|
62
|
+
end
|
63
|
+
|
64
|
+
def default_handler
|
65
|
+
@default_handler ||= ::Server::ModularHandler.new(@channel_group)
|
66
|
+
end
|
67
|
+
|
68
|
+
def add_listener(listener)
|
69
|
+
default_handler.add_listener(listener)
|
62
70
|
end
|
63
71
|
|
64
72
|
protected
|
@@ -20,9 +20,11 @@ require_relative 'shutdown_hook'
|
|
20
20
|
module Server
|
21
21
|
java_import Java::io.netty.bootstrap.ServerBootstrap
|
22
22
|
java_import Java::io.netty.channel.ChannelOption
|
23
|
+
java_import Java::io.netty.channel.group.DefaultChannelGroup
|
23
24
|
java_import Java::io.netty.channel.nio.NioEventLoopGroup
|
24
25
|
java_import Java::io.netty.handler.logging.LogLevel
|
25
26
|
java_import Java::io.netty.handler.logging.LoggingHandler
|
27
|
+
java_import Java::io.netty.util.concurrent.GlobalEventExecutor
|
26
28
|
|
27
29
|
# The InstanceMethods module
|
28
30
|
module InstanceMethods
|
@@ -41,7 +43,7 @@ module Server
|
|
41
43
|
end
|
42
44
|
|
43
45
|
def channel_initializer
|
44
|
-
@channel_initializer ||= ::Server::ChannelInitializer.new(@options)
|
46
|
+
@channel_initializer ||= ::Server::ChannelInitializer.new(channel_group, @options)
|
45
47
|
end
|
46
48
|
|
47
49
|
def boss_group
|
@@ -52,6 +54,10 @@ module Server
|
|
52
54
|
@worker_group ||= NioEventLoopGroup.new
|
53
55
|
end
|
54
56
|
|
57
|
+
def channel_group
|
58
|
+
@channel_group ||= DefaultChannelGroup.new('server_channels', GlobalEventExecutor::INSTANCE)
|
59
|
+
end
|
60
|
+
|
55
61
|
def logging_handler
|
56
62
|
@logging_handler ||= LoggingHandler.new(LogLevel::INFO)
|
57
63
|
end
|
@@ -60,7 +66,7 @@ module Server
|
|
60
66
|
# rubocop: disable Metrics/MethodLength
|
61
67
|
def run(port = @options[:port])
|
62
68
|
channel = bootstrap.bind(port).sync().channel()
|
63
|
-
|
69
|
+
channel_group.add(channel)
|
64
70
|
::Server::ShutdownHook.new(self)
|
65
71
|
log.info "Listening on #{channel.local_address}"
|
66
72
|
channel.closeFuture().sync()
|
@@ -77,8 +83,8 @@ module Server
|
|
77
83
|
# rubocop: enable Metrics/MethodLength
|
78
84
|
|
79
85
|
def shutdown
|
80
|
-
|
81
|
-
|
86
|
+
channel_group.disconnect().awaitUninterruptibly()
|
87
|
+
channel_group.close().awaitUninterruptibly()
|
82
88
|
end
|
83
89
|
|
84
90
|
def stop
|
@@ -91,7 +97,7 @@ module Server
|
|
91
97
|
end
|
92
98
|
|
93
99
|
def add_listener(listener)
|
94
|
-
|
100
|
+
channel_initializer.add_listener(listener)
|
95
101
|
end
|
96
102
|
end
|
97
103
|
# module ServerInstanceMethods
|
@@ -18,19 +18,16 @@ require_relative 'listenable'
|
|
18
18
|
# The Server module
|
19
19
|
module Server
|
20
20
|
java_import Java::io.netty.channel.SimpleChannelInboundHandler
|
21
|
-
java_import Java::io.netty.channel.group.DefaultChannelGroup
|
22
|
-
java_import Java::io.netty.util.concurrent.GlobalEventExecutor
|
23
|
-
|
24
|
-
# rubocop: disable Style/IfUnlessModifier
|
25
|
-
unless defined?(::Server::Channels)
|
26
|
-
Channels = DefaultChannelGroup.new('channels', GlobalEventExecutor::INSTANCE)
|
27
|
-
end
|
28
|
-
# rubocop: enable Style/IfUnlessModifier
|
29
21
|
|
30
22
|
# The ModularHandler class notifies listeners about events.
|
31
23
|
class ModularHandler < SimpleChannelInboundHandler
|
32
24
|
include ::Server::Listenable
|
33
25
|
|
26
|
+
def initialize(channel_group)
|
27
|
+
super()
|
28
|
+
@channel_group = channel_group
|
29
|
+
end
|
30
|
+
|
34
31
|
def isSharable
|
35
32
|
true
|
36
33
|
end
|
@@ -49,7 +46,7 @@ module Server
|
|
49
46
|
|
50
47
|
def channelActive(ctx)
|
51
48
|
log.trace "##{__method__} channel: #{ctx.channel}"
|
52
|
-
|
49
|
+
@channel_group.add(ctx.channel)
|
53
50
|
notify :channel_active, ctx
|
54
51
|
super(ctx)
|
55
52
|
end
|
@@ -107,10 +104,10 @@ module Server
|
|
107
104
|
super(ctx, cause) if listeners.nil? || listeners.empty?
|
108
105
|
end
|
109
106
|
|
110
|
-
|
107
|
+
IdentifierTemplate = '#<%<class>s:0x%<id>s>'.freeze
|
111
108
|
|
112
109
|
def to_s
|
113
|
-
format(
|
110
|
+
format(IdentifierTemplate, class: self.class.name, id: object_id.to_s(16))
|
114
111
|
end
|
115
112
|
alias inspect to_s
|
116
113
|
end
|
data/lib/server/version.rb
CHANGED
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.0.
|
4
|
+
version: 1.0.6
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Nels Nelson
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-06-
|
11
|
+
date: 2022-06-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|