thrift_rack 0.1.6 → 0.1.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 37f887b0c4dbec87441cb7954484eb07fed155f8
4
- data.tar.gz: 5104387ee2e14f55968165d18b34dc822467c9da
3
+ metadata.gz: 876f5fc8e1e40102b3b671b45ec6f44ea366d78c
4
+ data.tar.gz: eb386aa0c5b51076749a6377de75809ec36860ac
5
5
  SHA512:
6
- metadata.gz: 4a74deaebd6707b1df79a05b1c559380236a240cf168726f12828b7f42351c5eadcc893c8413d585e124ff41f32678e831a97df987f554d4a5ddce111b449e2f
7
- data.tar.gz: 4840b5ff2c33548b77d2c9e7fe06ab4b05221f812f8ea89fa2cf6cc38328e1ed9d79923adfbc3d7090b0bc0e4d10a05104826024c7e3c2d2de43bdef9398e39b
6
+ metadata.gz: 99daba9a46421d7f4b4f10ff96bbdc7378a0df5e9df55517e3cff22aa7e6b325e611397b5af0364525ffbf342ccaa8e53b09eb2c8ecef7d4cfe661c718872aeb
7
+ data.tar.gz: fee0cd1ad4c527402d242c22f291e72e6be9e9cd456b7375b3d841758ec51128d51b6dcf79b57c0ceaeed0c300108fc3ec322865f8364a638890f61b622308d5
data/Gemfile.lock CHANGED
@@ -1,7 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- thrift_rack (0.1.3)
4
+ thrift_rack (0.1.7)
5
+ connection_pool (~> 2.2.1)
6
+ excon (~> 0.62.0)
5
7
  rack (>= 2.0)
6
8
  thrift (~> 0.10.0)
7
9
 
@@ -9,6 +11,8 @@ GEM
9
11
  remote: https://rubygems.org/
10
12
  specs:
11
13
  coderay (1.1.2)
14
+ connection_pool (2.2.1)
15
+ excon (0.62.0)
12
16
  method_source (0.9.0)
13
17
  pry (0.11.3)
14
18
  coderay (~> 1.1.0)
data/lib/config.ru ADDED
@@ -0,0 +1,3 @@
1
+ require 'thrift_rack'
2
+
3
+ run ThriftRack.new
@@ -2,10 +2,10 @@ require 'thrift'
2
2
  require 'securerandom'
3
3
  class ThriftRack
4
4
  class Client
5
- def initialize(url, client_klass, request_id)
5
+ def initialize(url, client_klass, request_id = nil)
6
6
  @request_id = request_id || "no-request"
7
7
  @url = url
8
- @transport = Thrift::HTTPClientTransport.new(url, ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE)
8
+ @transport = ThriftRack::TransportPool.get(url)
9
9
  protocol = protocol_factory.get_protocol(@transport)
10
10
  @client = client_klass.new(protocol)
11
11
  end
@@ -56,7 +56,15 @@ class ThriftRack
56
56
  end
57
57
 
58
58
  class << self
59
- attr_accessor :app_name
59
+ attr_accessor :app_name, :pool_size, :pool_timeout
60
+
61
+ def pool_size
62
+ @pool_size || 128
63
+ end
64
+
65
+ def pool_timeout
66
+ @pool_timeout || 3
67
+ end
60
68
  end
61
69
  end
62
70
  end
@@ -0,0 +1,20 @@
1
+ require 'excon'
2
+ require "stringio"
3
+ Excon.defaults[:ssl_verify_peer] = false
4
+ class ThriftRack
5
+ class HttpCLientTransport < Thrift::HTTPClientTransport
6
+ def initialize(url, opts = {})
7
+ super
8
+ @client = Excon.new(url, persistent: true)
9
+ end
10
+
11
+ def flush
12
+ resp = @client.post(body: @outbuf, headers: @headers, idempotent: true)
13
+ data = resp.body
14
+ data = Thrift::Bytes.force_binary_encoding(data)
15
+ @inbuf = StringIO.new data
16
+ ensure
17
+ @outbuf = Thrift::Bytes.empty_byte_buffer
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,16 @@
1
+ require 'connection_pool'
2
+ class ThriftRack
3
+ class TransportPool
4
+ class << self
5
+ def pool
6
+ @pool ||= {}
7
+ end
8
+
9
+ def get(url)
10
+ @pool ||= {}
11
+ uri = URI(url)
12
+ @pool["#{uri.host}:#{uri.port}"] ||= ConnectionPool::Wrapper.new(size: ThriftRack::Client.pool_size, timeout: ThriftRack::Client.pool_timeout) {ThriftRack::HttpCLientTransport.new(url)}
13
+ end
14
+ end
15
+ end
16
+ end
@@ -1,3 +1,3 @@
1
1
  class ThriftRack
2
- VERSION = "0.1.6"
2
+ VERSION = "0.1.7"
3
3
  end
data/lib/thrift_rack.rb CHANGED
@@ -4,6 +4,8 @@ require "thrift_rack/logger"
4
4
  require "thrift_rack/client"
