oni 4.1.0 → 4.2.1

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.
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: []