evt-messaging 2.5.1.0 → 2.5.3.0

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
2
  SHA256:
3
- metadata.gz: fd6068180b3ca2dfb0f5a22b74d134160f0feede1b6630134432845f1028692d
4
- data.tar.gz: 5671e70a3eccc37368eaff3888d549dc5b174feef7d9ffc3742827104d6e137d
3
+ metadata.gz: 29e2d25659fffe70ab1e14512f6c4a4adf7c9daa929f7303e3b96ae169fa4822
4
+ data.tar.gz: 181e600b4ecebc75a08607b364c50e88600788e6fc2e7e62672df10b5c337998
5
5
  SHA512:
6
- metadata.gz: 945148e6819e742c5344e19fbda31c5149a64011514ef2c768791b9170229dbb113fd0b3442b374b2f4461b9ae47dcf59e5196fe38c09326d893b2af760372c6
7
- data.tar.gz: 22f508c29b63c7345bb7a1a3b1d1f6b085c32bd47398e12601891222f974360ae2e5ec769bfe0246473fe5d090dc7d963a99af822ef3987c9b56fa592d29b589
6
+ metadata.gz: 41165cbff3b2bb5a74a39809812851737b228ad1a59d85ecf2a8f46268042e06aed3c0fc3223f30e084febec586b1df09234e625286e7a8dfff617a15878b630
7
+ data.tar.gz: 88c7b54092d4b088de4c95f21f576c7c3e04a3e4cc805b0c32cdf4ae0479865c82e9d2195968ae7046d86508ba2aba1229ff9d7854179786447b2b798ecd7235
@@ -1,4 +1,5 @@
1
1
  require 'message_store'
2
+ require 'settings'
2
3
 
3
4
  require 'messaging/log'
4
5
 
@@ -12,4 +12,5 @@ require 'messaging/controls/message'
12
12
  require 'messaging/controls/metadata'
13
13
  require 'messaging/controls/batch'
14
14
  require 'messaging/controls/write'
15
+ require 'messaging/controls/settings'
15
16
  require 'messaging/controls/handler'
@@ -1,6 +1,10 @@
1
1
  module Messaging
2
2
  module Controls
3
3
  module Handler
4
+ def self.example
5
+ Example.new
6
+ end
7
+
4
8
  class Example
5
9
  include Messaging::Handle
6
10
  include Controls::Message
@@ -97,6 +101,22 @@ module Messaging
97
101
  end
98
102
  end
99
103
  end
104
+
105
+ module Settings
106
+ Error = Class.new(RuntimeError)
107
+
108
+ class Example
109
+ include Messaging::Handle
110
+
111
+ setting :some_setting
112
+
113
+ attr_accessor :some_other_setting
114
+
115
+ def handle(message_data)
116
+ raise Settings::Error if some_setting.nil?
117
+ end
118
+ end
119
+ end
100
120
  end
101
121
  end
102
122
  end
@@ -13,6 +13,10 @@ module Messaging
13
13
  1
14
14
  end
15
15
 
16
+ def self.global_position
17
+ 222
18
+ end
19
+
16
20
  def self.causation_message_stream_name
17
21
  "someCausation"
18
22
  end
@@ -22,7 +26,7 @@ module Messaging
22
26
  end
23
27
 
24
28
  def self.causation_message_global_position
25
- 222
29
+ 111
26
30
  end
27
31
 
28
32
  def self.correlation_stream_name
@@ -45,10 +49,6 @@ module Messaging
45
49
  "#{causation_message_stream_name}/#{causation_message_position}"
46
50
  end
47
51
 
48
- def self.global_position
49
- 111
50
- end
51
-
52
52
  def self.time
53
53
  Time::Raw.example
54
54
  end
@@ -0,0 +1,16 @@
1
+ module Messaging
2
+ module Controls
3
+ module Settings
4
+ def self.example
5
+ ::Settings.build(data)
6
+ end
7
+
8
+ def self.data
9
+ {
10
+ some_setting: 'some setting value',
11
+ some_other_setting: 'some other setting value'
12
+ }
13
+ end
14
+ end
15
+ end
16
+ end
@@ -6,8 +6,12 @@ module Messaging
6
6
  cls.class_exec do
7
7
  include Dependency
8
8
  include Virtual
9
+ include Settings::Setting
9
10
 
10
- dependency :handler_logger, ::Log
11
+ def handler_logger
12
+ @handler_logger ||= Log.get(self)
13
+ end
14
+ attr_writer :handler_logger
11
15
 
12
16
  extend Build
