tcp-server 1.0.2-java → 1.0.3-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/README.md +18 -5
- data/lib/demo_listener.rb +31 -0
- data/lib/server/channel_initializer.rb +4 -4
- data/lib/server/instance_methods.rb +6 -2
- data/lib/server/server.rb +1 -1
- data/lib/server/version.rb +1 -1
- data/lib/server.rb +2 -16
- data/lib/tcp-server.rb +13 -0
- data/lib/tcp_server.rb +13 -0
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ee220a0690f6cfd1a8adeb7a7147f93755082ee6e947f2ee9823cea6e4ddda2b
|
4
|
+
data.tar.gz: d9ef67e6d0bf3e8496d4c0b73b47bcb2cca158706d38de245cd5cbfa15db6ac1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 56326ddbedd68dd85915bb3616ef02204a17b36643224106f72f134fabc723e29de06baae753e08821af4c85d943fbadf39f30a743d6150107d8e2756400bae5
|
7
|
+
data.tar.gz: 807ba39230059812a6e6d0075ec41029dd3f5da11234e13705e46a04f66ed45f6e60b12f29f24a10fc9d03294a9be2b348e0840fe95ad6607f95a4caa267cb42
|
data/README.md
CHANGED
@@ -93,6 +93,15 @@ bundle exec rake
|
|
93
93
|
|
94
94
|
To publish the gem after first verifying that the built gem works, execute:
|
95
95
|
|
96
|
+
```sh
|
97
|
+
version=$(ruby -r lib/server/version -I . -e 'puts ::Server::VERSION')
|
98
|
+
git tag --annotate --message "Release ${version}" "${version}-release"
|
99
|
+
git push origin --tags
|
100
|
+
```
|
101
|
+
|
102
|
+
|
103
|
+
Or manually, if necessary:
|
104
|
+
|
96
105
|
```sh
|
97
106
|
bundle exec rake verify
|
98
107
|
bundle exec rake publish
|
@@ -113,8 +122,8 @@ bundle exec rake clean clobber
|
|
113
122
|
Here is a bird's-eye view of the project layout.
|
114
123
|
|
115
124
|
```sh
|
116
|
-
# date && tree
|
117
|
-
|
125
|
+
# date && tree -I "logs|vendor|tmp"
|
126
|
+
Thu Jun 16 00:03:23 CDT 2022
|
118
127
|
.
|
119
128
|
├── Dockerfile
|
120
129
|
├── Gemfile
|
@@ -127,6 +136,7 @@ Wed May 4 22:41:11 CDT 2022
|
|
127
136
|
│ └── tcp_server
|
128
137
|
├── lib
|
129
138
|
│ ├── client.rb
|
139
|
+
│ ├── demo_listener.rb
|
130
140
|
│ ├── log.rb
|
131
141
|
│ ├── server
|
132
142
|
│ │ ├── argument_parser.rb
|
@@ -139,17 +149,20 @@ Wed May 4 22:41:11 CDT 2022
|
|
139
149
|
│ │ ├── server.rb
|
140
150
|
│ │ ├── shutdown_hook.rb
|
141
151
|
│ │ └── version.rb
|
142
|
-
│
|
143
|
-
├──
|
152
|
+
│ ├── server.rb
|
153
|
+
│ ├── tcp-server.rb
|
154
|
+
│ └── tcp_server.rb
|
144
155
|
├── spec
|
145
156
|
│ ├── spec_helper.rb
|
146
157
|
│ ├── test_spec.rb
|
147
158
|
│ └── verify
|
148
159
|
│ └── verify_spec.rb
|
160
|
+
├── tcp-server-1.0.2-java.gem
|
149
161
|
├── tcp-server-jruby.gemspec
|
162
|
+
├── tcp_server.png
|
150
163
|
└── tcp_server.rb
|
151
164
|
|
152
|
-
|
165
|
+
5 directories, 31 files
|
153
166
|
```
|
154
167
|
|
155
168
|
## CI linting
|
@@ -0,0 +1,31 @@
|
|
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-2022 but freely usable (see license)
|
10
|
+
#
|
11
|
+
# =end
|
12
|
+
|
13
|
+
# The Server module
|
14
|
+
module Server
|
15
|
+
# The Demo class
|
16
|
+
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
|
23
|
+
|
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()
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
# module Server
|
@@ -36,17 +36,17 @@ module Server
|
|
36
36
|
# constant definitions could not be used.
|
37
37
|
Decoder = StringDecoder.new
|
38
38
|
Encoder = StringEncoder.new
|
39
|
-
attr_accessor :
|
39
|
+
attr_accessor :user_handlers
|
40
40
|
attr_reader :options
|
41
41
|
|
42
42
|
def initialize(options = {})
|
43
43
|
super()
|
44
44
|
@options = options
|
45
|
-
@
|
45
|
+
@user_handlers = []
|
46
46
|
end
|
47
47
|
|
48
48
|
def <<(handler)
|
49
|
-
@
|
49
|
+
@user_handlers << handler
|
50
50
|
end
|
51
51
|
|
52
52
|
def initChannel(channel)
|
@@ -64,7 +64,7 @@ module Server
|
|
64
64
|
protected
|
65
65
|
|
66
66
|
def add_user_handlers(pipeline)
|
67
|
-
@
|
67
|
+
@user_handlers.each do |handler|
|
68
68
|
case handler
|
69
69
|
when Class then pipeline.addLast(handler.new)
|
70
70
|
when Proc then pipeline.addLast(Server::MessageHandler.new(&handler))
|
@@ -71,8 +71,7 @@ module Server
|
|
71
71
|
rescue java.net.SocketException => e
|
72
72
|
raise "Socket error: #{e.message}: #{options[:host]}:#{port}"
|
73
73
|
ensure
|
74
|
-
|
75
|
-
worker_group&.shutdownGracefully()
|
74
|
+
stop
|
76
75
|
end
|
77
76
|
# rubocop: enable Metrics/AbcSize
|
78
77
|
# rubocop: enable Metrics/MethodLength
|
@@ -82,6 +81,11 @@ module Server
|
|
82
81
|
::Server::Channels.close().awaitUninterruptibly()
|
83
82
|
end
|
84
83
|
|
84
|
+
def stop
|
85
|
+
boss_group&.shutdownGracefully()
|
86
|
+
worker_group&.shutdownGracefully()
|
87
|
+
end
|
88
|
+
|
85
89
|
def <<(handler)
|
86
90
|
channel_initializer << handler
|
87
91
|
end
|
data/lib/server/server.rb
CHANGED
data/lib/server/version.rb
CHANGED
data/lib/server.rb
CHANGED
@@ -20,22 +20,6 @@ require_relative 'server/server'
|
|
20
20
|
module Server
|
21
21
|
InterruptTemplate = "\r%<class>s".freeze
|
22
22
|
|
23
|
-
# The Demo class
|
24
|
-
class Demo
|
25
|
-
def channel_active(ctx)
|
26
|
-
::Server.log.info "Channel active: #{ctx.channel}"
|
27
|
-
response = 'Hello, world!'
|
28
|
-
log.trace "Sending response: #{response.inspect}"
|
29
|
-
ctx.channel.writeAndFlush("#{response}\n")
|
30
|
-
end
|
31
|
-
|
32
|
-
def exception_caught(_ctx, cause)
|
33
|
-
::Server.log.error "Exception caught: #{cause}"
|
34
|
-
cause.backtrace.each { |t| ::Server.log.error t }
|
35
|
-
ctx.close()
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
23
|
# rubocop: disable Metrics/AbcSize
|
40
24
|
# rubocop: disable Metrics/MethodLength
|
41
25
|
def main(args = parse_arguments)
|
@@ -56,4 +40,6 @@ module Server
|
|
56
40
|
end
|
57
41
|
# module Server
|
58
42
|
|
43
|
+
require_relative 'demo_listener'
|
44
|
+
|
59
45
|
Object.new.extend(::Server).main if $PROGRAM_NAME == __FILE__
|
data/lib/tcp-server.rb
ADDED
data/lib/tcp_server.rb
ADDED
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.3
|
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-
|
11
|
+
date: 2022-06-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -107,6 +107,7 @@ files:
|
|
107
107
|
- Rakefile
|
108
108
|
- exe/tcp_server
|
109
109
|
- lib/client.rb
|
110
|
+
- lib/demo_listener.rb
|
110
111
|
- lib/log.rb
|
111
112
|
- lib/server.rb
|
112
113
|
- lib/server/argument_parser.rb
|
@@ -119,6 +120,8 @@ files:
|
|
119
120
|
- lib/server/server.rb
|
120
121
|
- lib/server/shutdown_hook.rb
|
121
122
|
- lib/server/version.rb
|
123
|
+
- lib/tcp-server.rb
|
124
|
+
- lib/tcp_server.rb
|
122
125
|
homepage: https://rubygems.org/gems/tcp-server-jruby
|
123
126
|
licenses:
|
124
127
|
- MIT
|
@@ -144,5 +147,5 @@ requirements: []
|
|
144
147
|
rubygems_version: 3.2.29
|
145
148
|
signing_key:
|
146
149
|
specification_version: 4
|
147
|
-
summary: Server for JRuby packaged as a gem.
|
150
|
+
summary: TCP Server for JRuby packaged as a gem.
|
148
151
|
test_files: []
|