rainbows 2.1.0 → 3.0.0
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.
- data/GIT-VERSION-GEN +1 -1
- data/GNUmakefile +2 -3
- data/Rakefile +5 -2
- data/lib/rainbows.rb +72 -54
- data/lib/rainbows/base.rb +7 -9
- data/lib/rainbows/client.rb +25 -4
- data/lib/rainbows/const.rb +1 -1
- data/lib/rainbows/coolio.rb +6 -3
- data/lib/rainbows/coolio/client.rb +78 -57
- data/lib/rainbows/coolio/core.rb +1 -4
- data/lib/rainbows/coolio/heartbeat.rb +2 -3
- data/lib/rainbows/coolio/master.rb +3 -2
- data/lib/rainbows/coolio/{deferred_chunk_response.rb → response_chunk_pipe.rb} +1 -2
- data/lib/rainbows/coolio/{deferred_response.rb → response_pipe.rb} +1 -1
- data/lib/rainbows/coolio/thread_client.rb +4 -6
- data/lib/rainbows/coolio_fiber_spawn.rb +1 -1
- data/lib/rainbows/coolio_thread_pool.rb +1 -1
- data/lib/rainbows/coolio_thread_pool/watcher.rb +2 -4
- data/lib/rainbows/coolio_thread_spawn.rb +1 -1
- data/lib/rainbows/dev_fd_response.rb +2 -2
- data/lib/rainbows/error.rb +5 -7
- data/lib/rainbows/ev_core.rb +20 -7
- data/lib/rainbows/event_machine.rb +6 -5
- data/lib/rainbows/event_machine/client.rb +46 -53
- data/lib/rainbows/event_machine/response_pipe.rb +2 -3
- data/lib/rainbows/fiber/base.rb +5 -5
- data/lib/rainbows/fiber/body.rb +4 -13
- data/lib/rainbows/fiber/coolio/heartbeat.rb +1 -3
- data/lib/rainbows/fiber/coolio/server.rb +4 -7
- data/lib/rainbows/fiber_pool.rb +1 -1
- data/lib/rainbows/fiber_spawn.rb +2 -2
- data/lib/rainbows/http_parser.rb +12 -0
- data/lib/rainbows/http_server.rb +5 -7
- data/lib/rainbows/max_body.rb +2 -2
- data/lib/rainbows/never_block/core.rb +1 -1
- data/lib/rainbows/process_client.rb +15 -29
- data/lib/rainbows/queue_pool.rb +1 -3
- data/lib/rainbows/rack_input.rb +3 -3
- data/lib/rainbows/response.rb +164 -38
- data/lib/rainbows/revactor.rb +5 -65
- data/lib/rainbows/revactor/client.rb +60 -0
- data/lib/rainbows/revactor/{body.rb → client/methods.rb} +14 -14
- data/lib/rainbows/revactor/{tee_socket.rb → client/tee_socket.rb} +1 -1
- data/lib/rainbows/sendfile.rb +1 -2
- data/lib/rainbows/server_token.rb +1 -1
- data/lib/rainbows/thread_pool.rb +9 -9
- data/lib/rainbows/thread_spawn.rb +7 -6
- data/lib/rainbows/thread_timeout.rb +1 -1
- data/lib/rainbows/writer_thread_pool.rb +9 -25
- data/lib/rainbows/writer_thread_pool/client.rb +44 -1
- data/lib/rainbows/writer_thread_spawn.rb +2 -11
- data/lib/rainbows/writer_thread_spawn/client.rb +53 -13
- data/rainbows.gemspec +3 -12
- data/t/async_chunk_app.ru +62 -0
- data/t/byte-range-common.sh +142 -0
- data/t/t0022-copy_stream-byte-range.sh +2 -111
- data/t/t0023-sendfile-byte-range.sh +2 -32
- data/t/t0025-write-on-close.sh +23 -0
- data/t/t0040-keepalive_requests-setting.sh +0 -5
- data/t/t0402-async-keepalive.sh +146 -0
- data/t/t0500-cramp-streaming.sh +2 -0
- data/t/t0501-cramp-rainsocket.sh +2 -0
- data/t/t9000-rack-app-pool.sh +1 -1
- data/t/test_isolate.rb +5 -10
- data/t/test_isolate_cramp.rb +26 -0
- data/t/write-on-close.ru +11 -0
- metadata +33 -30
- data/lib/rainbows/coolio/sendfile.rb +0 -17
- data/lib/rainbows/response/body.rb +0 -127
- data/lib/rainbows/response/range.rb +0 -34
- data/lib/rainbows/timed_read.rb +0 -28
@@ -17,7 +17,7 @@ EventMachine|NeverBlock)
|
|
17
17
|
*) ;;
|
18
18
|
esac
|
19
19
|
|
20
|
-
t_plan
|
20
|
+
t_plan 13 "sendfile byte range response for $model"
|
21
21
|
|
22
22
|
t_begin "setup and startup" && {
|
23
23
|
rtmpfiles out err
|
@@ -28,36 +28,6 @@ t_begin "setup and startup" && {
|
|
28
28
|
# can't load Rack::Lint here since it clobbers body#to_path
|
29
29
|
rainbows -E none -D large-file-response.ru -c $unicorn_config
|
30
30
|
rainbows_wait_start
|
31
|
-
range_head=-r-365
|
32
|
-
range_tail=-r155-
|
33
|
-
range_mid=-r200-300
|
34
31
|
}
|
35
32
|
|
36
|
-
|
37
|
-
sha1_head=$(curl -sSf $range_head file://random_blob | rsha1)
|
38
|
-
sha1_tail=$(curl -sSf $range_tail file://random_blob | rsha1)
|
39
|
-
sha1_mid=$(curl -sSf $range_mid file://random_blob | rsha1)
|
40
|
-
}
|
41
|
-
|
42
|
-
t_begin "head range matches" && {
|
43
|
-
sha1="$(curl -sSv $range_head http://$listen/random_blob | rsha1)"
|
44
|
-
test x"$sha1_head" = x"$sha1"
|
45
|
-
}
|
46
|
-
|
47
|
-
t_begin "tail range matches" && {
|
48
|
-
sha1="$(curl -sS $range_tail http://$listen/random_blob | rsha1)"
|
49
|
-
test x"$sha1_tail" = x"$sha1"
|
50
|
-
}
|
51
|
-
|
52
|
-
t_begin "mid range matches" && {
|
53
|
-
sha1="$(curl -sS $range_mid http://$listen/random_blob | rsha1)"
|
54
|
-
test x"$sha1_mid" = x"$sha1"
|
55
|
-
}
|
56
|
-
|
57
|
-
t_begin "shutdown server" && {
|
58
|
-
kill -QUIT $rainbows_pid
|
59
|
-
}
|
60
|
-
|
61
|
-
t_begin "check stderr" && check_stderr
|
62
|
-
|
63
|
-
t_done
|
33
|
+
. ./byte-range-common.sh
|
@@ -0,0 +1,23 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
. ./test-lib.sh
|
3
|
+
t_plan 4 "write-on-close tests for funky response-bodies"
|
4
|
+
|
5
|
+
t_begin "setup and start" && {
|
6
|
+
rainbows_setup
|
7
|
+
rainbows -D -c $unicorn_config write-on-close.ru
|
8
|
+
rainbows_wait_start
|
9
|
+
}
|
10
|
+
|
11
|
+
t_begin "write-on-close response body succeeds" && {
|
12
|
+
test xGoodbye = x"$(curl -sSf --http1.0 http://$listen/)"
|
13
|
+
}
|
14
|
+
|
15
|
+
t_begin "killing succeeds" && {
|
16
|
+
kill $rainbows_pid
|
17
|
+
}
|
18
|
+
|
19
|
+
t_begin "check stderr" && {
|
20
|
+
check_stderr
|
21
|
+
}
|
22
|
+
|
23
|
+
t_done
|
@@ -6,11 +6,6 @@ t_begin "setup and start" && {
|
|
6
6
|
rainbows_setup $model 50 666
|
7
7
|
rtmpfiles curl_out curl_err
|
8
8
|
grep 'keepalive_timeout 666' $unicorn_config
|
9
|
-
ed -s $unicorn_config <<EOF
|
10
|
-
,s/listen.*/&, :tcp_nodelay => true/
|
11
|
-
w
|
12
|
-
EOF
|
13
|
-
grep nodelay $unicorn_config
|
14
9
|
rainbows -E none -D env.ru -c $unicorn_config
|
15
10
|
rainbows_wait_start
|
16
11
|
}
|
@@ -0,0 +1,146 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
DELAY=${DELAY-1}
|
3
|
+
. ./test-lib.sh
|
4
|
+
case $model in
|
5
|
+
Coolio|NeverBlock|EventMachine) ;;
|
6
|
+
*)
|
7
|
+
t_info "skipping $T since it's not compatible with $model"
|
8
|
+
exit 0
|
9
|
+
;;
|
10
|
+
esac
|
11
|
+
|
12
|
+
t_plan 12 "async_chunk_app test for test for $model"
|
13
|
+
|
14
|
+
CONFIG_RU=async_chunk_app.ru
|
15
|
+
|
16
|
+
t_begin "setup and start" && {
|
17
|
+
rainbows_setup
|
18
|
+
rtmpfiles a b c curl_err expect
|
19
|
+
|
20
|
+
# this does not does not support Rack::Lint
|
21
|
+
rainbows -E none -D $CONFIG_RU -c $unicorn_config
|
22
|
+
rainbows_wait_start
|
23
|
+
|
24
|
+
echo 'Hello World /0' >> $expect
|
25
|
+
echo 'Hello World /1' >> $expect
|
26
|
+
echo 'Hello World /2' >> $expect
|
27
|
+
}
|
28
|
+
|
29
|
+
t_begin "async.callback supports pipelining" && {
|
30
|
+
rm -f $tmp
|
31
|
+
t0=$(date +%s)
|
32
|
+
(
|
33
|
+
cat $fifo > $tmp &
|
34
|
+
printf 'GET /0 HTTP/1.1\r\nHost: example.com\r\n\r\n'
|
35
|
+
printf 'GET /1 HTTP/1.1\r\nHost: example.com\r\n\r\n'
|
36
|
+
printf 'GET /2 HTTP/1.0\r\nHost: example.com\r\n\r\n'
|
37
|
+
wait
|
38
|
+
) | socat - TCP:$listen > $fifo
|
39
|
+
t1=$(date +%s)
|
40
|
+
elapsed=$(( $t1 - $t0 ))
|
41
|
+
t_info "elapsed=$elapsed $model.$0 ($t_current)"
|
42
|
+
test 3 -eq "$(fgrep 'HTTP/1.1 200 OK' $tmp | wc -l)"
|
43
|
+
test 3 -eq "$(grep '^Hello ' $tmp | wc -l)"
|
44
|
+
test 3 -eq "$(grep 'World ' $tmp | wc -l)"
|
45
|
+
}
|
46
|
+
|
47
|
+
t_begin "async.callback supports delayed pipelining" && {
|
48
|
+
rm -f $tmp
|
49
|
+
t0=$(date +%s)
|
50
|
+
(
|
51
|
+
cat $fifo > $tmp &
|
52
|
+
printf 'GET /0 HTTP/1.1\r\nHost: example.com\r\n\r\n'
|
53
|
+
sleep 1
|
54
|
+
printf 'GET /1 HTTP/1.1\r\nHost: example.com\r\n\r\n'
|
55
|
+
sleep 1
|
56
|
+
printf 'GET /2 HTTP/1.0\r\nHost: example.com\r\n\r\n'
|
57
|
+
wait
|
58
|
+
) | socat - TCP:$listen > $fifo
|
59
|
+
t1=$(date +%s)
|
60
|
+
elapsed=$(( $t1 - $t0 ))
|
61
|
+
t_info "elapsed=$elapsed $model.$0 ($t_current)"
|
62
|
+
test 3 -eq "$(fgrep 'HTTP/1.1 200 OK' $tmp | wc -l)"
|
63
|
+
test 3 -eq "$(grep '^Hello ' $tmp | wc -l)"
|
64
|
+
test 3 -eq "$(grep 'World ' $tmp | wc -l)"
|
65
|
+
}
|
66
|
+
|
67
|
+
t_begin "async.callback supports pipelining with delay $DELAY" && {
|
68
|
+
rm -f $tmp
|
69
|
+
t0=$(date +%s)
|
70
|
+
(
|
71
|
+
cat $fifo > $tmp &
|
72
|
+
printf 'GET /0 HTTP/1.1\r\nX-Delay: %d\r\n' $DELAY
|
73
|
+
printf 'Host: example.com\r\n\r\n'
|
74
|
+
printf 'GET /1 HTTP/1.1\r\nX-Delay: %d\r\n' $DELAY
|
75
|
+
printf 'Host: example.com\r\n\r\n'
|
76
|
+
printf 'GET /2 HTTP/1.0\r\nX-Delay: %d\r\n' $DELAY
|
77
|
+
printf 'Host: example.com\r\n\r\n'
|
78
|
+
wait
|
79
|
+
) | socat - TCP:$listen > $fifo
|
80
|
+
t1=$(date +%s)
|
81
|
+
elapsed=$(( $t1 - $t0 ))
|
82
|
+
min=$(( $DELAY * 3 ))
|
83
|
+
t_info "elapsed=$elapsed $model.$0 ($t_current) min=$min"
|
84
|
+
test $elapsed -ge $min
|
85
|
+
test 3 -eq "$(fgrep 'HTTP/1.1 200 OK' $tmp | wc -l)"
|
86
|
+
test 3 -eq "$(grep '^Hello ' $tmp | wc -l)"
|
87
|
+
test 3 -eq "$(grep 'World ' $tmp | wc -l)"
|
88
|
+
}
|
89
|
+
|
90
|
+
t_begin "async.callback supports keepalive" && {
|
91
|
+
t0=$(date +%s)
|
92
|
+
curl -v --no-buffer -sSf http://$listen/[0-2] > $tmp 2>> $curl_err
|
93
|
+
t1=$(date +%s)
|
94
|
+
elapsed=$(( $t1 - $t0 ))
|
95
|
+
t_info "elapsed=$elapsed $model.$0 ($t_current)"
|
96
|
+
cmp $expect $tmp
|
97
|
+
test 2 -eq "$(fgrep 'Re-using existing connection!' $curl_err |wc -l)"
|
98
|
+
rm -f $curl_err
|
99
|
+
}
|
100
|
+
|
101
|
+
t_begin "async.callback supports keepalive with delay $DELAY" && {
|
102
|
+
t0=$(date +%s)
|
103
|
+
curl -v --no-buffer -sSf -H "X-Delay: $DELAY" \
|
104
|
+
http://$listen/[0-2] > $tmp 2>> $curl_err
|
105
|
+
t1=$(date +%s)
|
106
|
+
elapsed=$(( $t1 - $t0 ))
|
107
|
+
min=$(( $DELAY * 3 ))
|
108
|
+
t_info "elapsed=$elapsed $model.$0 ($t_current) min=$min"
|
109
|
+
test $elapsed -ge $min
|
110
|
+
cmp $expect $tmp
|
111
|
+
test 2 -eq "$(fgrep 'Re-using existing connection!' $curl_err |wc -l)"
|
112
|
+
rm -f $curl_err
|
113
|
+
}
|
114
|
+
|
115
|
+
t_begin "send async requests off in parallel" && {
|
116
|
+
t0=$(date +%s)
|
117
|
+
curl --no-buffer -sSf http://$listen/[0-2] > $a 2>> $curl_err &
|
118
|
+
curl --no-buffer -sSf http://$listen/[0-2] > $b 2>> $curl_err &
|
119
|
+
curl --no-buffer -sSf http://$listen/[0-2] > $c 2>> $curl_err &
|
120
|
+
}
|
121
|
+
|
122
|
+
t_begin "wait for curl terminations" && {
|
123
|
+
wait
|
124
|
+
t1=$(date +%s)
|
125
|
+
elapsed=$(( $t1 - $t0 ))
|
126
|
+
t_info "elapsed=$elapsed"
|
127
|
+
}
|
128
|
+
|
129
|
+
t_begin "termination signal sent" && {
|
130
|
+
kill $rainbows_pid
|
131
|
+
}
|
132
|
+
|
133
|
+
t_begin "no errors from curl" && {
|
134
|
+
test ! -s $curl_err
|
135
|
+
}
|
136
|
+
|
137
|
+
t_begin "no errors in stderr" && check_stderr
|
138
|
+
|
139
|
+
t_begin "responses match expected" && {
|
140
|
+
cmp $expect $a
|
141
|
+
cmp $expect $b
|
142
|
+
cmp $expect $c
|
143
|
+
}
|
144
|
+
|
145
|
+
t_done
|
146
|
+
|
data/t/t0500-cramp-streaming.sh
CHANGED
data/t/t0501-cramp-rainsocket.sh
CHANGED
data/t/t9000-rack-app-pool.sh
CHANGED
data/t/test_isolate.rb
CHANGED
@@ -13,28 +13,23 @@ opts = {
|
|
13
13
|
old_out = $stdout.dup
|
14
14
|
$stdout.reopen($stderr)
|
15
15
|
|
16
|
+
lock = File.open(__FILE__, "rb")
|
17
|
+
lock.flock(File::LOCK_EX)
|
16
18
|
Isolate.now!(opts) do
|
17
|
-
gem '
|
18
|
-
gem '
|
19
|
-
gem 'unicorn', '3.2.1'
|
20
|
-
gem 'kcar', '0.1.1'
|
19
|
+
gem 'unicorn', '3.3.1'
|
20
|
+
gem 'kcar', '0.1.2'
|
21
21
|
|
22
22
|
if engine == "ruby"
|
23
23
|
gem 'sendfile', '1.0.0' # next Rubinius should support this
|
24
|
-
|
25
|
-
gem 'iobuffer', '0.1.3'
|
26
24
|
gem 'cool.io', '1.0.0'
|
27
25
|
|
28
26
|
gem 'eventmachine', '0.12.10'
|
29
|
-
gem '
|
30
|
-
gem 'async_sinatra', '0.2.1'
|
27
|
+
gem 'async_sinatra', '0.4.0'
|
31
28
|
|
32
29
|
gem 'neverblock', '0.1.6.2'
|
33
|
-
gem 'cramp', '0.11'
|
34
30
|
end
|
35
31
|
|
36
32
|
if defined?(::Fiber) && engine == "ruby"
|
37
|
-
gem 'case', '0.5'
|
38
33
|
gem 'revactor', '0.1.5'
|
39
34
|
gem 'rack-fiber_pool', '0.9.0'
|
40
35
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'isolate'
|
3
|
+
engine = defined?(RUBY_ENGINE) ? RUBY_ENGINE : 'ruby'
|
4
|
+
|
5
|
+
path = "tmp/isolate/#{engine}-#{RUBY_VERSION}/cramp"
|
6
|
+
opts = {
|
7
|
+
:system => false,
|
8
|
+
# we want "ruby-1.8.7" and not "ruby-1.8", so disable multiruby
|
9
|
+
:multiruby => false,
|
10
|
+
:path => path,
|
11
|
+
}
|
12
|
+
|
13
|
+
old_out = $stdout.dup
|
14
|
+
$stdout.reopen($stderr)
|
15
|
+
|
16
|
+
lock = File.open(__FILE__, "rb")
|
17
|
+
lock.flock(File::LOCK_EX)
|
18
|
+
Isolate.now!(opts) do
|
19
|
+
if engine == "ruby"
|
20
|
+
gem 'cramp', '0.11'
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
$stdout.reopen(old_out)
|
25
|
+
dirs = Dir["#{path}/gems/*-*/lib"]
|
26
|
+
puts dirs.map { |x| File.expand_path(x) }.join(':')
|
data/t/write-on-close.ru
ADDED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rainbows
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 7
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
|
-
-
|
8
|
-
- 1
|
7
|
+
- 3
|
9
8
|
- 0
|
10
|
-
|
9
|
+
- 0
|
10
|
+
version: 3.0.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Rainbows! hackers
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2011-01-12 00:00:00 +00:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -41,11 +41,11 @@ dependencies:
|
|
41
41
|
requirements:
|
42
42
|
- - ~>
|
43
43
|
- !ruby/object:Gem::Version
|
44
|
-
hash:
|
44
|
+
hash: 1
|
45
45
|
segments:
|
46
46
|
- 3
|
47
|
-
-
|
48
|
-
version: "3.
|
47
|
+
- 3
|
48
|
+
version: "3.3"
|
49
49
|
type: :runtime
|
50
50
|
version_requirements: *id002
|
51
51
|
- !ruby/object:Gem::Dependency
|
@@ -72,12 +72,11 @@ dependencies:
|
|
72
72
|
requirements:
|
73
73
|
- - ~>
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
hash:
|
75
|
+
hash: 13
|
76
76
|
segments:
|
77
77
|
- 1
|
78
|
-
- 0
|
79
78
|
- 1
|
80
|
-
version: 1.
|
79
|
+
version: "1.1"
|
81
80
|
type: :development
|
82
81
|
version_requirements: *id004
|
83
82
|
description: |-
|
@@ -103,11 +102,10 @@ extra_rdoc_files:
|
|
103
102
|
- lib/rainbows/coolio.rb
|
104
103
|
- lib/rainbows/coolio/client.rb
|
105
104
|
- lib/rainbows/coolio/core.rb
|
106
|
-
- lib/rainbows/coolio/deferred_chunk_response.rb
|
107
|
-
- lib/rainbows/coolio/deferred_response.rb
|
108
105
|
- lib/rainbows/coolio/heartbeat.rb
|
109
106
|
- lib/rainbows/coolio/master.rb
|
110
|
-
- lib/rainbows/coolio/
|
107
|
+
- lib/rainbows/coolio/response_chunk_pipe.rb
|
108
|
+
- lib/rainbows/coolio/response_pipe.rb
|
111
109
|
- lib/rainbows/coolio/server.rb
|
112
110
|
- lib/rainbows/coolio/thread_client.rb
|
113
111
|
- lib/rainbows/coolio_fiber_spawn.rb
|
@@ -143,6 +141,7 @@ extra_rdoc_files:
|
|
143
141
|
- lib/rainbows/fiber/queue.rb
|
144
142
|
- lib/rainbows/fiber_pool.rb
|
145
143
|
- lib/rainbows/fiber_spawn.rb
|
144
|
+
- lib/rainbows/http_parser.rb
|
146
145
|
- lib/rainbows/http_response.rb
|
147
146
|
- lib/rainbows/http_server.rb
|
148
147
|
- lib/rainbows/max_body.rb
|
@@ -155,16 +154,15 @@ extra_rdoc_files:
|
|
155
154
|
- lib/rainbows/queue_pool.rb
|
156
155
|
- lib/rainbows/rack_input.rb
|
157
156
|
- lib/rainbows/response.rb
|
158
|
-
- lib/rainbows/response/body.rb
|
159
|
-
- lib/rainbows/response/range.rb
|
160
157
|
- lib/rainbows/rev.rb
|
161
158
|
- lib/rainbows/rev_fiber_spawn.rb
|
162
159
|
- lib/rainbows/rev_thread_pool.rb
|
163
160
|
- lib/rainbows/rev_thread_spawn.rb
|
164
161
|
- lib/rainbows/revactor.rb
|
165
|
-
- lib/rainbows/revactor/
|
162
|
+
- lib/rainbows/revactor/client.rb
|
163
|
+
- lib/rainbows/revactor/client/methods.rb
|
164
|
+
- lib/rainbows/revactor/client/tee_socket.rb
|
166
165
|
- lib/rainbows/revactor/proxy.rb
|
167
|
-
- lib/rainbows/revactor/tee_socket.rb
|
168
166
|
- lib/rainbows/sendfile.rb
|
169
167
|
- lib/rainbows/server_token.rb
|
170
168
|
- lib/rainbows/socket_proxy.rb
|
@@ -173,7 +171,6 @@ extra_rdoc_files:
|
|
173
171
|
- lib/rainbows/thread_pool.rb
|
174
172
|
- lib/rainbows/thread_spawn.rb
|
175
173
|
- lib/rainbows/thread_timeout.rb
|
176
|
-
- lib/rainbows/timed_read.rb
|
177
174
|
- lib/rainbows/worker_yield.rb
|
178
175
|
- lib/rainbows/writer_thread_pool.rb
|
179
176
|
- lib/rainbows/writer_thread_pool/client.rb
|
@@ -196,6 +193,7 @@ files:
|
|
196
193
|
- .manifest
|
197
194
|
- .wrongdoc.yml
|
198
195
|
- COPYING
|
196
|
+
- ChangeLog
|
199
197
|
- DEPLOY
|
200
198
|
- Documentation/.gitignore
|
201
199
|
- Documentation/GNUmakefile
|
@@ -203,9 +201,12 @@ files:
|
|
203
201
|
- Documentation/comparison.haml
|
204
202
|
- Documentation/rainbows.1.txt
|
205
203
|
- FAQ
|
204
|
+
- GIT-VERSION-FILE
|
206
205
|
- GIT-VERSION-GEN
|
207
206
|
- GNUmakefile
|
207
|
+
- LATEST
|
208
208
|
- LICENSE
|
209
|
+
- NEWS
|
209
210
|
- README
|
210
211
|
- Rakefile
|
211
212
|
- SIGNALS
|
@@ -225,11 +226,10 @@ files:
|
|
225
226
|
- lib/rainbows/coolio.rb
|
226
227
|
- lib/rainbows/coolio/client.rb
|
227
228
|
- lib/rainbows/coolio/core.rb
|
228
|
-
- lib/rainbows/coolio/deferred_chunk_response.rb
|
229
|
-
- lib/rainbows/coolio/deferred_response.rb
|
230
229
|
- lib/rainbows/coolio/heartbeat.rb
|
231
230
|
- lib/rainbows/coolio/master.rb
|
232
|
-
- lib/rainbows/coolio/
|
231
|
+
- lib/rainbows/coolio/response_chunk_pipe.rb
|
232
|
+
- lib/rainbows/coolio/response_pipe.rb
|
233
233
|
- lib/rainbows/coolio/server.rb
|
234
234
|
- lib/rainbows/coolio/thread_client.rb
|
235
235
|
- lib/rainbows/coolio_fiber_spawn.rb
|
@@ -265,6 +265,7 @@ files:
|
|
265
265
|
- lib/rainbows/fiber/queue.rb
|
266
266
|
- lib/rainbows/fiber_pool.rb
|
267
267
|
- lib/rainbows/fiber_spawn.rb
|
268
|
+
- lib/rainbows/http_parser.rb
|
268
269
|
- lib/rainbows/http_response.rb
|
269
270
|
- lib/rainbows/http_server.rb
|
270
271
|
- lib/rainbows/max_body.rb
|
@@ -277,16 +278,15 @@ files:
|
|
277
278
|
- lib/rainbows/queue_pool.rb
|
278
279
|
- lib/rainbows/rack_input.rb
|
279
280
|
- lib/rainbows/response.rb
|
280
|
-
- lib/rainbows/response/body.rb
|
281
|
-
- lib/rainbows/response/range.rb
|
282
281
|
- lib/rainbows/rev.rb
|
283
282
|
- lib/rainbows/rev_fiber_spawn.rb
|
284
283
|
- lib/rainbows/rev_thread_pool.rb
|
285
284
|
- lib/rainbows/rev_thread_spawn.rb
|
286
285
|
- lib/rainbows/revactor.rb
|
287
|
-
- lib/rainbows/revactor/
|
286
|
+
- lib/rainbows/revactor/client.rb
|
287
|
+
- lib/rainbows/revactor/client/methods.rb
|
288
|
+
- lib/rainbows/revactor/client/tee_socket.rb
|
288
289
|
- lib/rainbows/revactor/proxy.rb
|
289
|
-
- lib/rainbows/revactor/tee_socket.rb
|
290
290
|
- lib/rainbows/sendfile.rb
|
291
291
|
- lib/rainbows/server_token.rb
|
292
292
|
- lib/rainbows/socket_proxy.rb
|
@@ -295,13 +295,13 @@ files:
|
|
295
295
|
- lib/rainbows/thread_pool.rb
|
296
296
|
- lib/rainbows/thread_spawn.rb
|
297
297
|
- lib/rainbows/thread_timeout.rb
|
298
|
-
- lib/rainbows/timed_read.rb
|
299
298
|
- lib/rainbows/worker_yield.rb
|
300
299
|
- lib/rainbows/writer_thread_pool.rb
|
301
300
|
- lib/rainbows/writer_thread_pool/client.rb
|
302
301
|
- lib/rainbows/writer_thread_spawn.rb
|
303
302
|
- lib/rainbows/writer_thread_spawn/client.rb
|
304
303
|
- local.mk.sample
|
304
|
+
- man/man1/rainbows.1
|
305
305
|
- rainbows.gemspec
|
306
306
|
- setup.rb
|
307
307
|
- t/.gitignore
|
@@ -310,6 +310,7 @@ files:
|
|
310
310
|
- t/app_deferred.ru
|
311
311
|
- t/async-response-no-autochunk.ru
|
312
312
|
- t/async-response.ru
|
313
|
+
- t/async_chunk_app.ru
|
313
314
|
- t/async_examples/README
|
314
315
|
- t/async_examples/async_app.ru
|
315
316
|
- t/async_examples/async_tailer.ru
|
@@ -318,6 +319,7 @@ files:
|
|
318
319
|
- t/bin/sha1sum.rb
|
319
320
|
- t/bin/unused_listen
|
320
321
|
- t/bin/utee
|
322
|
+
- t/byte-range-common.sh
|
321
323
|
- t/close-has-env.ru
|
322
324
|
- t/close-pipe-response.ru
|
323
325
|
- t/close-pipe-to_path-response.ru
|
@@ -386,6 +388,7 @@ files:
|
|
386
388
|
- t/t0022-copy_stream-byte-range.sh
|
387
389
|
- t/t0023-sendfile-byte-range.sh
|
388
390
|
- t/t0024-pipelined-sendfile-response.sh
|
391
|
+
- t/t0025-write-on-close.sh
|
389
392
|
- t/t0030-fast-pipe-response.sh
|
390
393
|
- t/t0031-close-pipe-response.sh
|
391
394
|
- t/t0032-close-pipe-to_path-response.sh
|
@@ -410,6 +413,7 @@ files:
|
|
410
413
|
- t/t0300-async_sinatra.sh
|
411
414
|
- t/t0400-em-async-app.sh
|
412
415
|
- t/t0401-em-async-tailer.sh
|
416
|
+
- t/t0402-async-keepalive.sh
|
413
417
|
- t/t0500-cramp-streaming.sh
|
414
418
|
- t/t0501-cramp-rainsocket.sh
|
415
419
|
- t/t0600-rack-fiber_pool.sh
|
@@ -426,12 +430,11 @@ files:
|
|
426
430
|
- t/t9101.ru
|
427
431
|
- t/test-lib.sh
|
428
432
|
- t/test_isolate.rb
|
433
|
+
- t/test_isolate_cramp.rb
|
429
434
|
- t/times.ru
|
430
435
|
- t/worker-follows-master-to-death.ru
|
436
|
+
- t/write-on-close.ru
|
431
437
|
- vs_Unicorn
|
432
|
-
- ChangeLog
|
433
|
-
- LATEST
|
434
|
-
- NEWS
|
435
438
|
has_rdoc: true
|
436
439
|
homepage: http://rainbows.rubyforge.org/
|
437
440
|
licenses: []
|