13
17
  extend Call
@@ -22,10 +26,13 @@ module Messaging
22
26
  end
23
27
 
24
28
  module Build
25
- def build(strict: nil, session: nil)
29
+ def build(strict: nil, session: nil, settings: nil)
26
30
  instance = new
27
31
  instance.strict = strict
28
- Log.configure(instance, attr_name: :handler_logger)
32
+
33
+ if not settings.nil?
34
+ settings.set(instance)
35
+ end
29
36
 
30
37
  if Build.configure_session?(instance)
31
38
  instance.configure(session: session)
@@ -48,18 +55,18 @@ module Messaging
48
55
  return true if parameter_type == :key
49
56
 
50
57
  error_message = "Optional session parameter of configure is not a keyword argument (Type: #{parameter_type.inspect})"
51
- logger.error(tag: :handle) { error_message }
58
+ handler_logger.error(tag: :handle) { error_message }
52
59
  raise ArgumentError, error_message
53
60
  end
54
61
 
55
- def self.logger
56
- @logger ||= Log.build(self)
62
+ def self.handler_logger
63
+ @handler_logger ||= Log.get(self)
57
64
  end
58
65
  end
59
66
 
60
67
  module Call
61
- def call(message_or_message_data, strict: nil, session: nil)
62
- instance = build(strict: strict, session: session)
68
+ def call(message_or_message_data, strict: nil, session: nil, settings: nil)
69
+ instance = build(strict: strict, session: session, settings: settings)
63
70
  instance.(message_or_message_data)
64
71
  end
65
72
  end
@@ -152,7 +159,7 @@ module Messaging
152
159
  def handle_message(message, strict: nil)
153
160
  strict ||= self.strict?
154
161
 
155
- handler_logger.trace(tags: [:handle, :message]) { "Handling message (Message class: #{message.class.name})" }
162
+ handler_logger.trace(tags: [:dispatch, :message]) { "Dispatching message (Message class: #{message.class.name})" }
156
163
  handler_logger.trace(tags: [:data, :message]) { message.pretty_inspect }
157
164
 
158
165
  handler = self.class.handler(message)
@@ -160,8 +167,12 @@ module Messaging
160
167
  unless handler.nil?
161
168
  message_type = message.message_type
162
169
 
163
- handler_logger.debug(tag: :handle) { "Handling Message (Type: #{message_type}, Method: #{handler})" }
170
+ handler_logger.trace(tag: [:handle, :message]) { "Handling Message (Type: #{message_type}, Method: #{handler})" }
171
+
164
172
  public_send(handler, message)
173
+
174
+ handler_logger.info(tags: [:handle, :message]) { "Handled message (Message class: #{message.class.name})" }
175
+ handler_logger.info(tags: [:data, :message]) { message.pretty_inspect }
165
176
  else
166
177
  if strict
167
178
  error_msg = "#{self.class.name} does not implement a handler for #{message.message_type}. Cannot handle the message."
@@ -170,16 +181,13 @@ module Messaging
170
181
  end
171
182
  end
172
183
 
173
- handler_logger.info(tags: [:handle, :message]) { "Handled message (Message class: #{message.class.name})" }
174
- handler_logger.info(tags: [:data, :message]) { message.pretty_inspect }
175
-
176
184
  message
177
185
  end
178
186
 
179
187
  def handle_message_data(message_data, strict: nil)
180
188
  strict ||= self.strict?
181
189
 
182
- handler_logger.trace(tags: [:handle, :message_data]) { "Handling message data (Type: #{message_data.type})" }
190
+ handler_logger.trace(tags: [:dispatch, :message_data]) { "Dispatching message data (Type: #{message_data.type})" }
183
191
  handler_logger.trace(tags: [:data, :message_data]) { message_data.pretty_inspect }
184
192
 
185
193
  message = nil
@@ -201,15 +209,17 @@ module Messaging
201
209
 
202
210
  message_type = message.message_type
203
211
 
204
- handler_logger.debug(tag: :handle) { "Handling Message (Type: #{message_type}, Method: #{handler})" }
205
212
  public_send(handler, message)
206
213
  else
207
214
  if respond_to?(:handle)
208
215
  message_type = message_data.type
209
- handler_logger.debug(tag: :handle) { "Handling Message Data (Type: #{message_type}, Method: handle" }
216
+ handler_logger.trace(tag: [:handle, :message_data]) { "Handling Message Data (Type: #{message_type}, Method: handle" }
210
217
 
211
218
  handle(message_data)
212
219
 
