synapse-core 0.5.5 → 0.5.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. data/lib/synapse/auditing/audit_logger.rb +8 -4
  2. data/lib/synapse/auditing/correlation_data_provider.rb +4 -1
  3. data/lib/synapse/auditing/data_provider.rb +3 -1
  4. data/lib/synapse/command/command_bus.rb +14 -6
  5. data/lib/synapse/command/command_filter.rb +5 -3
  6. data/lib/synapse/command/command_handler.rb +5 -3
  7. data/lib/synapse/command/dispatch_interceptor.rb +5 -3
  8. data/lib/synapse/command/duplication.rb +3 -3
  9. data/lib/synapse/command/mapping.rb +1 -1
  10. data/lib/synapse/command/rollback_policy.rb +6 -4
  11. data/lib/synapse/domain/simple_stream.rb +2 -0
  12. data/lib/synapse/domain/stream.rb +10 -6
  13. data/lib/synapse/event_bus/clustering/cluster.rb +10 -0
  14. data/lib/synapse/event_bus/clustering/event_bus.rb +55 -0
  15. data/lib/synapse/event_bus/clustering/selector.rb +14 -0
  16. data/lib/synapse/event_bus/event_bus.rb +9 -3
  17. data/lib/synapse/event_bus/event_listener.rb +5 -3
  18. data/lib/synapse/event_bus/mapping.rb +7 -4
  19. data/lib/synapse/event_sourcing/aggregate_factory.rb +6 -2
  20. data/lib/synapse/event_sourcing/conflict_resolver.rb +11 -0
  21. data/lib/synapse/event_sourcing/member.rb +1 -1
  22. data/lib/synapse/event_sourcing/snapshot/policy.rb +3 -1
  23. data/lib/synapse/event_sourcing/snapshot/taker.rb +3 -1
  24. data/lib/synapse/event_store/event_store.rb +12 -6
  25. data/lib/synapse/event_store/in_memory.rb +2 -2
  26. data/lib/synapse/mapping/mapping.rb +8 -2
  27. data/lib/synapse/process_manager/correlation.rb +2 -2
  28. data/lib/synapse/process_manager/correlation_resolver.rb +5 -3
  29. data/lib/synapse/process_manager/mapping/process.rb +4 -5
  30. data/lib/synapse/process_manager/pessimistic_lock_manager.rb +2 -2
  31. data/lib/synapse/process_manager/process.rb +3 -1
  32. data/lib/synapse/process_manager/process_factory.rb +6 -2
  33. data/lib/synapse/process_manager/process_manager.rb +6 -2
  34. data/lib/synapse/process_manager/process_repository.rb +14 -6
  35. data/lib/synapse/repository/lock_manager.rb +17 -3
  36. data/lib/synapse/repository/locking.rb +3 -1
  37. data/lib/synapse/repository/repository.rb +15 -5
  38. data/lib/synapse/serialization/converter.rb +3 -1
  39. data/lib/synapse/serialization/message/serialization_aware.rb +6 -2
  40. data/lib/synapse/serialization/revision_resolver.rb +3 -1
  41. data/lib/synapse/serialization/serializer.rb +9 -3
  42. data/lib/synapse/uow/nesting.rb +18 -6
  43. data/lib/synapse/uow/transaction_manager.rb +11 -5
  44. data/lib/synapse/upcasting/single_upcaster.rb +15 -16
  45. data/lib/synapse/upcasting/upcaster.rb +20 -17
  46. data/lib/synapse/upcasting/upcaster_chain.rb +2 -2
  47. data/lib/synapse/version.rb +1 -1
  48. data/test/auditing/data_provider_test.rb +9 -1
  49. data/test/command/mapping_test.rb +8 -2
  50. data/test/event_bus/mapping_test.rb +7 -2
  51. data/test/event_sourcing/repository_test.rb +1 -1
  52. data/test/repository/locking_test.rb +3 -0
  53. data/test/upcasting/fixtures.rb +3 -8
  54. metadata +5 -2
@@ -12,7 +12,9 @@ module Synapse
12
12
  # @param [Class] type
13
13
  # @param [Correlation] correlation
14
14
  # @return [Set]
15
- def find(type, correlation); end
15
+ def find(type, correlation)
16
+ raise NotImplementedError
17
+ end
16
18
 
