oni 4.1.0 → 4.2.1

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
- SHA1:
3
- metadata.gz: 4b4738a5669401fa905d283e4edd281aa7887747
4
- data.tar.gz: 0b961cee5c6dfb02026cf774ed36a1e787923a59
2
+ SHA256:
3
+ metadata.gz: 84e61e1f126f7c501b4182d2322fec884ed1919a1e390c07f260e9a6ff06f3ed
4
+ data.tar.gz: a0f2c4f830f421199d548b328455b7db84888a508b1135d1738f4733b6f3d479
5
5
  SHA512:
6
- metadata.gz: fd755fdced951be0b3f71fee761f720de550533939d83e5c02e39b7b29c01f8b49ad1d340c3c13a5369c36b74780c63f1578726713a38a5f9f675c3177d4a540
7
- data.tar.gz: 5e6330b01276fbf0efe9dda7f97e54dd7fe6819250e2caa889ff7a8c735b0944c2af0a1d9a00a2e74c2c66f49bc9674e5675c85472cb02ccc13847ca179725a7
6
+ metadata.gz: 5301a19390c41d67d0ae4517f4cdf37450d86f9ac2b756339de309cb1a4c1aa0be9584609c1a40d58c997c9dab0445b218e9889565914460f9e2a3c798b4e91f
7
+ data.tar.gz: 8cd91c4be8cb85e570bd0108b0b70bd0a8571e32d5ee0220de132380f368832f9df4578a199b48e8bcd91373ed7ced89fdba700f60bc1f5a922b8a855816a744
@@ -38,12 +38,9 @@ module Oni
38
38
  #
39
39
  def option(name, default = nil)
40
40
  value = self.class.options[name.to_sym]
41
+ value = default if default and !value
41
42
 
42
- if default and !value
43
- value = default
44
- end
45
-
46
- return value.respond_to?(:call) ? value.call : value
43
+ if value.respond_to? :call then value.call else value end
47
44
  end
48
45
 
49
46
  ##
@@ -102,6 +99,7 @@ module Oni
102
99
  set(option, value)
103
100
  end
104
101
  end
105
- end # ClassMethods
106
- end # Configurable
107
- end # Oni
102
+
103
+ end
104
+ end
105
+ end
data/lib/oni/daemon.rb CHANGED
@@ -13,7 +13,14 @@ module Oni
13
13
  class Daemon
14
14
  include Configurable
15
15
 
16
- attr_reader :workers
16
+ attr_reader :daemon_workers
17
+
18
+ ##
19
+ # The default amount of worker to start.
20
+ #
21
+ # @return [Fixnum]
22
+ #
23
+ DEFAULT_WORKER_AMOUNT = 1
17
24
 
18
25
  ##
19
26
  # The default amount of threads to start.
@@ -34,7 +41,7 @@ module Oni
34
41
  # is defined.
35
42
  #
36
43
  def initialize
37
- @workers = []
44
+ @daemon_workers = {}
38
45
 
39
46
  after_initialize if respond_to?(:after_initialize)
40
47
  end
@@ -49,17 +56,14 @@ module Oni
49
56
  def start
50
57
  before_start if respond_to?(:before_start)
51
58
 
52
- if threads > 0
53
- threads.times do
54
- workers << spawn_thread
55
- end
59
+ return run_thread if threads <= 1
60
+ return spawn_worker if workers <= 1
56
61
 
57
- workers.each(&:join)
58
-
59
- # If we don't have any threads run in non threaded mode.
60
- else
61
- run_thread
62
- end
62
+ Array.new workers do |i|
63
+ Thread.new do
64
+ Process.wait fork{ spawn_worker i+1 } while true
65
+ end
66
+ end.each(&:join)
63
67
  rescue => error
64
68
  error(error)
65
69
  end
@@ -70,8 +74,14 @@ module Oni
70
74
  # be shut down *immediately*.
71
75
  #
72
76
  def stop
73
- workers.each(&:kill)
74
- workers.clear
77
+ daemon_workers.each do |pid, worker_threads|
78
+ worker_threads.each(&:kill)
79
+ worker_threads.clear
80
+ end
81
+ end
82
+
83
+ def workers
84
+ option :workers, DEFAULT_WORKER_AMOUNT
75
85
  end
76
86
 
77
87
  ##
@@ -80,7 +90,7 @@ module Oni
80
90
  # @return [Fixnum]
81
91
  #
82
92
  def threads
83
- return option(:threads, DEFAULT_THREAD_AMOUNT)
93
+ option :threads, DEFAULT_THREAD_AMOUNT
84
94
  end
85
95
 