5
5
  require 'thrift_rack/ping'
6
6
  require 'thrift_rack/format_check'
7
+ require 'thrift_rack/http_client_transport'
8
+ require 'thrift_rack/transport_pool'
7
9
 
8
10
  require 'rack'
9
11
  require 'thrift'
data/thrift_rack.gemspec CHANGED
@@ -23,6 +23,8 @@ Gem::Specification.new do |spec|
23
23
 
24
24
  spec.add_dependency "rack", ">= 2.0"
25
25
  spec.add_dependency "thrift", '~> 0.10.0'
26
+ spec.add_dependency "excon", "~> 0.62.0"
27
+ spec.add_dependency "connection_pool", "~> 2.2.1"
26
28
 
27
29
  spec.add_development_dependency "bundler", "~> 1.16"
28
30
  spec.add_development_dependency "rake", "~> 10.0"
metadata CHANGED
@@ -1,83 +1,111 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: thrift_rack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - xuxiangyang
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-04-27 00:00:00.000000000 Z
11
+ date: 2018-04-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: '2.0'
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
26
  version: '2.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: thrift
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
33
  version: 0.10.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
40
  version: 0.10.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: excon
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: 0.62.0
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 0.62.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: connection_pool
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 2.2.1
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: 2.2.1
41
69
  - !ruby/object:Gem::Dependency
42
70
  name: bundler
43
71
  requirement: !ruby/object:Gem::Requirement
44
72
  requirements:
45
- - - "~>"
73
+ - - ~>
46
74
  - !ruby/object:Gem::Version
47
75
  version: '1.16'
48
76
  type: :development
49
77
  prerelease: false
50
78
  version_requirements: !ruby/object:Gem::Requirement
51
79
  requirements:
52
- - - "~>"
80
+ - - ~>
53
81
  - !ruby/object:Gem::Version
54
82
  version: '1.16'
55
83
  - !ruby/object:Gem::Dependency
56
84
  name: rake
57
85
  requirement: !ruby/object:Gem::Requirement
58
86
  requirements:
59
- - - "~>"
87
+ - - ~>
60
88
  - !ruby/object:Gem::Version
61
89
  version: '10.0'
62
90
  type: :development
63
91
  prerelease: false
64
92
  version_requirements: !ruby/object:Gem::Requirement
65
93
  requirements:
66
- - - "~>"
94
+ - - ~>
67
95
  - !ruby/object:Gem::Version
68
96
  version: '10.0'
69
97
  - !ruby/object:Gem::Dependency
70
98
  name: pry
71
99
  requirement: !ruby/object:Gem::Requirement
72
100
  requirements:
73
- - - "~>"
101
+ - - ~>
74
102
  - !ruby/object:Gem::Version
75
103
  version: '0'
76
104
  type: :development
77
105
  prerelease: false
78
106
  version_requirements: !ruby/object:Gem::Requirement
79
107
  requirements:
80
- - - "~>"
108
+ - - ~>
81
109
  - !ruby/object:Gem::Version
82
110
  version: '0'
83
111
  description: thrift http rakc server
@@ -87,7 +115,7 @@ executables: []
87
115
  extensions: []
88
116
  extra_rdoc_files: []
89
117
  files:
90
- - ".gitignore"
118
+ - .gitignore
91
119
  - CODE_OF_CONDUCT.md
92
120
  - Gemfile
93
121
  - Gemfile.lock
@@ -95,12 +123,15 @@ files:
95
123
  - README.md
96
124
  - Rakefile
97
125
  - config.ru
126
+ - lib/config.ru
98
127
  - lib/thrift_rack.rb
99
128
  - lib/thrift_rack/client.rb
100
129
  - lib/thrift_rack/format_check.rb
130
+ - lib/thrift_rack/http_client_transport.rb
101
131
  - lib/thrift_rack/logger.rb
102
132
  - lib/thrift_rack/ping.rb
103
133
  - lib/thrift_rack/server.rb
134
+ - lib/thrift_rack/transport_pool.rb
104
135
  - lib/thrift_rack/version.rb
105
136
  - thrift_rack.gemspec
106
137
  homepage: https://github.com/xuxiangyang/thrift_rack
@@ -113,17 +144,17 @@ require_paths:
113
144
  - lib
114
145
  required_ruby_version: !ruby/object:Gem::Requirement
115
146
  requirements:
116
- - - ">="
147
+ - - '>='
117
148
  - !ruby/object:Gem::Version
118
149
  version: '0'
119
150
  required_rubygems_version: !ruby/object:Gem::Requirement
120
151
  requirements:
121
- - - ">="
152
+ - - '>='
122
153
  - !ruby/object:Gem::Version
123
154
  version: '0'
124
155
  requirements: []
125
156
  rubyforge_project:
126
- rubygems_version: 2.6.14
157
+ rubygems_version: 2.0.14.1
127
158
  signing_key:
128
159
  specification_version: 4
129
160
  summary: thrift http rakc server