17
19
  # Loads a known process by its unique identifier
18
20
  #
@@ -25,7 +27,9 @@ module Synapse
25
27
  # @abstract
26
28
  # @param [String] id
27
29
  # @return [Process] Returns nil if process could not be found
28
- def load(id); end
30
+ def load(id)
31
+ raise NotImplementedError
32
+ end
29
33
 
30
34
  # Commits the changes made to the process instance
31
35
  #
@@ -35,7 +39,9 @@ module Synapse
35
39
  # @abstract
36
40
  # @param [Process] process
37
41
  # @return [undefined]
38
- def commit(process); end
42
+ def commit(process)
43
+ raise NotImplementedError
44
+ end
39
45
 
40
46
  # Registers a newly created process with the repository
41
47
  #
@@ -47,7 +53,9 @@ module Synapse
47
53
  # @abstract
48
54
  # @param [Process] process
49
55
  # @return [undefined]
50
- def add(process); end
51
- end
52
- end
56
+ def add(process)
57
+ raise NotImplementedError
58
+ end
59
+ end # ProcessRepository
60
+ end # ProcessManager
53
61
  end
@@ -8,7 +8,9 @@ module Synapse
8
8
  # @abstract
9
9
  # @param [AggregateRoot] aggregate
10
10
  # @return [Boolean]
11
- def validate_lock(aggregate); end
11
+ def validate_lock(aggregate)
12
+ raise NotImplementedError
13
+ end
12
14
 
13
15
  # Obtains a lock for an aggregate with the given aggregate identifier. Depending on
14
16
  # the strategy, this method may return immediately or block until a lock is held.
@@ -16,7 +18,9 @@ module Synapse
16
18
  # @abstract
17
19
  # @param [Object] aggregate_id
18
20
  # @return [undefined]
19
- def obtain_lock(aggregate_id); end
21
+ def obtain_lock(aggregate_id)
22
+ raise NotImplementedError
23
+ end
20
24
 
21
25
  # Releases the lock held for an aggregate with the given aggregate identifier. The caller
22
26
  # of this method must ensure a valid lock was requested using {#obtain_lock}. If no lock
@@ -25,7 +29,9 @@ module Synapse
25
29
  # @abstract
26
30
  # @param [Object] aggregate_id
27
31
  # @return [undefined]
28
- def release_lock(aggregate_id); end
32
+ def release_lock(aggregate_id)
33
+ raise NotImplementedError
34
+ end
29
35
  end # LockManager
30
36
 
31
37
  # Implementation of a lock manager that does no locking
@@ -35,6 +41,14 @@ module Synapse
35
41
  def validate_lock(aggregate)
36
42
  true
37
43
  end
44
+
45
+ # @param [Object] aggregate_id
46
+ # @return [undefined]
47
+ def obtain_lock(aggregate_id); end
48
+
49
+ # @param [Object] aggregate_id
50
+ # @return [undefined]
51
+ def release_lock(aggregate_id); end
38
52
  end # NullLockManager
39
53
  end # Repository
40
54
  end
@@ -70,7 +70,9 @@ module Synapse
70
70
  # @param [Object] aggregate_id
71
71
  # @param [Integer] expected_version
72
72
  # @return [AggregateRoot]
73
- def perform_load(aggregate_id, expected_version); end
73
+ def perform_load(aggregate_id, expected_version)
74
+ raise NotImplementedError
75
+ end
74
76
 
75
77
  # Hook that is called after an aggregate is registered to the current unit of work
76
78
  #
@@ -26,7 +26,9 @@ module Synapse
26
26
  # @param [Object] aggregate_id
27
27
  # @param [Integer] expected_version If this is nil, no version validation is performed
28
28
  # @return [AggregateRoot]
29
- def load(aggregate_id, expected_version = nil); end
29
+ def load(aggregate_id, expected_version = nil)
30
+ raise NotImplementedError
31
+ end
30
32
 
31
33
  # Adds a new, unmanaged aggregate to the repository
32
34
  #
@@ -38,7 +40,9 @@ module Synapse
38
40
  # @raise [ArgumentError] If the version of the aggregate is not null
39
41
  # @param [AggregateRoot] aggregate
40
42
  # @return [undefined]
41
- def add(aggregate); end
43
+ def add(aggregate)
44
+ raise NotImplementedError
45
+ end
42
46
 
