em_mysql2_connection_pool 0.0.6 → 0.0.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: d9c0465c844214065182b966e3103ef2832177cc
4
- data.tar.gz: 3437a11406b3db7ba9f8b87db9e2d66b5926092d
3
+ metadata.gz: 6bb2177fffa62cf3a77f623977d375d2ed940514
4
+ data.tar.gz: 228676bf632e16f3d1c1574ebaa9e7f9565f2c1d
5
5
  SHA512:
6
- metadata.gz: ddddeb5d960f46f5a089abce871dfbfce85821be550082998685cd506b540c037ed2240e82fa9c8f1351b8faedae0e2dab95cecaccab141cd1aea5b2e14070f4
7
- data.tar.gz: 5d1ee48650ed91ba66bacf33d9ed4c64fd8e8bd4c19cb5bf65d68d9796e3cf37913be493789805af0b7124669949278bff127eaab57335592319ecd382e4a07e
6
+ metadata.gz: 15071f9295f6790d7164fa175becea1b94a207294ef182933c0fb59ec4d7a8071705fe25c48c854e502a1a6147e6b300ba7c33d6f66d98c396412820baed1731
7
+ data.tar.gz: fa493766791f19eaed365b3f7e99bc3749d143f801d3fc2ec2ccb65080da4e94f812481c4fc76880c930b4d0fb253ab7de5dd338dfaa7bca928fbc210b39e954
@@ -2,36 +2,36 @@ require 'mysql2'
2
2
  require 'mysql2/em'
3
3
 
4
4
  class EmMysql2ConnectionPool
5
-
5
+
6
6
  class Query
7
7
  def initialize(sql, opts, deferrable)
8
8
  @sql, @opts, @deferrable = sql, opts, deferrable
9
9
  end
10
-
10
+
11
11
  def sql(connection)
12
12
  @sql.respond_to?(:call) ? @sql.call(connection) : @sql
13
13
  end
14
-
14
+
15
15
  def execute(connection, &block)
16
16
  @busy = true
17
17
  @query_text = sql(connection)
18
18
  q = connection.query @query_text, @opts
19
19
  q.callback{ |result| succeed result, connection.affected_rows, &block }
20
- q.errback{ |error| fail error, &block }
20
+ q.errback{ |error| fail error, &block }
21
21
  return q
22
22
  rescue StandardError => error
23
23
  fail error, &block
24
24
  end
25
-
25
+
26
26
  def succeed(result, affected_rows, &block)
27
27
  @deferrable.succeed result, affected_rows
28
28
  rescue StandardError => error
29
- fail error
29
+ fail error, &block
30
30
  ensure
31
31
  @busy and block and block.call
32
32
  @busy = false
33
33
  end
34
-
34
+
35
35
  def fail(error, &block)
36
36
  @deferrable.errback &default_errback unless has_errbacks?
37
37
  @deferrable.fail error, @query_text
@@ -39,28 +39,28 @@ class EmMysql2ConnectionPool
39
39
  @busy and block and block.call
40
40
  @busy = false
41
41
  end
42
-
42
+
43
43
  def has_errbacks?
44
44
  !@deferrable.errbacks.nil?
45
45
  end
46
-
46
+
47
47
  def default_errback
48
48
  proc{ |error, sql| puts "#{error.class}: '#{error.message}' with query #{sql} in #{error.backtrace.first}" }
49
49
  end
50
-
50
+
51
51
  end
52
-
52
+
53
53
  def initialize(conf)
54
54
  @pool_size = conf[:size] || 10
55
55
  @on_error = conf[:on_error]
56
56
  @query_queue = EM::Queue.new
57
57
  start_queue conf
58
58
  end
59
-
59
+
60
60
  def query_backlog
61
61
  @query_queue.size
62
62
  end
63
-
63
+
64
64
  def worker
65
65
  proc{ |connection|
66
66
  @query_queue.pop do |query|
@@ -68,22 +68,22 @@ class EmMysql2ConnectionPool
68
68
  end
69
69
  }
70
70
  end
71
-
71
+
72
72
  def start_queue(conf)
73
73
  @pool_size.times do
74
74
  worker.call Mysql2::EM::Client.new conf
75
75
  end
76
76
  end
77
-
77
+
78
78
  def on_error(&block)
79
79
  @on_error = block
80
80
  end
81
-
81
+
82
82
  def query(sql, opts={})
83
83
  deferrable = EM::DefaultDeferrableWithErrbacksAccessor.new
84
84
  deferrable.callback{ |result,affected_rows| yield result, affected_rows } if block_given?
85
85
  deferrable.errback &@on_error if @on_error
86
-
86
+
87
87
  @query_queue.push Query.new(sql, opts, deferrable)
88
88
  deferrable
89
89
  end
@@ -1,3 +1,3 @@
1
1
  module EmMysql2ConnectionPool
2
- VERSION = '0.0.6'
2
+ VERSION = '0.0.7'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: em_mysql2_connection_pool
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Niko Dittmann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-16 00:00:00.000000000 Z
11
+ date: 2017-01-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mysql2
@@ -80,7 +80,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
80
80
  version: '0'
81
81
  requirements: []
82
82
  rubyforge_project: em_mysql2_connection_pool
83
- rubygems_version: 2.5.1
83
+ rubygems_version: 2.6.8
84
84
  signing_key:
85
85
  specification_version: 4
86
86
  summary: a simple connection pool for Mysql2::EM connections