event_aggregator 1.1.4.pre.pre → 1.1.4
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 +8 -8
- data/lib/event_aggregator.rb +0 -1
- data/lib/event_aggregator/aggregator.rb +0 -11
- data/lib/event_aggregator/listener.rb +0 -5
- data/lib/event_aggregator/message.rb +2 -5
- data/lib/event_aggregator/message_job.rb +0 -1
- data/lib/event_aggregator/version.rb +1 -1
- data/spec/lib/event_aggregator/aggregator_spec.rb +2 -72
- data/spec/spec_helper.rb +7 -17
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MTA4MzQ1NDU2ZDMxMzkzYTQ0ZjkwNzBlMGFlODhhMDE2NWZjYjU5Yw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
OWIwZmY0NGM0NzBmOGU2MDc2ZGYxMDBkZjY5NjlmNjVmOWJjMjM0Ng==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YWI2ZjJhOTAzMTU3MTNmNzQwNWEyYWE3NTFlMzg2ZTIwYTQzZTRhMzA4MjVi
|
10
|
+
NTk0ZDc2MDMwOTI1NjQ5NTJmZDdlNGQ5MjJhMzRmMWU3MDUzNTU2YjhkZGI1
|
11
|
+
MGVkZDY5ZmY2MDM1MWZlZDAxZTk5MWJmYzgwYWNiYjNhOGNjMTQ=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NTA3NjFkNmFkOTEyOTZjZWE3N2MxYTFhMjc3YjMwMDY5ODU0MDVmMjZjYmFh
|
14
|
+
YjZmNGNjNmNmOTgyNmE1MTRmMmRjZjc5Njc2NmVhOTViYTViYTJjOGIzNzI5
|
15
|
+
ZDkxN2RlZjBkNmJiYjg2YmI4NmZhZGZhZDkzZWM3NzM4N2JhOTE=
|
data/lib/event_aggregator.rb
CHANGED
@@ -27,7 +27,6 @@ module EventAggregator
|
|
27
27
|
# message_type is published. Is executed with message.data as parameter.
|
28
28
|
#
|
29
29
|
def self.register( listener, message_type, callback )
|
30
|
-
puts 'def self.register( listener, message_type, callback )'
|
31
30
|
raise "Illegal listener" unless listener.class < EventAggregator::Listener
|
32
31
|
raise "Illegal message_type" if message_type == nil
|
33
32
|
raise "Illegal callback" unless callback.respond_to?(:call)
|
@@ -45,7 +44,6 @@ module EventAggregator
|
|
45
44
|
# will execute with the message as parameter.
|
46
45
|
#
|
47
46
|
def self.register_all( listener, callback )
|
48
|
-
puts 'def self.register_all( listener, callback )'
|
49
47
|
raise "Illegal listener" unless listener.class < EventAggregator::Listener
|
50
48
|
raise "Illegal callback" unless callback.respond_to?(:call)
|
51
49
|
@@listeners_all[listener] = callback
|
@@ -59,7 +57,6 @@ module EventAggregator
|
|
59
57
|
# the messages.
|
60
58
|
# message_type - The message type to unregister for.
|
61
59
|
def self.unregister( listener, message_type )
|
62
|
-
puts 'def self.unregister( listener, message_type )'
|
63
60
|
@@listeners[message_type].delete(listener)
|
64
61
|
end
|
65
62
|
|
@@ -68,7 +65,6 @@ module EventAggregator
|
|
68
65
|
# listener - The listener who should no longer get any messages at all,
|
69
66
|
# regardless of type.
|
70
67
|
def self.unregister_all( listener )
|
71
|
-
puts 'def self.unregister_all( listener )'
|
72
68
|
@@listeners.each do |key,value|
|
73
69
|
value.delete(listener)
|
74
70
|
end
|
@@ -82,7 +78,6 @@ module EventAggregator
|
|
82
78
|
# async - true => message will be sent async. Default true
|
83
79
|
# consisten_data - true => the same object will be sent to all recievers. Default false
|
84
80
|
def self.message_publish ( message )
|
85
|
-
puts 'def self.message_publish ( message )'
|
86
81
|
raise "Invalid message" unless message.respond_to?(:message_type) && message.respond_to?(:data)
|
87
82
|
@@listeners[message.message_type].each do |listener, callback|
|
88
83
|
perform_message_job(message.data, callback, message.async, message.consisten_data)
|
@@ -100,7 +95,6 @@ module EventAggregator
|
|
100
95
|
# Use EventAggregator::Aggregator.reset before each test when doing unit testing.
|
101
96
|
#
|
102
97
|
def self.reset
|
103
|
-
puts 'def self.reset'
|
104
98
|
@@listeners = Hash.new{|h, k| h[k] = Hash.new}
|
105
99
|
@@listeners_all = Hash.new
|
106
100
|
@@message_translation = Hash.new{|h, k| h[k] = Hash.new }
|
@@ -114,7 +108,6 @@ module EventAggregator
|
|
114
108
|
# callback=lambda{|data| data} - The callback that will transform the data from message_type to message_type_new. Default: copy.
|
115
109
|
#
|
116
110
|
def self.translate_message_with(message_type, message_type_new, callback=lambda{|data| data})
|
117
|
-
puts 'def self.translate_message_with(message_type, message_type_new, callback=lambda{|data| data})'
|
118
111
|
raise "Illegal parameters" if message_type == nil || message_type_new == nil || !callback.respond_to?(:call) || callback.arity != 1 #TODO: The callback.parameters is not 1.8.7 compatible.
|
119
112
|
raise "Illegal parameters, equal message_type and message_type_new" if message_type == message_type_new || message_type.eql?(message_type_new)
|
120
113
|
|
@@ -133,7 +126,6 @@ module EventAggregator
|
|
133
126
|
# EventAggregator::Aggregator.register_producer("GetMultipliedByTwo", lambda{|data| data*2})
|
134
127
|
#
|
135
128
|
def self.register_producer(message_type, callback)
|
136
|
-
puts 'def self.register_producer(message_type, callback)'
|
137
129
|
raise "Illegal message_type" if message_type == nil
|
138
130
|
raise "Illegal callback" unless callback.respond_to?(:call) && callback.arity == 1
|
139
131
|
|
@@ -147,7 +139,6 @@ module EventAggregator
|
|
147
139
|
# message_type - The message type which will no longer respond to message requests.
|
148
140
|
#
|
149
141
|
def self.unregister_producer(message_type)
|
150
|
-
puts 'def self.unregister_producer(message_type)'
|
151
142
|
@@producers.delete(message_type)
|
152
143
|
end
|
153
144
|
|
@@ -159,13 +150,11 @@ module EventAggregator
|
|
159
150
|
# Returns The data provided by a producer registered for this specific message type, or nil.
|
160
151
|
#
|
161
152
|
def self.message_request(message)
|
162
|
-
puts 'def self.message_request(message)'
|
163
153
|
@@producers[message.message_type] ? @@producers[message.message_type].call(message.data) : nil
|
164
154
|
end
|
165
155
|
|
166
156
|
private
|
167
157
|
def self.perform_message_job(data, callback, async, consisten_data)
|
168
|
-
puts 'def self.perform_message_job(data, callback, async, consisten_data)'
|
169
158
|
case [async, consisten_data]
|
170
159
|
when [true, true] then @@pool.process{ EventAggregator::MessageJob.new.perform(data, callback) }
|
171
160
|
when [true, false] then @@pool.process{ EventAggregator::MessageJob.new.perform(data.clone, callback) }
|
@@ -28,7 +28,6 @@ module EventAggregator
|
|
28
28
|
# message_type_register("foo", Proc.new { puts "foo" })
|
29
29
|
#
|
30
30
|
def message_type_register( message_type, callback )
|
31
|
-
puts 'def message_type_register( message_type, callback )'
|
32
31
|
Aggregator.register( self, message_type, callback)
|
33
32
|
end
|
34
33
|
|
@@ -39,7 +38,6 @@ module EventAggregator
|
|
39
38
|
# callback - The method that will be invoked every time this message type is received. Must have: callback.respond_to? :call #=> true
|
40
39
|
#
|
41
40
|
def message_type_register_all(callback)
|
42
|
-
puts 'def message_type_register_all(callback)'
|
43
41
|
Aggregator.register_all(self, callback)
|
44
42
|
end
|
45
43
|
|
@@ -53,7 +51,6 @@ module EventAggregator
|
|
53
51
|
# message_type_unregister("foo")
|
54
52
|
#
|
55
53
|
def message_type_unregister( message_type )
|
56
|
-
puts 'def message_type_unregister( message_type )'
|
57
54
|
Aggregator.unregister(self, message_type)
|
58
55
|
end
|
59
56
|
|
@@ -62,7 +59,6 @@ module EventAggregator
|
|
62
59
|
# Listener will no longer recieve any callbacks when messages of any kind are published.
|
63
60
|
#
|
64
61
|
def message_type_unregister_all
|
65
|
-
puts 'def message_type_unregister_all'
|
66
62
|
Aggregator.unregister_all(self)
|
67
63
|
end
|
68
64
|
|
@@ -79,7 +75,6 @@ module EventAggregator
|
|
79
75
|
# # => 6
|
80
76
|
#
|
81
77
|
def producer_register(message_type, callback)
|
82
|
-
puts 'def producer_register(message_type, callback)'
|
83
78
|
Aggregator.register_producer(message_type, callback)
|
84
79
|
end
|
85
80
|
end
|
@@ -33,7 +33,6 @@ module EventAggregator
|
|
33
33
|
# consisten_data = false - Indicates if EventAggregator::Listener objects
|
34
34
|
# should recieve a consistent object reference or clones.
|
35
35
|
def initialize(message_type, data, async = true, consisten_data = false)
|
36
|
-
puts 'def initialize(message_type, data, async = true, consisten_data = false)'
|
37
36
|
raise "Illegal Message Type" if message_type == nil
|
38
37
|
|
39
38
|
@message_type = message_type
|
@@ -46,15 +45,13 @@ module EventAggregator
|
|
46
45
|
# EventAggregator::Listener that is registered for message types
|
47
46
|
# equal to this.message_type
|
48
47
|
def publish
|
49
|
-
puts 'def publish'
|
50
48
|
Aggregator.message_publish( self )
|
51
49
|
end
|
52
|
-
|
50
|
+
|
53
51
|
# Public: Will provide data if a producer of this message_type is present.
|
54
|
-
#
|
52
|
+
#
|
55
53
|
# Returns Requested data if a producer is present. Nil otherwise.
|
56
54
|
def request
|
57
|
-
puts 'def request'
|
58
55
|
Aggregator.message_request( self )
|
59
56
|
end
|
60
57
|
end
|
@@ -9,13 +9,9 @@ describe EventAggregator::Aggregator do
|
|
9
9
|
let(:random_string) { Faker::Internet.password }
|
10
10
|
let(:random_number) { Faker::Number.number(rand(9)) }
|
11
11
|
|
12
|
-
before(:
|
12
|
+
before(:each) do
|
13
13
|
EventAggregator::Aggregator.reset
|
14
14
|
end
|
15
|
-
|
16
|
-
after(:each) do
|
17
|
-
EventAggregator::Aggregator.restart_pool
|
18
|
-
end
|
19
15
|
describe "self.register" do
|
20
16
|
describe 'legal parameters' do
|
21
17
|
it "no errors" do
|
@@ -233,7 +229,7 @@ describe EventAggregator::Aggregator do
|
|
233
229
|
EventAggregator::Aggregator.message_publish(message)
|
234
230
|
end
|
235
231
|
|
236
|
-
it 'run all callbacks for all message types' do
|
232
|
+
it 'run all callbacks for all message types' do
|
237
233
|
EventAggregator::Aggregator.register_all(listener, callback)
|
238
234
|
|
239
235
|
message1 = EventAggregator::Message.new(message_type , data)
|
@@ -583,70 +579,4 @@ describe EventAggregator::Aggregator do
|
|
583
579
|
end
|
584
580
|
end
|
585
581
|
end
|
586
|
-
|
587
|
-
describe 'propagates fully' do
|
588
|
-
class TestClassSingle
|
589
|
-
include EventAggregator::Listener
|
590
|
-
|
591
|
-
def initialize
|
592
|
-
message_type_register("message_type", method(:test_method))
|
593
|
-
end
|
594
|
-
|
595
|
-
def test_method(data)
|
596
|
-
self.self_called(data)
|
597
|
-
end
|
598
|
-
def self_called(data)
|
599
|
-
end
|
600
|
-
end
|
601
|
-
|
602
|
-
class TestClassAll
|
603
|
-
include EventAggregator::Listener
|
604
|
-
|
605
|
-
def initialize
|
606
|
-
message_type_register_all(method(:test_method))
|
607
|
-
end
|
608
|
-
|
609
|
-
def test_method(data)
|
610
|
-
self.self_called(data)
|
611
|
-
end
|
612
|
-
def self_called(data)
|
613
|
-
end
|
614
|
-
end
|
615
|
-
|
616
|
-
it "calls method on test class single" do
|
617
|
-
test_class = TestClassSingle.new
|
618
|
-
expect(test_class).to receive(:self_called).with(data)
|
619
|
-
message = EventAggregator::Message.new("message_type", data)
|
620
|
-
EventAggregator::Aggregator.message_publish(message)
|
621
|
-
end
|
622
|
-
|
623
|
-
it "calls method on test class all" do
|
624
|
-
test_class = TestClassAll.new
|
625
|
-
message = EventAggregator::Message.new("message_type", data)
|
626
|
-
expect(test_class).to receive(:self_called){|e| expect(e.message_type).to eq("message_type") and expect(e.data).to eq(data)}
|
627
|
-
EventAggregator::Aggregator.message_publish(message)
|
628
|
-
end
|
629
|
-
|
630
|
-
it "calls method on test class single full-stack" do
|
631
|
-
test_class = TestClassSingle.new
|
632
|
-
expect(test_class).to receive(:self_called).with(data)
|
633
|
-
message = EventAggregator::Message.new("message_type", data)
|
634
|
-
message.publish
|
635
|
-
end
|
636
|
-
|
637
|
-
it "calls method on test class all full-stack" do
|
638
|
-
test_class = TestClassAll.new
|
639
|
-
message = EventAggregator::Message.new("message_type", data)
|
640
|
-
expect(test_class).to receive(:self_called){|e| expect(e.message_type).to eq("message_type") and expect(e.data).to eq(data)}
|
641
|
-
message.publish
|
642
|
-
end
|
643
|
-
it "calls method on mulitple" do
|
644
|
-
test_class = TestClassAll.new
|
645
|
-
test_class2 = TestClassSingle.new
|
646
|
-
message = EventAggregator::Message.new("message_type", data)
|
647
|
-
expect(test_class).to receive(:self_called){|e| expect(e.message_type).to eq("message_type") and expect(e.data).to eq(data)}
|
648
|
-
expect(test_class2).to receive(:self_called){|e| expect(e.message_type).to eq("message_type") and expect(e.data).to eq(data)}
|
649
|
-
message.publish
|
650
|
-
end
|
651
|
-
end
|
652
582
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -10,13 +10,13 @@ Coveralls.wear!
|
|
10
10
|
|
11
11
|
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
#
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
13
|
+
class Thread::Pool
|
14
|
+
|
15
|
+
# Public: Overriding the process-call of the thread::pool so we can do tests better
|
16
|
+
def process (*args, &block)
|
17
|
+
block.call(*args)
|
18
|
+
end
|
19
|
+
end
|
20
20
|
|
21
21
|
RSpec.configure do |config|
|
22
22
|
config.treat_symbols_as_metadata_keys_with_true_values = true
|
@@ -29,13 +29,3 @@ RSpec.configure do |config|
|
|
29
29
|
# --seed 1234
|
30
30
|
config.order = "random"
|
31
31
|
end
|
32
|
-
|
33
|
-
|
34
|
-
class EventAggregator::Aggregator
|
35
|
-
|
36
|
-
def self.restart_pool
|
37
|
-
@@pool.shutdown
|
38
|
-
@@pool = Thread.pool(4)
|
39
|
-
end
|
40
|
-
|
41
|
-
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: event_aggregator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.4
|
4
|
+
version: 1.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stephan Eriksen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-02-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -156,9 +156,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
156
156
|
version: '0'
|
157
157
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
158
158
|
requirements:
|
159
|
-
- - ! '
|
159
|
+
- - ! '>='
|
160
160
|
- !ruby/object:Gem::Version
|
161
|
-
version:
|
161
|
+
version: '0'
|
162
162
|
requirements: []
|
163
163
|
rubyforge_project:
|
164
164
|
rubygems_version: 2.2.0
|