43
47
  protected
44
48
 
@@ -46,21 +50,27 @@ module Synapse
46
50
  #
47
51
  # @abstract
48
52
  # @return [Class]
49
- def aggregate_type; end
53
+ def aggregate_type
54
+ raise NotImplementedError
55
+ end
50
56
 
51
57
  # Deletes the given aggregate from the underlying storage mechanism
52
58
  #
53
59
  # @abstract
54
60
  # @param [AggregateRoot] aggregate
55
61
  # @return [undefined]
56
- def delete_aggregate(aggregate); end
62
+ def delete_aggregate(aggregate)
63
+ raise NotImplementedError
64
+ end
57
65
 
58
66
  # Saves the given aggregate using the underlying storage mechanism
59
67
  #
60
68
  # @abstract
61
69
  # @param [AggregateRoot] aggregate
62
70
  # @return [undefined]
63
- def save_aggregate(aggregate); end
71
+ def save_aggregate(aggregate)
72
+ raise NotImplementedError
73
+ end
64
74
 
65
75
  # Asserts that an aggregate being added is compatible with this repository and is newly
66
76
  # created
@@ -33,7 +33,9 @@ module Synapse
33
33
  # @abstract
34
34
  # @param [Object] original
35
35
  # @return [Object]
36
- def convert_content(original); end
36
+ def convert_content(original)
37
+ raise NotImplementedError
38
+ end
37
39
  end # Converter
38
40
  end # Serialization
39
41
  end
@@ -6,12 +6,16 @@ module Synapse
6
6
  # @param [Serializer] serializer
7
7
  # @param [Class] expected_type
8
8
  # @return [SerializedObject]
9
- def serialize_metadata(serializer, expected_type); end
9
+ def serialize_metadata(serializer, expected_type)
10
+ raise NotImplementedError
11
+ end
10
12
 
11
13
  # @param [Serializer] serializer
12
14
  # @param [Class] expected_type
13
15
  # @return [SerializedObject]
14
- def serialize_payload(serializer, expected_type); end
16
+ def serialize_payload(serializer, expected_type)
17
+ raise NotImplementedError
18
+ end
15
19
  end # SerializationAware
16
20
  end # Serialization
17
21
  end
@@ -8,7 +8,9 @@ module Synapse
8
8
  # @abstract
9
9
  # @param [Class] payload_type
10
10
  # @return [String] The revision of the given payload type
11
- def revision_of(payload_type); end
11
+ def revision_of(payload_type)
12
+ raise NotImplementedError
13
+ end
12
14
  end # RevisionResolver
13
15
 
14
16
  # Implementation of a revision resolver that returns a fixed value. This could be an
@@ -68,7 +68,9 @@ module Synapse
68
68
  # @abstract
69
69
  # @param [Object] content The original Ruby object to serialize
70
70
  # @return [Object] Should be in the native content type of the serializer
71
- def perform_serialize(content); end
71
+ def perform_serialize(content)
72
+ raise NotImplementedError
73
+ end
72
74
 
73
75
  # Deserializes the given serialized content into the given Ruby type
74
76
  #
@@ -76,13 +78,17 @@ module Synapse
76
78
  # @param [Object] content Should be in the native content type of the serializer
77
79
  # @param [Class] type The class type to be deserialized into
78
80
  # @return [Object] The deserialized object
79
- def perform_deserialize(content, type); end
81
+ def perform_deserialize(content, type)
82
+ raise NotImplementedError
83
+ end
80
84
 
81
85
  # Returns the native content type that the serializer works with
82
86
  #
83
87
  # @abstract
84
88
  # @return [Class]
85
- def native_content_type; end
89
+ def native_content_type
90
+ raise NotImplementedError
91
+ end
86
92
 
87
93
  private
88
94
 
@@ -121,38 +121,50 @@ module Synapse
121
121
  #
122
122
  # @abstract
123
123
  # @return [undefined]
124
- def perform_commit; end
124
+ def perform_commit
125
+ raise NotImplementedError
126
+ end
125
127
 
126
128
  # Executes logic required to rollback this unit of work
127
129
  #
128
130
  # @abstract
129
131
  # @param [Error] cause
130
132
  # @return [undefined]
