sanford 0.6.5 → 0.7.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/bench/report.txt +32 -28
- data/lib/sanford/server.rb +7 -6
- data/lib/sanford/version.rb +1 -1
- data/sanford.gemspec +1 -1
- metadata +8 -8
data/bench/report.txt
CHANGED
@@ -2,36 +2,40 @@ Running benchmark report...
|
|
2
2
|
|
3
3
|
Hitting "simple" service with {}, 10000 times
|
4
4
|
....................................................................................................
|
5
|
-
Total Time:
|
6
|
-
Average Time: 0.
|
7
|
-
Min Time: 0.
|
8
|
-
Max Time:
|
5
|
+
Total Time: 8970.7162ms
|
6
|
+
Average Time: 0.8970ms
|
7
|
+
Min Time: 0.5419ms
|
8
|
+
Max Time: 108.7779ms
|
9
9
|
|
10
10
|
Distribution (number of requests):
|
11
|
-
0ms:
|
12
|
-
0.5ms:
|
13
|
-
0.6ms:
|
14
|
-
0.7ms:
|
15
|
-
0.8ms:
|
16
|
-
0.9ms:
|
17
|
-
1ms:
|
18
|
-
1.0ms:
|
19
|
-
1.1ms:
|
20
|
-
1.2ms:
|
21
|
-
1.3ms:
|
22
|
-
1.4ms:
|
23
|
-
1.
|
11
|
+
0ms: 9634
|
12
|
+
0.5ms: 2063
|
13
|
+
0.6ms: 5113
|
14
|
+
0.7ms: 1448
|
15
|
+
0.8ms: 675
|
16
|
+
0.9ms: 335
|
17
|
+
1ms: 319
|
18
|
+
1.0ms: 129
|
19
|
+
1.1ms: 67
|
20
|
+
1.2ms: 44
|
21
|
+
1.3ms: 20
|
22
|
+
1.4ms: 23
|
23
|
+
1.5ms: 11
|
24
|
+
1.6ms: 13
|
24
25
|
1.7ms: 1
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
26
|
+
1.8ms: 6
|
27
|
+
1.9ms: 5
|
28
|
+
2ms: 11
|
29
|
+
3ms: 9
|
30
|
+
4ms: 4
|
31
|
+
5ms: 1
|
32
|
+
21ms: 1
|
33
|
+
87ms: 1
|
34
|
+
90ms: 1
|
35
|
+
97ms: 5
|
36
|
+
98ms: 9
|
37
|
+
99ms: 2
|
38
|
+
100ms: 2
|
39
|
+
108ms: 1
|
36
40
|
|
37
41
|
Done running benchmark report
|
data/lib/sanford/server.rb
CHANGED
@@ -34,18 +34,16 @@ module Sanford
|
|
34
34
|
@sanford_host_data = Sanford::HostData.new(@sanford_host, @sanford_host_options)
|
35
35
|
end
|
36
36
|
|
37
|
-
# `serve
|
38
|
-
# a new instance of the handler for every request.
|
37
|
+
# `serve!` can be called at the same time by multiple threads. Thus we
|
38
|
+
# create a new instance of the handler for every request.
|
39
39
|
# When using TCP_CORK, you "cork" the socket, handle it and then "uncork"
|
40
40
|
# it, see the `TCPCork` module for more info.
|
41
41
|
|
42
|
-
def serve(socket)
|
43
|
-
TCPCork.apply(socket)
|
42
|
+
def serve!(socket)
|
44
43
|
connection = Connection.new(socket)
|
45
44
|
if !self.keep_alive_connection?(connection)
|
46
45
|
Sanford::Worker.new(@sanford_host_data, connection).run
|
47
46
|
end
|
48
|
-
TCPCork.remove(socket)
|
49
47
|
end
|
50
48
|
|
51
49
|
protected
|
@@ -59,7 +57,8 @@ module Sanford
|
|
59
57
|
DEFAULT_TIMEOUT = 1
|
60
58
|
|
61
59
|
def initialize(socket)
|
62
|
-
@
|
60
|
+
@socket = socket
|
61
|
+
@connection = Sanford::Protocol::Connection.new(@socket)
|
63
62
|
@timeout = (ENV['SANFORD_TIMEOUT'] || DEFAULT_TIMEOUT).to_f
|
64
63
|
end
|
65
64
|
|
@@ -68,7 +67,9 @@ module Sanford
|
|
68
67
|
end
|
69
68
|
|
70
69
|
def write_data(data)
|
70
|
+
TCPCork.apply(@socket)
|
71
71
|
@connection.write data
|
72
|
+
TCPCork.remove(@socket)
|
72
73
|
end
|
73
74
|
|
74
75
|
def peek_data
|
data/lib/sanford/version.rb
CHANGED
data/sanford.gemspec
CHANGED
@@ -17,7 +17,7 @@ Gem::Specification.new do |gem|
|
|
17
17
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
18
|
gem.require_paths = ["lib"]
|
19
19
|
|
20
|
-
gem.add_dependency("dat-tcp", ["~>0.
|
20
|
+
gem.add_dependency("dat-tcp", ["~>0.4"])
|
21
21
|
gem.add_dependency("ns-options", ["~>1.0"])
|
22
22
|
gem.add_dependency("sanford-protocol", ["~>0.5"])
|
23
23
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sanford
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 3
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 7
|
9
|
+
- 0
|
10
|
+
version: 0.7.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Collin Redding
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2013-
|
19
|
+
date: 2013-07-15 00:00:00 Z
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
22
|
prerelease: false
|
@@ -25,11 +25,11 @@ dependencies:
|
|
25
25
|
requirements:
|
26
26
|
- - ~>
|
27
27
|
- !ruby/object:Gem::Version
|
28
|
-
hash:
|
28
|
+
hash: 3
|
29
29
|
segments:
|
30
30
|
- 0
|
31
|
-
-
|
32
|
-
version: "0.
|
31
|
+
- 4
|
32
|
+
version: "0.4"
|
33
33
|
requirement: *id001
|
34
34
|
name: dat-tcp
|
35
35
|
type: :runtime
|