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 +4 -4
- data/lib/messaging.rb +1 -0
- data/lib/messaging/controls.rb +1 -0
- data/lib/messaging/controls/handler.rb +20 -0
- data/lib/messaging/controls/metadata.rb +5 -5
- data/lib/messaging/controls/settings.rb +16 -0
- data/lib/messaging/handle.rb +26 -19
- data/lib/messaging/message/metadata.rb +69 -5
- metadata +20 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 29e2d25659fffe70ab1e14512f6c4a4adf7c9daa929f7303e3b96ae169fa4822
|
|
4
|
+
data.tar.gz: 181e600b4ecebc75a08607b364c50e88600788e6fc2e7e62672df10b5c337998
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 41165cbff3b2bb5a74a39809812851737b228ad1a59d85ecf2a8f46268042e06aed3c0fc3223f30e084febec586b1df09234e625286e7a8dfff617a15878b630
|
|
7
|
+
data.tar.gz: 88c7b54092d4b088de4c95f21f576c7c3e04a3e4cc805b0c32cdf4ae0479865c82e9d2195968ae7046d86508ba2aba1229ff9d7854179786447b2b798ecd7235
|
data/lib/messaging.rb
CHANGED
data/lib/messaging/controls.rb
CHANGED
|
@@ -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
|
-
|
|
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
|
data/lib/messaging/handle.rb
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
58
|
+
handler_logger.error(tag: :handle) { error_message }
|
|
52
59
|
raise ArgumentError, error_message
|
|
53
60
|
end
|
|
54
61
|
|
|
55
|
-
def self.
|
|
56
|
-
@
|
|
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: [:
|
|
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.
|
|
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: [:
|
|
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.
|
|
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?(
|
|
63
|
-
causation_message_stream_name
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
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.
|
|
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-
|
|
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: []
|