131
- def perform_rollback(cause = nil); end
133
+ def perform_rollback(cause = nil)
134
+ raise NotImplementedError
135
+ end
132
136
 
133
137
  # Notifies listeners that this unit of work is cleaning up
134
138
  #
135
139
  # @abstract
136
140
  # @return [undefined]
137
- def notify_cleanup; end
141
+ def notify_cleanup
142
+ raise NotImplementedError
143
+ end
138
144
 
139
145
  # Notifies listeners that this unit of work is preparing to be committed
140
146
  #
141
147
  # @abstract
142
148
  # @return [undefined]
143
- def notify_prepare_commit; end
149
+ def notify_prepare_commit
150
+ raise NotImplementedError
151
+ end
144
152
 
145
153
  # Executes logic required when starting this unit of work
146
154
  #
147
155
  # @abstract
148
156
  # @return [undefined]
149
- def perform_start; end
157
+ def perform_start
158
+ raise NotImplementedError
159
+ end
150
160
 
151
161
  # Storages aggregates registered with this unit of work
152
162
  #
153
163
  # @abstract
154
164
  # @return [undefined]
155
- def store_aggregates; end
165
+ def store_aggregates
166
+ raise NotImplementedError
167
+ end
156
168
 
157
169
  # Commits all registered inner units of work. This should be invoked after events have been
158
170
  # dispatched and before any listeners are notified of the commit.
@@ -9,19 +9,25 @@ module Synapse
9
9
  #
10
10
  # @abstract
11
11
  # @return [Object]
12
- def start; end
12
+ def start
13
+ raise NotImplementedError
14
+ end
13
15
 
14
16
  # Commits the given transaction
15
17
  #
16
18
  # @param [Object] transaction
17
19
  # @return [undefined]
18
- def commit(transaction); end
20
+ def commit(transaction)
21
+ raise NotImplementedError
22
+ end
19
23
 
20
24
  # Rolls back the given transaction
21
25
  #
22
26
  # @param [Object] transaction
23
27
  # @return [undefined]
24
- def rollback(transaction); end
25
- end
26
- end
28
+ def rollback(transaction)
29
+ raise NotImplementedError
30
+ end
31
+ end # TransactionManager
32
+ end # UnitOfWork
27
33
  end
@@ -6,21 +6,18 @@ module Synapse
6
6
  # This mixin is not suitable if an upcaster needs to upcast a serialized object into multiple
7
7
  # newer serialized objects, or when the output representation type is not the same as the
8
8
  # expected representation type.
9
- module SingleUpcaster
10
- extend ActiveSupport::Concern
11
- include Upcaster
12
-
9
+ #
10
+ # @abstract
11
+ class SingleUpcaster < Upcaster
13
12
  # @param [SerialiedObject] intermediate
14
13
  # @param [Array<SerializedType>] expected_types
15
14
  # @param [UpcastingContext] upcast_context
16
15
  # @return [Array<SerializedObject>]
17
16
  def upcast(intermediate, expected_types, upcast_context)
18
- upcast_content = perform_upcast(intermediate, upcast_context)
17
+ upcast_content = perform_upcast intermediate, upcast_context
19
18
  upcast_objects = Array.new
20
19
 
21
- unless upcast_content
22
- return upcast_objects
23
- end
20
+ return upcast_objects unless upcast_content
24
21
 
25
22
  upcast_objects.push Serialization::SerializedObject.new(upcast_content, expected_content_type, expected_types.at(0))
26
23
  upcast_objects
@@ -29,12 +26,10 @@ module Synapse
29
26
  # @param [SerializedType] serialized_type
30
27
  # @return [Array<SerializedType>]
31
28
  def upcast_type(serialized_type)
32
- upcast_type = perform_upcast_type(serialized_type)
29
+ upcast_type = perform_upcast_type serialized_type
33
30
  upcast_types = Array.new
34
31
 
35
- unless upcast_type
36
- return upcast_types
37
- end
32
+ return upcast_types unless upcast_type
38
33
 
39
34
  upcast_types.push upcast_type
40
35
  upcast_types
@@ -46,12 +41,16 @@ module Synapse
46
41
  # @param [SerializedObject] intermediate
47
42
  # @param [UpcastingContext] upcast_context
48
43
  # @return [Object] If nil is returned, the serialized object will be dropped