86
96
  ##
@@ -168,6 +178,19 @@ module Oni
168
178
  return option(:mapper).new
169
179
  end
170
180
 
181
+ ##
182
+ # Spawns a new thread that waits for daemon input.
183
+ #
184
+ # @return [Thread]
185
+ #
186
+ def spawn_worker i = nil
187
+ Process.setproctitle "#{$0}: worker #{i}" if i
188
+
189
+ daemon_workers[Process.pid] = Array.new threads do
190
+ spawn_thread
191
+ end.each(&:join)
192
+ end
193
+
171
194
  ##
172
195
  # Spawns a new thread that waits for daemon input.
173
196
  #
@@ -198,5 +221,6 @@ module Oni
198
221
 
199
222
  retry
200
223
  end
201
- end # Daemon
202
- end # Oni
224
+
225
+ end
226
+ end
@@ -20,6 +20,7 @@ module Oni
20
20
  # information on the available options.
21
21
  #
22
22
  class SQS < Daemon
23
+
23
24
  ##
24
25
  # Checks if the `queue_name` option is set.
25
26
  #
@@ -31,8 +32,14 @@ module Oni
31
32
  # Polls an SQS queue for a message and processes it.
32
33
  #
33
34
  def receive
34
- queue.poll(poll_options) do |message|
35
- yield message
35
+ poll_options.merge! max_number_of_messages: 10
36
+
37
+ queue.poll poll_options do |messages|
38
+ next yield messages unless messages.is_a? Array
39
+
40
+ messages.each do |message|
41
+ yield message
42
+ end
36
43
  end
37
44
  end
38
45
 
@@ -64,6 +71,7 @@ module Oni
64
71
 
65
72
  return response.queue_url
66
73
  end
67
- end # SQS
68
- end # Daemons
69
- end # Oni
74
+
75
+ end
76
+ end
77
+ end
data/lib/oni/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Oni
2
- VERSION = '4.1.0'
2
+ VERSION = '4.2.1'
3
3
  end # Oni
data/oni.gemspec CHANGED
@@ -10,7 +10,6 @@ Gem::Specification.new do |gem|
10
10
 
11
11
  gem.summary = 'Framework for building concurrent daemons in Ruby.'
12
12
  gem.description = gem.summary
13
- gem.has_rdoc = 'yard'
14
13
  gem.license = 'MIT'
15
14
 
16
15
  gem.required_ruby_version = '>= 1.9.3'
@@ -30,5 +29,6 @@ Gem::Specification.new do |gem|
30
29
  gem.add_development_dependency 'yard'
31
30
  gem.add_development_dependency 'simplecov'
32
31
  gem.add_development_dependency 'kramdown'
32
+ gem.add_development_dependency 'pry'
33
33
  gem.add_development_dependency 'aws-sdk', '~> 2.0'
34
34
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oni
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.0
4
+ version: 4.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yorick Peterse
8
8
  - Wilco van Duinkerken
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-09-26 00:00:00.000000000 Z
12
+ date: 2021-12-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -95,6 +95,20 @@ dependencies:
95
95
  - - ">="
96
96
  - !ruby/object:Gem::Version
97
97
  version: '0'
98
+ - !ruby/object:Gem::Dependency
99
+ name: pry
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
98
112
  - !ruby/object:Gem::Dependency
99
113
  name: aws-sdk
100
114
  requirement: !ruby/object:Gem::Requirement
@@ -110,7 +124,7 @@ dependencies:
110
124
  - !ruby/object:Gem::Version
111
125
  version: '2.0'
112
126
  description: Framework for building concurrent daemons in Ruby.
113
- email:
127
+ email:
114
128
  executables: []
115
129
  extensions: []
116
130
  extra_rdoc_files: []
@@ -129,11 +143,11 @@ files:
129
143
  - lib/oni/worker.rb
130
144
  - lib/oni/wrapped_error.rb
131
145
  - oni.gemspec
132
- homepage:
146
+ homepage:
133
147
  licenses:
134
148
  - MIT
135
149
  metadata: {}
136
- post_install_message:
150
+ post_install_message:
137
151
  rdoc_options: []
138
152
  require_paths:
139
153
  - lib
@@ -148,9 +162,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
148
162
  - !ruby/object:Gem::Version
149
163
  version: '0'
150
164
  requirements: []
151
- rubyforge_project:
152
- rubygems_version: 2.6.13
153
- signing_key:
165
+ rubygems_version: 3.0.9
166
+ signing_key:
154
167
  specification_version: 4
155
168
  summary: Framework for building concurrent daemons in Ruby.
156
169
  test_files: []