parallel_server 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/parallel_server/prefork.rb +17 -15
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 60f22791a70556733877e1abacd86ffc257fafd6
|
4
|
+
data.tar.gz: 66d5e90cdca52f41dc687cd160e54b8fb030f858
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0d8e13cf7f83e1581706c0013f03e46cdec97490c9d2a13345fca178212201570d6b7836772555d7b8cb8b6ed1a6051a4f41985fe01d0a066bd5218dcb02a79b
|
7
|
+
data.tar.gz: 27f616dc7eab3d89a42faf45a48f3d2b9596ba43783855d19f8840b18675fa93ff8991961f15b735ec470423a8d3649a06b8c7e38c12e0227d2df711ed6bbeb6
|
@@ -34,9 +34,9 @@ module ParallelServer
|
|
34
34
|
host, port, opts = parse_args(*args)
|
35
35
|
@host, @port, @opts = host, port, opts
|
36
36
|
set_variables_from_opts
|
37
|
-
@from_child = {} # IO => pid
|
38
|
-
@to_child = {} #
|
39
|
-
@child_status = {} #
|
37
|
+
@from_child = {} # IO(r) => pid
|
38
|
+
@to_child = {} # IO(r) => IO(w)
|
39
|
+
@child_status = {} # IO(r) => Hash
|
40
40
|
@children = [] # pid
|
41
41
|
@loop = true
|
42
42
|
end
|
@@ -167,18 +167,17 @@ module ParallelServer
|
|
167
167
|
readable, = IO.select(rset, nil, nil, 0.1)
|
168
168
|
if readable
|
169
169
|
readable.each do |from_child|
|
170
|
-
pid = @from_child[from_child]
|
171
170
|
if st = Conversation.recv(from_child)
|
172
|
-
@child_status[
|
171
|
+
@child_status[from_child].update st
|
173
172
|
if st[:status] == :stop
|
174
|
-
@to_child[
|
175
|
-
@to_child.delete
|
173
|
+
@to_child[from_child].close rescue nil
|
174
|
+
@to_child.delete from_child
|
176
175
|
end
|
177
176
|
else
|
178
177
|
@from_child.delete from_child
|
179
|
-
@to_child[
|
180
|
-
@to_child.delete
|
181
|
-
@child_status.delete
|
178
|
+
@to_child[from_child].close rescue nil
|
179
|
+
@to_child.delete from_child
|
180
|
+
@child_status.delete from_child
|
182
181
|
from_child.close
|
183
182
|
end
|
184
183
|
end
|
@@ -242,13 +241,15 @@ module ParallelServer
|
|
242
241
|
to_child[1].close
|
243
242
|
@on_start.call if @on_start
|
244
243
|
Child.new(@sockets, @opts, from_child[1], to_child[0]).start(@block)
|
244
|
+
exit! true
|
245
245
|
end
|
246
246
|
from_child[1].close
|
247
247
|
to_child[0].close
|
248
|
-
|
249
|
-
@
|
248
|
+
r, w = from_child[0], to_child[1]
|
249
|
+
@from_child[r] = pid
|
250
|
+
@to_child[r] = w
|
251
|
+
@child_status[r] = {status: :run, connections: {}}
|
250
252
|
@children.push pid
|
251
|
-
@child_status[pid] = {status: :run, connections: {}}
|
252
253
|
@on_child_start.call(pid) if @on_child_start
|
253
254
|
end
|
254
255
|
|
@@ -334,7 +335,7 @@ module ParallelServer
|
|
334
335
|
@threads[thr] = addr
|
335
336
|
end
|
336
337
|
count += 1
|
337
|
-
break if count >= max_use
|
338
|
+
break if max_use > 0 && count >= max_use
|
338
339
|
end
|
339
340
|
ensure
|
340
341
|
@status = :stop
|
@@ -424,7 +425,8 @@ module ParallelServer
|
|
424
425
|
# @return [nil]
|
425
426
|
def accept
|
426
427
|
while true
|
427
|
-
|
428
|
+
timeout = max_idle > 0 ? max_idle : nil
|
429
|
+
readable, = IO.select(@sockets, nil, nil, timeout)
|
428
430
|
return nil unless readable
|
429
431
|
r, = readable
|
430
432
|
begin
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: parallel_server
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tomita Masahiro
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-04-08 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Parallel TCP Server library. This is easy to make Multi-Process / Multi-Thread
|
14
14
|
server
|