49
- def perform_upcast(intermediate, upcast_context); end
44
+ def perform_upcast(intermediate, upcast_context)
45
+ raise NotImplementedError
46
+ end
50
47
 
51
48
  # @abstract
52
49
  # @param [SerializedType] serialized_type
53
50
  # @return [SerializedType] If nil is returned, the serialized object will be dropped
54
- def perform_upcast_type(serialized_type); end
55
- end
56
- end
51
+ def perform_upcast_type(serialized_type)
52
+ raise NotImplementedError
53
+ end
54
+ end # SingleUpcaster
55
+ end # Upcasting
57
56
  end
@@ -10,19 +10,16 @@ module Synapse
10
10
  #
11
11
  # For performance reasons, it is advisable to ensure that all upcasters in the same chain use
12
12
  # the same intermediate representation type.
13
- module Upcaster
14
- extend ActiveSupport::Concern
15
-
16
- included do
17
- class_attribute :expected_content_type
18
- end
13
+ #
14
+ # @abstract
15
+ class Upcaster
16
+ # @return [Class]
17
+ class_attribute :expected_content_type
19
18
 
20
- module ClassMethods
21
- # @param [Class] type
22
- # @return [undefined]
23
- def expects_content_type(type)
24
- self.expected_content_type = type
25
- end
19
+ # @param [Class] type
20
+ # @return [undefined]
21
+ def self.expects_content_type(type)
22
+ self.expected_content_type = type
26
23
  end
27
24
 
28
25
  # Returns true if this upcaster is capable of upcasting the given type
@@ -30,7 +27,9 @@ module Synapse
30
27
  # @abstract
31
28
  # @param [SerializedType] serialized_type
32
29
  # @return [Boolean]
33
- def can_upcast?(serialized_type); end
30
+ def can_upcast?(serialized_type)
31
+ raise NotImplementedError
32
+ end
34
33
 
35
34
  # Upcasts a given serialized object to zero or more upcast objects
36
35
  #
@@ -42,14 +41,18 @@ module Synapse
42
41
  # @param [Array<SerializedType>] expected_types
43
42
  # @param [UpcastingContext] upcast_context
44
43
  # @return [Array<SerializedObject>]
45
- def upcast(intermediate, expected_types, upcast_context); end
44
+ def upcast(intermediate, expected_types, upcast_context)
45
+ raise NotImplementedError
46
+ end
46
47
 
47
48
  # Upcasts a given serialized type to zero or more upcast types
48
49
  #
49
50
  # @abstract
50
51
  # @param [SerializedType] serialized_type
51
52
  # @return [Array<SerializedType>]
52
- def upcast_type(serialized_type); end
53
- end
54
- end
53
+ def upcast_type(serialized_type)
54
+ raise NotImplementedError
55
+ end
56
+ end # Upcaster
57
+ end # Upcasting
55
58
  end
@@ -32,7 +32,7 @@ module Synapse
32
32
  serialized_objects.push serialized_object
33
33
 
34
34
  @upcasters.each do |upcaster|
35
- serialized_objects = upcast_objects(upcaster, serialized_objects, upcast_context)
35
+ serialized_objects = upcast_objects upcaster, serialized_objects, upcast_context
36
36
  end
37
37
 
38
38
  serialized_objects
@@ -46,7 +46,7 @@ module Synapse
46
46
  # @param [UpcastingContent] upcast_context
47
47
  # @return [Array<SerializedObject>]
48
48
  def perform_upcast(upcaster, representation, expected_types, upcast_context)
49
- upcaster.upcast(representation, expected_types, upcast_context)
49
+ upcaster.upcast representation, expected_types, upcast_context
50
50
  end
51
51
 
52
52
  private
@@ -1,3 +1,3 @@
1
1
  module Synapse
2
- VERSION = '0.5.5'
2
+ VERSION = '0.5.6'
3
3
  end
@@ -18,12 +18,20 @@ module Synapse
18
18
 
19
19
  class CorrelationDataProviderTest < Test::Unit::TestCase
20
20
  should 'provide the identifier of a command for auditing' do
21
- provider = CorrelationDataProvider.new :command_id
21
+ provider = CorrelationDataProvider.new
22
22
  command = Command::CommandMessage.build
23
23
 
24
24
  expected = { :command_id => command.id }
25
25
  assert_equal expected, provider.provide_data_for(command)