220
+ handler_logger.info(tags: [:handle, :message_data]) { "Handled message data (Type: #{message_data.type})" }
221
+ handler_logger.info(tags: [:data, :message_data]) { message_data.pretty_inspect }
222
+
213
223
  message = message_data
214
224
  else
215
225
  if strict
@@ -220,9 +230,6 @@ module Messaging
220
230
  end
221
231
  end
222
232
 
223
- handler_logger.info(tags: [:handle, :message_data]) { "Handled message data (Type: #{message_data.type})" }
224
- handler_logger.info(tags: [:data, :message_data]) { message_data.pretty_inspect }
225
-
226
233
  message
227
234
  end
228
235
  end
@@ -59,11 +59,48 @@ module Messaging
59
59
  self.reply_stream_name = preceding_metadata.reply_stream_name
60
60
  end
61
61
 
62
- def follows?(metadata)
63
- causation_message_stream_name == metadata.stream_name &&
64
- causation_message_position == metadata.position &&
65
- causation_message_global_position == metadata.global_position &&
66
- reply_stream_name == metadata.reply_stream_name
62
+ def follows?(preceding_metadata)
63
+ if causation_message_stream_name.nil? && preceding_metadata.stream_name.nil?
64
+ return false
65
+ end
66
+
67
+ if causation_message_stream_name != preceding_metadata.stream_name
68
+ return false
69
+ end
70
+
71
+
72
+ if causation_message_position.nil? && preceding_metadata.position.nil?
73
+ return false
74
+ end
75
+
76
+ if causation_message_position != preceding_metadata.position
77
+ return false
78
+ end
79
+
80
+
81
+ if causation_message_global_position.nil? && preceding_metadata.global_position.nil?
82
+ return false
83
+ end
84
+
85
+ if causation_message_global_position != preceding_metadata.global_position
86
+ return false
87
+ end
88
+
89
+
90
+ if not preceding_metadata.correlation_stream_name.nil?
91
+ if correlation_stream_name != preceding_metadata.correlation_stream_name
92
+ return false
93
+ end
94
+ end
95
+
96
+
97
+ if not preceding_metadata.reply_stream_name.nil?
98
+ if reply_stream_name != preceding_metadata.reply_stream_name
99
+ return false
100
+ end
101
+ end
102
+
103
+ true
67
104
  end
68
105
 
69
106
  def clear_reply_stream_name
@@ -89,6 +126,33 @@ module Messaging
89
126
  end
90
127
  alias :correlates? :correlated?
91
128
 
129
+ def self.source_attribute_names
130
+ [
131
+ :stream_name,
132
+ :position,
133
+ :global_position
134
+ ]
135
+ end
136
+
137
+ def self.causation_attribute_names
138
+ [
139
+ :causation_message_stream_name,
140
+ :causation_message_position,
141
+ :causation_message_global_position
142
+ ]
143
+ end
144
+
145
+ def self.origin_attribute_names
146
+ [
147
+ :correlation_stream_name,
148
+ :reply_stream_name
149
+ ]
150
+ end
151
+
152
+ def self.workflow_attribute_names
153
+ causation_attribute_names + origin_attribute_names
154
+ end
155
+
92
156
  def self.transient_attributes
93
157
  [
94
158
  :stream_name,
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: evt-messaging
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.1.0
4
+ version: 2.5.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - The Eventide Project
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-08 00:00:00.000000000 Z
11
+ date: 2020-12-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: evt-message_store
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: evt-settings
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: test_bench
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -54,6 +68,7 @@ files:
54
68
  - lib/messaging/controls/message_data.rb
55
69
  - lib/messaging/controls/metadata.rb
56
70
  - lib/messaging/controls/random.rb
71
+ - lib/messaging/controls/settings.rb
57
72
  - lib/messaging/controls/stream_name.rb
58
73
  - lib/messaging/controls/time.rb
59
74
  - lib/messaging/controls/write.rb
@@ -76,7 +91,7 @@ homepage: https://github.com/eventide-project/messaging
76
91
  licenses:
77
92
  - MIT
78
93
  metadata: {}
79
- post_install_message:
94
+ post_install_message:
80
95
  rdoc_options: []
81
96
  require_paths:
82
97
  - lib
@@ -92,7 +107,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
92
107
  version: '0'
93
108
  requirements: []
94
109
  rubygems_version: 3.1.2
95
- signing_key:
110
+ signing_key:
96
111
  specification_version: 4
97
112
  summary: Common primitives for platform-specific messaging implementations for Eventide
98
113
  test_files: []