tipi 0.41 → 0.46
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/.github/FUNDING.yml +1 -0
- data/.github/workflows/test.yml +3 -1
- data/.gitignore +3 -1
- data/CHANGELOG.md +34 -0
- data/Gemfile +7 -1
- data/Gemfile.lock +53 -33
- data/README.md +184 -8
- data/Rakefile +1 -7
- data/benchmarks/bm_http1_parser.rb +85 -0
- data/bin/benchmark +37 -0
- data/bin/h1pd +6 -0
- data/bin/tipi +3 -21
- data/bm.png +0 -0
- data/df/agent.rb +1 -1
- data/df/sample_agent.rb +2 -2
- data/df/server.rb +3 -1
- data/df/server_utils.rb +48 -46
- data/examples/full_service.rb +13 -0
- data/examples/hello.rb +5 -0
- data/examples/hello.ru +3 -3
- data/examples/http1_parser.rb +10 -8
- data/examples/http_server.js +1 -1
- data/examples/http_server.rb +4 -1
- data/examples/http_server_graceful.rb +1 -1
- data/examples/https_server.rb +41 -15
- data/examples/rack_server_forked.rb +26 -0
- data/examples/rack_server_https_forked.rb +1 -1
- data/examples/servername_cb.rb +37 -0
- data/examples/websocket_demo.rb +1 -1
- data/lib/tipi/acme.rb +320 -0
- data/lib/tipi/cli.rb +93 -0
- data/lib/tipi/config_dsl.rb +13 -13
- data/lib/tipi/configuration.rb +2 -2
- data/lib/tipi/controller/bare_polyphony.rb +0 -0
- data/lib/tipi/controller/bare_stock.rb +10 -0
- data/lib/tipi/controller/extensions.rb +37 -0
- data/lib/tipi/controller/stock_http1_adapter.rb +15 -0
- data/lib/tipi/controller/web_polyphony.rb +353 -0
- data/lib/tipi/controller/web_stock.rb +635 -0
- data/lib/tipi/controller.rb +12 -0
- data/lib/tipi/digital_fabric/agent.rb +5 -5
- data/lib/tipi/digital_fabric/agent_proxy.rb +15 -8
- data/lib/tipi/digital_fabric/executive.rb +7 -3
- data/lib/tipi/digital_fabric/protocol.rb +3 -3
- data/lib/tipi/digital_fabric/request_adapter.rb +0 -4
- data/lib/tipi/digital_fabric/service.rb +17 -18
- data/lib/tipi/handler.rb +2 -2
- data/lib/tipi/http1_adapter.rb +85 -124
- data/lib/tipi/http2_adapter.rb +29 -16
- data/lib/tipi/http2_stream.rb +52 -57
- data/lib/tipi/rack_adapter.rb +2 -2
- data/lib/tipi/response_extensions.rb +1 -1
- data/lib/tipi/supervisor.rb +75 -0
- data/lib/tipi/version.rb +1 -1
- data/lib/tipi/websocket.rb +3 -3
- data/lib/tipi.rb +9 -7
- data/test/coverage.rb +2 -2
- data/test/helper.rb +60 -12
- data/test/test_http_server.rb +14 -41
- data/test/test_request.rb +2 -29
- data/tipi.gemspec +10 -10
- metadata +80 -54
- data/examples/automatic_certificate.rb +0 -193
- data/ext/tipi/extconf.rb +0 -12
- data/ext/tipi/http1_parser.c +0 -534
- data/ext/tipi/http1_parser.h +0 -18
- data/ext/tipi/tipi_ext.c +0 -5
- data/lib/tipi/http1_adapter_new.rb +0 -293
data/test/test_http_server.rb
CHANGED
@@ -4,38 +4,11 @@ require_relative 'helper'
|
|
4
4
|
require 'tipi'
|
5
5
|
|
6
6
|
class String
|
7
|
-
def
|
7
|
+
def crlf_lines
|
8
8
|
gsub "\n", "\r\n"
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
12
|
-
class IO
|
13
|
-
# Creates two mockup sockets for simulating server-client communication
|
14
|
-
def self.server_client_mockup
|
15
|
-
server_in, client_out = IO.pipe
|
16
|
-
client_in, server_out = IO.pipe
|
17
|
-
|
18
|
-
server_connection = mockup_connection(server_in, server_out, client_out)
|
19
|
-
client_connection = mockup_connection(client_in, client_out, server_out)
|
20
|
-
|
21
|
-
[server_connection, client_connection]
|
22
|
-
end
|
23
|
-
|
24
|
-
def self.mockup_connection(input, output, output2)
|
25
|
-
eg(
|
26
|
-
:read => ->(*args) { input.read(*args) },
|
27
|
-
:read_loop => ->(*args, &block) { input.read_loop(*args, &block) },
|
28
|
-
:recv_loop => ->(*args, &block) { input.read_loop(*args, &block) },
|
29
|
-
:readpartial => ->(*args) { input.readpartial(*args) },
|
30
|
-
:recv => ->(*args) { input.readpartial(*args) },
|
31
|
-
:<< => ->(*args) { output.write(*args) },
|
32
|
-
:write => ->(*args) { output.write(*args) },
|
33
|
-
:close => -> { output.close },
|
34
|
-
:eof? => -> { output2.closed? }
|
35
|
-
)
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
12
|
class HTTP1ServerTest < MiniTest::Test
|
40
13
|
def teardown
|
41
14
|
@server&.interrupt if @server&.alive?
|
@@ -60,7 +33,7 @@ class HTTP1ServerTest < MiniTest::Test
|
|
60
33
|
connection << "GET / HTTP/1.0\r\n\r\n"
|
61
34
|
|
62
35
|
response = connection.readpartial(8192)
|
63
|
-
expected = <<~HTTP.chomp.
|
36
|
+
expected = <<~HTTP.chomp.crlf_lines.chomp
|
64
37
|
HTTP/1.1 200
|
65
38
|
Content-Length: 13
|
66
39
|
|
@@ -78,7 +51,7 @@ class HTTP1ServerTest < MiniTest::Test
|
|
78
51
|
connection << "GET / HTTP/1.1\r\n\r\n"
|
79
52
|
|
80
53
|
response = connection.readpartial(8192)
|
81
|
-
expected = <<~HTTP.
|
54
|
+
expected = <<~HTTP.crlf_lines.chomp
|
82
55
|
HTTP/1.1 200
|
83
56
|
Content-Length: 13
|
84
57
|
|
@@ -100,7 +73,7 @@ class HTTP1ServerTest < MiniTest::Test
|
|
100
73
|
connection << "GET / HTTP/1.1\r\n\r\n"
|
101
74
|
response = connection.readpartial(8192)
|
102
75
|
assert !connection.eof?
|
103
|
-
expected = <<~HTTP.
|
76
|
+
expected = <<~HTTP.crlf_lines.chomp
|
104
77
|
HTTP/1.1 200
|
105
78
|
Content-Length: 2
|
106
79
|
|
@@ -127,7 +100,7 @@ class HTTP1ServerTest < MiniTest::Test
|
|
127
100
|
sleep 0.01
|
128
101
|
response = connection.readpartial(8192)
|
129
102
|
|
130
|
-
expected = <<~HTTP.
|
103
|
+
expected = <<~HTTP.crlf_lines.chomp
|
131
104
|
HTTP/1.1 200
|
132
105
|
Content-Length: 13
|
133
106
|
|
@@ -152,7 +125,7 @@ class HTTP1ServerTest < MiniTest::Test
|
|
152
125
|
req.finish
|
153
126
|
end
|
154
127
|
|
155
|
-
connection << <<~HTTP.
|
128
|
+
connection << <<~HTTP.crlf_lines
|
156
129
|
POST / HTTP/1.1
|
157
130
|
Transfer-Encoding: chunked
|
158
131
|
|
@@ -178,7 +151,7 @@ class HTTP1ServerTest < MiniTest::Test
|
|
178
151
|
|
179
152
|
response = connection.readpartial(8192)
|
180
153
|
|
181
|
-
expected = <<~HTTP.
|
154
|
+
expected = <<~HTTP.crlf_lines
|
182
155
|
HTTP/1.1 200
|
183
156
|
Transfer-Encoding: chunked
|
184
157
|
|
@@ -199,7 +172,7 @@ class HTTP1ServerTest < MiniTest::Test
|
|
199
172
|
upgrade: {
|
200
173
|
echo: lambda do |adapter, _headers|
|
201
174
|
conn = adapter.conn
|
202
|
-
conn << <<~HTTP.
|
175
|
+
conn << <<~HTTP.crlf_lines
|
203
176
|
HTTP/1.1 101 Switching Protocols
|
204
177
|
Upgrade: echo
|
205
178
|
Connection: Upgrade
|
@@ -219,7 +192,7 @@ class HTTP1ServerTest < MiniTest::Test
|
|
219
192
|
connection << "GET / HTTP/1.1\r\n\r\n"
|
220
193
|
response = connection.readpartial(8192)
|
221
194
|
assert !connection.eof?
|
222
|
-
expected = <<~HTTP.
|
195
|
+
expected = <<~HTTP.crlf_lines.chomp
|
223
196
|
HTTP/1.1 200
|
224
197
|
Content-Length: 2
|
225
198
|
|
@@ -227,7 +200,7 @@ class HTTP1ServerTest < MiniTest::Test
|
|
227
200
|
HTTP
|
228
201
|
assert_equal(expected, response)
|
229
202
|
|
230
|
-
connection << <<~HTTP.
|
203
|
+
connection << <<~HTTP.crlf_lines
|
231
204
|
GET / HTTP/1.1
|
232
205
|
Upgrade: echo
|
233
206
|
Connection: upgrade
|
@@ -237,7 +210,7 @@ class HTTP1ServerTest < MiniTest::Test
|
|
237
210
|
snooze
|
238
211
|
response = connection.readpartial(8192)
|
239
212
|
assert !connection.eof?
|
240
|
-
expected = <<~HTTP.
|
213
|
+
expected = <<~HTTP.crlf_lines
|
241
214
|
HTTP/1.1 101 Switching Protocols
|
242
215
|
Upgrade: echo
|
243
216
|
Connection: Upgrade
|
@@ -255,7 +228,7 @@ class HTTP1ServerTest < MiniTest::Test
|
|
255
228
|
|
256
229
|
connection.close
|
257
230
|
assert !done
|
258
|
-
|
231
|
+
|
259
232
|
sleep 0.01
|
260
233
|
assert done
|
261
234
|
end
|
@@ -278,7 +251,7 @@ class HTTP1ServerTest < MiniTest::Test
|
|
278
251
|
count = 0
|
279
252
|
|
280
253
|
connection << "GET / HTTP/1.1\r\n\r\n"
|
281
|
-
|
254
|
+
|
282
255
|
while (data = connection.read(chunk_size))
|
283
256
|
response << data
|
284
257
|
count += 1
|
@@ -286,7 +259,7 @@ class HTTP1ServerTest < MiniTest::Test
|
|
286
259
|
end
|
287
260
|
|
288
261
|
chunks = "#{chunk_size.to_s(16)}\n#{'*' * chunk_size}\n" * chunk_count
|
289
|
-
expected = <<~HTTP.
|
262
|
+
expected = <<~HTTP.crlf_lines
|
290
263
|
HTTP/1.1 200
|
291
264
|
Transfer-Encoding: chunked
|
292
265
|
|
data/test/test_request.rb
CHANGED
@@ -9,33 +9,6 @@ class String
|
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
12
|
-
class IO
|
13
|
-
# Creates two mockup sockets for simulating server-client communication
|
14
|
-
def self.server_client_mockup
|
15
|
-
server_in, client_out = IO.pipe
|
16
|
-
client_in, server_out = IO.pipe
|
17
|
-
|
18
|
-
server_connection = mockup_connection(server_in, server_out, client_out)
|
19
|
-
client_connection = mockup_connection(client_in, client_out, server_out)
|
20
|
-
|
21
|
-
[server_connection, client_connection]
|
22
|
-
end
|
23
|
-
|
24
|
-
def self.mockup_connection(input, output, output2)
|
25
|
-
eg(
|
26
|
-
:read => ->(*args) { input.read(*args) },
|
27
|
-
:read_loop => ->(*args, &block) { input.read_loop(*args, &block) },
|
28
|
-
:recv_loop => ->(*args, &block) { input.read_loop(*args, &block) },
|
29
|
-
:readpartial => ->(*args) { input.readpartial(*args) },
|
30
|
-
:recv => ->(*args) { input.readpartial(*args) },
|
31
|
-
:<< => ->(*args) { output.write(*args) },
|
32
|
-
:write => ->(*args) { output.write(*args) },
|
33
|
-
:close => -> { output.close },
|
34
|
-
:eof? => -> { output2.closed? }
|
35
|
-
)
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
12
|
class RequestHeadersTest < MiniTest::Test
|
40
13
|
def teardown
|
41
14
|
@server&.interrupt if @server&.alive?
|
@@ -65,8 +38,8 @@ class RequestHeadersTest < MiniTest::Test
|
|
65
38
|
assert_kind_of Qeweney::Request, req
|
66
39
|
assert_equal 'blah.com', req.headers['host']
|
67
40
|
assert_equal 'bar', req.headers['foo']
|
68
|
-
assert_equal ['1', '
|
69
|
-
assert_equal '
|
41
|
+
assert_equal ['1', '2', '3'], req.headers['hi']
|
42
|
+
assert_equal 'GET', req.headers[':method']
|
70
43
|
assert_equal '/titi', req.headers[':path']
|
71
44
|
end
|
72
45
|
|
data/tipi.gemspec
CHANGED
@@ -14,30 +14,30 @@ Gem::Specification.new do |s|
|
|
14
14
|
}
|
15
15
|
s.rdoc_options = ["--title", "tipi", "--main", "README.md"]
|
16
16
|
s.extra_rdoc_files = ["README.md"]
|
17
|
-
s.extensions = ["ext/tipi/extconf.rb"]
|
18
17
|
s.require_paths = ["lib"]
|
19
18
|
s.required_ruby_version = '>= 2.6'
|
20
19
|
|
21
20
|
s.executables = ['tipi']
|
22
21
|
|
23
|
-
s.add_runtime_dependency 'polyphony', '~>0.
|
24
|
-
s.add_runtime_dependency '
|
25
|
-
|
26
|
-
s.add_runtime_dependency '
|
27
|
-
s.add_runtime_dependency '
|
22
|
+
s.add_runtime_dependency 'polyphony', '~>0.71'
|
23
|
+
s.add_runtime_dependency 'ever', '~>0.1'
|
24
|
+
s.add_runtime_dependency 'qeweney', '~>0.14'
|
25
|
+
s.add_runtime_dependency 'extralite', '~>1.2'
|
26
|
+
s.add_runtime_dependency 'h1p', '~>0.2'
|
27
|
+
|
28
|
+
s.add_runtime_dependency 'http-2', '~>0.11'
|
28
29
|
s.add_runtime_dependency 'rack', '>=2.0.8', '<2.3.0'
|
29
30
|
s.add_runtime_dependency 'websocket', '~>1.2.8'
|
30
31
|
s.add_runtime_dependency 'acme-client', '~>2.0.8'
|
32
|
+
s.add_runtime_dependency 'localhost', '~>1.1.4'
|
31
33
|
|
32
34
|
# for digital fabric
|
33
35
|
s.add_runtime_dependency 'msgpack', '~>1.4.2'
|
34
36
|
|
35
|
-
s.add_development_dependency 'rake
|
36
|
-
s.add_development_dependency 'rake', '~>12.3.3'
|
37
|
-
s.add_development_dependency 'localhost', '~>1.1.4'
|
37
|
+
s.add_development_dependency 'rake', '~>13.0.6'
|
38
38
|
s.add_development_dependency 'minitest', '~>5.11.3'
|
39
|
-
s.add_development_dependency 'minitest-reporters', '~>1.4.2'
|
40
39
|
s.add_development_dependency 'simplecov', '~>0.17.1'
|
40
|
+
s.add_development_dependency 'memory_profiler', '~>1.0.0'
|
41
41
|
|
42
42
|
s.add_development_dependency 'cuba', '~>3.9.3'
|
43
43
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tipi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.46'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sharon Rosner
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-02-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: polyphony
|
@@ -16,56 +16,84 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0.
|
19
|
+
version: '0.71'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0.
|
26
|
+
version: '0.71'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: ever
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0.1'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0.1'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: qeweney
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
30
44
|
requirements:
|
31
45
|
- - "~>"
|
32
46
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0.
|
47
|
+
version: '0.14'
|
34
48
|
type: :runtime
|
35
49
|
prerelease: false
|
36
50
|
version_requirements: !ruby/object:Gem::Requirement
|
37
51
|
requirements:
|
38
52
|
- - "~>"
|
39
53
|
- !ruby/object:Gem::Version
|
40
|
-
version: '0.
|
54
|
+
version: '0.14'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: extralite
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.2'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.2'
|
41
69
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
70
|
+
name: h1p
|
43
71
|
requirement: !ruby/object:Gem::Requirement
|
44
72
|
requirements:
|
45
73
|
- - "~>"
|
46
74
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.
|
75
|
+
version: '0.2'
|
48
76
|
type: :runtime
|
49
77
|
prerelease: false
|
50
78
|
version_requirements: !ruby/object:Gem::Requirement
|
51
79
|
requirements:
|
52
80
|
- - "~>"
|
53
81
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.
|
82
|
+
version: '0.2'
|
55
83
|
- !ruby/object:Gem::Dependency
|
56
84
|
name: http-2
|
57
85
|
requirement: !ruby/object:Gem::Requirement
|
58
86
|
requirements:
|
59
87
|
- - "~>"
|
60
88
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0.
|
89
|
+
version: '0.11'
|
62
90
|
type: :runtime
|
63
91
|
prerelease: false
|
64
92
|
version_requirements: !ruby/object:Gem::Requirement
|
65
93
|
requirements:
|
66
94
|
- - "~>"
|
67
95
|
- !ruby/object:Gem::Version
|
68
|
-
version: 0.
|
96
|
+
version: '0.11'
|
69
97
|
- !ruby/object:Gem::Dependency
|
70
98
|
name: rack
|
71
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -115,61 +143,47 @@ dependencies:
|
|
115
143
|
- !ruby/object:Gem::Version
|
116
144
|
version: 2.0.8
|
117
145
|
- !ruby/object:Gem::Dependency
|
118
|
-
name:
|
146
|
+
name: localhost
|
119
147
|
requirement: !ruby/object:Gem::Requirement
|
120
148
|
requirements:
|
121
149
|
- - "~>"
|
122
150
|
- !ruby/object:Gem::Version
|
123
|
-
version: 1.4
|
151
|
+
version: 1.1.4
|
124
152
|
type: :runtime
|
125
153
|
prerelease: false
|
126
154
|
version_requirements: !ruby/object:Gem::Requirement
|
127
155
|
requirements:
|
128
156
|
- - "~>"
|
129
157
|
- !ruby/object:Gem::Version
|
130
|
-
version: 1.4
|
131
|
-
- !ruby/object:Gem::Dependency
|
132
|
-
name: rake-compiler
|
133
|
-
requirement: !ruby/object:Gem::Requirement
|
134
|
-
requirements:
|
135
|
-
- - '='
|
136
|
-
- !ruby/object:Gem::Version
|
137
|
-
version: 1.1.1
|
138
|
-
type: :development
|
139
|
-
prerelease: false
|
140
|
-
version_requirements: !ruby/object:Gem::Requirement
|
141
|
-
requirements:
|
142
|
-
- - '='
|
143
|
-
- !ruby/object:Gem::Version
|
144
|
-
version: 1.1.1
|
158
|
+
version: 1.1.4
|
145
159
|
- !ruby/object:Gem::Dependency
|
146
|
-
name:
|
160
|
+
name: msgpack
|
147
161
|
requirement: !ruby/object:Gem::Requirement
|
148
162
|
requirements:
|
149
163
|
- - "~>"
|
150
164
|
- !ruby/object:Gem::Version
|
151
|
-
version:
|
152
|
-
type: :
|
165
|
+
version: 1.4.2
|
166
|
+
type: :runtime
|
153
167
|
prerelease: false
|
154
168
|
version_requirements: !ruby/object:Gem::Requirement
|
155
169
|
requirements:
|
156
170
|
- - "~>"
|
157
171
|
- !ruby/object:Gem::Version
|
158
|
-
version:
|
172
|
+
version: 1.4.2
|
159
173
|
- !ruby/object:Gem::Dependency
|
160
|
-
name:
|
174
|
+
name: rake
|
161
175
|
requirement: !ruby/object:Gem::Requirement
|
162
176
|
requirements:
|
163
177
|
- - "~>"
|
164
178
|
- !ruby/object:Gem::Version
|
165
|
-
version:
|
179
|
+
version: 13.0.6
|
166
180
|
type: :development
|
167
181
|
prerelease: false
|
168
182
|
version_requirements: !ruby/object:Gem::Requirement
|
169
183
|
requirements:
|
170
184
|
- - "~>"
|
171
185
|
- !ruby/object:Gem::Version
|
172
|
-
version:
|
186
|
+
version: 13.0.6
|
173
187
|
- !ruby/object:Gem::Dependency
|
174
188
|
name: minitest
|
175
189
|
requirement: !ruby/object:Gem::Requirement
|
@@ -185,33 +199,33 @@ dependencies:
|
|
185
199
|
- !ruby/object:Gem::Version
|
186
200
|
version: 5.11.3
|
187
201
|
- !ruby/object:Gem::Dependency
|
188
|
-
name:
|
202
|
+
name: simplecov
|
189
203
|
requirement: !ruby/object:Gem::Requirement
|
190
204
|
requirements:
|
191
205
|
- - "~>"
|
192
206
|
- !ruby/object:Gem::Version
|
193
|
-
version:
|
207
|
+
version: 0.17.1
|
194
208
|
type: :development
|
195
209
|
prerelease: false
|
196
210
|
version_requirements: !ruby/object:Gem::Requirement
|
197
211
|
requirements:
|
198
212
|
- - "~>"
|
199
213
|
- !ruby/object:Gem::Version
|
200
|
-
version:
|
214
|
+
version: 0.17.1
|
201
215
|
- !ruby/object:Gem::Dependency
|
202
|
-
name:
|
216
|
+
name: memory_profiler
|
203
217
|
requirement: !ruby/object:Gem::Requirement
|
204
218
|
requirements:
|
205
219
|
- - "~>"
|
206
220
|
- !ruby/object:Gem::Version
|
207
|
-
version: 0.
|
221
|
+
version: 1.0.0
|
208
222
|
type: :development
|
209
223
|
prerelease: false
|
210
224
|
version_requirements: !ruby/object:Gem::Requirement
|
211
225
|
requirements:
|
212
226
|
- - "~>"
|
213
227
|
- !ruby/object:Gem::Version
|
214
|
-
version: 0.
|
228
|
+
version: 1.0.0
|
215
229
|
- !ruby/object:Gem::Dependency
|
216
230
|
name: cuba
|
217
231
|
requirement: !ruby/object:Gem::Requirement
|
@@ -226,15 +240,15 @@ dependencies:
|
|
226
240
|
- - "~>"
|
227
241
|
- !ruby/object:Gem::Version
|
228
242
|
version: 3.9.3
|
229
|
-
description:
|
243
|
+
description:
|
230
244
|
email: sharon@noteflakes.com
|
231
245
|
executables:
|
232
246
|
- tipi
|
233
|
-
extensions:
|
234
|
-
- ext/tipi/extconf.rb
|
247
|
+
extensions: []
|
235
248
|
extra_rdoc_files:
|
236
249
|
- README.md
|
237
250
|
files:
|
251
|
+
- ".github/FUNDING.yml"
|
238
252
|
- ".github/workflows/test.yml"
|
239
253
|
- ".gitignore"
|
240
254
|
- CHANGELOG.md
|
@@ -244,7 +258,11 @@ files:
|
|
244
258
|
- README.md
|
245
259
|
- Rakefile
|
246
260
|
- TODO.md
|
261
|
+
- benchmarks/bm_http1_parser.rb
|
262
|
+
- bin/benchmark
|
263
|
+
- bin/h1pd
|
247
264
|
- bin/tipi
|
265
|
+
- bm.png
|
248
266
|
- df/agent.rb
|
249
267
|
- df/etc_benchmark.rb
|
250
268
|
- df/multi_agent_supervisor.rb
|
@@ -258,9 +276,10 @@ files:
|
|
258
276
|
- df/ws_page.html
|
259
277
|
- docs/README.md
|
260
278
|
- docs/tipi-logo.png
|
261
|
-
- examples/automatic_certificate.rb
|
262
279
|
- examples/cuba.ru
|
280
|
+
- examples/full_service.rb
|
263
281
|
- examples/hanami-api.ru
|
282
|
+
- examples/hello.rb
|
264
283
|
- examples/hello.ru
|
265
284
|
- examples/http1_parser.rb
|
266
285
|
- examples/http_request_ws_server.rb
|
@@ -281,22 +300,29 @@ files:
|
|
281
300
|
- examples/https_server_forked.rb
|
282
301
|
- examples/https_wss_server.rb
|
283
302
|
- examples/rack_server.rb
|
303
|
+
- examples/rack_server_forked.rb
|
284
304
|
- examples/rack_server_https.rb
|
285
305
|
- examples/rack_server_https_forked.rb
|
286
306
|
- examples/routing_server.rb
|
307
|
+
- examples/servername_cb.rb
|
287
308
|
- examples/websocket_client.rb
|
288
309
|
- examples/websocket_demo.rb
|
289
310
|
- examples/websocket_secure_server.rb
|
290
311
|
- examples/websocket_server.rb
|
291
312
|
- examples/ws_page.html
|
292
313
|
- examples/wss_page.html
|
293
|
-
- ext/tipi/extconf.rb
|
294
|
-
- ext/tipi/http1_parser.c
|
295
|
-
- ext/tipi/http1_parser.h
|
296
|
-
- ext/tipi/tipi_ext.c
|
297
314
|
- lib/tipi.rb
|
315
|
+
- lib/tipi/acme.rb
|
316
|
+
- lib/tipi/cli.rb
|
298
317
|
- lib/tipi/config_dsl.rb
|
299
318
|
- lib/tipi/configuration.rb
|
319
|
+
- lib/tipi/controller.rb
|
320
|
+
- lib/tipi/controller/bare_polyphony.rb
|
321
|
+
- lib/tipi/controller/bare_stock.rb
|
322
|
+
- lib/tipi/controller/extensions.rb
|
323
|
+
- lib/tipi/controller/stock_http1_adapter.rb
|
324
|
+
- lib/tipi/controller/web_polyphony.rb
|
325
|
+
- lib/tipi/controller/web_stock.rb
|
300
326
|
- lib/tipi/digital_fabric.rb
|
301
327
|
- lib/tipi/digital_fabric/agent.rb
|
302
328
|
- lib/tipi/digital_fabric/agent_proxy.rb
|
@@ -307,11 +333,11 @@ files:
|
|
307
333
|
- lib/tipi/digital_fabric/service.rb
|
308
334
|
- lib/tipi/handler.rb
|
309
335
|
- lib/tipi/http1_adapter.rb
|
310
|
-
- lib/tipi/http1_adapter_new.rb
|
311
336
|
- lib/tipi/http2_adapter.rb
|
312
337
|
- lib/tipi/http2_stream.rb
|
313
338
|
- lib/tipi/rack_adapter.rb
|
314
339
|
- lib/tipi/response_extensions.rb
|
340
|
+
- lib/tipi/supervisor.rb
|
315
341
|
- lib/tipi/version.rb
|
316
342
|
- lib/tipi/websocket.rb
|
317
343
|
- test/coverage.rb
|
@@ -326,7 +352,7 @@ licenses:
|
|
326
352
|
- MIT
|
327
353
|
metadata:
|
328
354
|
source_code_uri: https://github.com/digital-fabric/tipi
|
329
|
-
post_install_message:
|
355
|
+
post_install_message:
|
330
356
|
rdoc_options:
|
331
357
|
- "--title"
|
332
358
|
- tipi
|
@@ -345,8 +371,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
345
371
|
- !ruby/object:Gem::Version
|
346
372
|
version: '0'
|
347
373
|
requirements: []
|
348
|
-
rubygems_version: 3.
|
349
|
-
signing_key:
|
374
|
+
rubygems_version: 3.3.3
|
375
|
+
signing_key:
|
350
376
|
specification_version: 4
|
351
377
|
summary: Tipi - the All-in-one Web Server for Ruby Apps
|
352
378
|
test_files: []
|