26
26
  end
27
+
28
+ should 'provide the identifier of a command for auditing using an alternate key' do
29
+ provider = CorrelationDataProvider.new :correlation_id
30
+ command = Command::CommandMessage.build
31
+
32
+ expected = { :correlation_id => command.id }
33
+ assert_equal expected, provider.provide_data_for(command)
34
+ end
27
35
  end
28
36
 
29
37
  end
@@ -60,11 +60,17 @@ module Synapse
60
60
 
61
61
  attr_accessor :handled, :sub_handled
62
62
 
63
- map_command TestCommand do |command|
63
+ map_command TestCommand do |command, message, current_unit|
64
+ raise ArgumentError unless TestCommand === command
65
+ raise ArgumentError unless CommandMessage === message
66
+ raise ArgumentError if current_unit.nil?
67
+
64
68
  @handled = true
65
69
  end
66
70
 
67
- map_command TestSubCommand do |command|
71
+ map_command TestSubCommand, :to => :on_sub
72
+
73
+ def on_sub(command)
68
74
  @sub_handled = true
69
75
  end
70
76
  end
@@ -33,11 +33,16 @@ module Synapse
33
33
 
34
34
  attr_accessor :handled, :sub_handled
35
35
 
36
- map_event TestEvent do |event|
36
+ map_event TestEvent do |event, message|
37
+ raise ArgumentError unless TestEvent === event
38
+ raise ArgumentError unless Domain::EventMessage === message
39
+
37
40
  @handled = true
38
41
  end
39
42
 
40
- map_event TestSubEvent do |event|
43
+ map_event TestSubEvent, :to => :on_sub
44
+
45
+ def on_sub(event)
41
46
  @sub_handled = true
42
47
  end
43
48
  end
@@ -71,7 +71,7 @@ module Synapse
71
71
  end
72
72
 
73
73
  should 'defer version checking to a conflict resolver if one is set' do
74
- @repository.conflict_resolver = ConflictResolver.new
74
+ @repository.conflict_resolver = AcceptAllConflictResolver.new
75
75
 
76
76
  event_a = create_event(123, 0, StubCreatedEvent.new(123))
77
77
  event_b = create_event(123, 1, StubChangedEvent.new)
@@ -87,6 +87,9 @@ module Synapse
87
87
  def aggregate_type
88
88
  TestAggregateRoot
89
89
  end
90
+
91
+ def save_aggregate(aggregate); end
92
+ def delete_aggregate(aggregate); end
90
93
  end
91
94
  end
92
95
  end
@@ -1,7 +1,6 @@
1
1
  module Synapse
2
2
  module Upcasting
3
- class TestSplitUpcaster
4
- include Upcaster
3
+ class TestSplitUpcaster < Upcaster
5
4
 
6
5
  expects_content_type Object
7
6
 
@@ -28,9 +27,7 @@ module Synapse
28
27
  end
29
28
  end
30
29
 
31
- class TestTypeUpcaster
32
- include SingleUpcaster
33
-
30
+ class TestTypeUpcaster < SingleUpcaster
34
31
  expects_content_type Object
35
32
 
36
33
  def can_upcast?(serialized_type)
@@ -48,9 +45,7 @@ module Synapse
48
45
  end
49
46
  end
50
47
 
51
- class TestPhaseOutUpcaster
52
- include SingleUpcaster
53
-
48
+ class TestPhaseOutUpcaster < SingleUpcaster
54
49
  expects_content_type Object
55
50
 
56
51
  def can_upcast?(serialized_type)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: synapse-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.5
4
+ version: 0.5.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-06-13 00:00:00.000000000 Z
12
+ date: 2013-06-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -157,6 +157,9 @@ files:
157
157
  - lib/synapse/domain/simple_stream.rb
158
158
  - lib/synapse/domain/stream.rb
159
159
  - lib/synapse/domain.rb
160
+ - lib/synapse/event_bus/clustering/cluster.rb
161
+ - lib/synapse/event_bus/clustering/event_bus.rb
162
+ - lib/synapse/event_bus/clustering/selector.rb
160
163
  - lib/synapse/event_bus/event_bus.rb
161
164
  - lib/synapse/event_bus/event_listener.rb
162
165
  - lib/synapse/event_bus/event_publisher.rb