evt-messaging 2.5.1.0 → 2.5.3.0

Sign up to get free protection for your applications and to get access to all the features.
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: []