evt-messaging 2.5.5.1 → 2.5.8.1
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 +2 -1
- data/lib/messaging/controls/metadata.rb +8 -4
- data/lib/messaging/controls/properties.rb +62 -0
- data/lib/messaging/handle.rb +7 -0
- data/lib/messaging/message/copy.rb +6 -1
- data/lib/messaging/message/metadata.rb +46 -5
- data/lib/messaging/message/metadata/property.rb +22 -0
- data/lib/messaging/message/transform.rb +31 -2
- metadata +4 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ccafb945cdd024a0fa0d3b90b2bb197973f0a6111f778657e2c8dcc7514e944f
|
|
4
|
+
data.tar.gz: 64be2ec439b541414bd50e9d0ad2490cb6069d9e617bd12d8f44b5dad8231f64
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 13a6e341c068157a89e0e3336afd19c3518149bc766bcfca8b73fc72d74a97948854838b5e35d9ba9adb127e660ef679ada4f1b4d928d7bb08307f816f3cfbac
|
|
7
|
+
data.tar.gz: c017e5d29247eb7601db7828574f03348429e38f51cd69c7c65dbf394723b9f5ca592d68589bcb1782055c6fa9562d6be5602fa91bf6834e0de8296b705c16d3
|
data/lib/messaging.rb
CHANGED
|
@@ -7,6 +7,7 @@ require 'messaging/stream_name'
|
|
|
7
7
|
|
|
8
8
|
require 'messaging/message'
|
|
9
9
|
require 'messaging/message/metadata'
|
|
10
|
+
require 'messaging/message/metadata/property'
|
|
10
11
|
require 'messaging/message/copy'
|
|
11
12
|
require 'messaging/message/follow'
|
|
12
13
|
require 'messaging/message/sequence_accessor'
|
data/lib/messaging/controls.rb
CHANGED
|
@@ -7,9 +7,10 @@ require 'messaging/controls/random'
|
|
|
7
7
|
require 'messaging/controls/time'
|
|
8
8
|
require 'messaging/controls/id'
|
|
9
9
|
require 'messaging/controls/stream_name'
|
|
10
|
+
require 'messaging/controls/properties'
|
|
11
|
+
require 'messaging/controls/metadata'
|
|
10
12
|
require 'messaging/controls/message_data'
|
|
11
13
|
require 'messaging/controls/message'
|
|
12
|
-
require 'messaging/controls/metadata'
|
|
13
14
|
require 'messaging/controls/batch'
|
|
14
15
|
require 'messaging/controls/write'
|
|
15
16
|
require 'messaging/controls/settings'
|
|
@@ -2,6 +2,12 @@ module Messaging
|
|
|
2
2
|
module Controls
|
|
3
3
|
module Metadata
|
|
4
4
|
def self.example
|
|
5
|
+
data = self.data
|
|
6
|
+
|
|
7
|
+
## Remove this once Metadata can be built
|
|
8
|
+
## from Raw data (Scott, Fri Feb 5 20201)
|
|
9
|
+
data[:properties] = Properties.example
|
|
10
|
+
|
|
5
11
|
Messaging::Message::Metadata.build(data)
|
|
6
12
|
end
|
|
7
13
|
|
|
@@ -50,9 +56,7 @@ module Messaging
|
|
|
50
56
|
end
|
|
51
57
|
|
|
52
58
|
def self.properties
|
|
53
|
-
|
|
54
|
-
some_property: 'some property value'
|
|
55
|
-
}
|
|
59
|
+
Properties.example
|
|
56
60
|
end
|
|
57
61
|
|
|
58
62
|
def self.time
|
|
@@ -73,7 +77,7 @@ module Messaging
|
|
|
73
77
|
|
|
74
78
|
reply_stream_name: reply_stream_name,
|
|
75
79
|
|
|
76
|
-
properties:
|
|
80
|
+
properties: Properties.data,
|
|
77
81
|
|
|
78
82
|
time: time,
|
|
79
83
|
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
module Messaging
|
|
2
|
+
module Controls
|
|
3
|
+
module Properties
|
|
4
|
+
def self.example
|
|
5
|
+
[
|
|
6
|
+
SomeProperty.example,
|
|
7
|
+
SomeLocalProperty.example
|
|
8
|
+
]
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def self.data
|
|
12
|
+
[
|
|
13
|
+
SomeProperty.data,
|
|
14
|
+
SomeLocalProperty.data
|
|
15
|
+
]
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
module SomeProperty
|
|
19
|
+
def self.example
|
|
20
|
+
Messaging::Message::Metadata::Property.new(name, value)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def self.data
|
|
24
|
+
{
|
|
25
|
+
name: name,
|
|
26
|
+
value: value
|
|
27
|
+
}
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def self.name
|
|
31
|
+
'some_property'
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def self.value
|
|
35
|
+
'some property value'
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
module SomeLocalProperty
|
|
40
|
+
def self.example
|
|
41
|
+
Messaging::Message::Metadata::Property.new(name, value, true)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def self.data
|
|
45
|
+
{
|
|
46
|
+
name: name,
|
|
47
|
+
value: value,
|
|
48
|
+
local: true
|
|
49
|
+
}
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def self.name
|
|
53
|
+
'some_local_property'
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def self.value
|
|
57
|
+
'some local property value'
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
data/lib/messaging/handle.rb
CHANGED
|
@@ -93,6 +93,8 @@ module Messaging
|
|
|
93
93
|
|
|
94
94
|
if message_or_message_data.is_a? MessageStore::MessageData::Read
|
|
95
95
|
name = Messaging::Message::Info.canonize_name(message_or_message_data.type)
|
|
96
|
+
elsif message_or_message_data.is_a? String
|
|
97
|
+
name = Messaging::Message::Info.canonize_name(message_or_message_data)
|
|
96
98
|
else
|
|
97
99
|
name = message_or_message_data.message_name
|
|
98
100
|
end
|
|
@@ -209,7 +211,12 @@ module Messaging
|
|
|
209
211
|
|
|
210
212
|
message_type = message.message_type
|
|
211
213
|
|
|
214
|
+
handler_logger.trace(tag: [:handle, :message_data]) { "Handling Message Data (Type: #{message_type}, Method: #{handler})" }
|
|
215
|
+
|
|
212
216
|
public_send(handler, message)
|
|
217
|
+
|
|
218
|
+
handler_logger.info(tags: [:handle, :message_data]) { "Handled message data (Type: #{message_data.type})" }
|
|
219
|
+
handler_logger.info(tags: [:data, :message_data]) { message_data.pretty_inspect }
|
|
213
220
|
else
|
|
214
221
|
if respond_to?(:handle)
|
|
215
222
|
message_type = message_data.type
|
|
@@ -32,8 +32,13 @@ module Messaging
|
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
if metadata
|
|
35
|
-
metadata_include = source.metadata.class.attribute_names
|
|
35
|
+
metadata_include = source.metadata.class.attribute_names - [:properties]
|
|
36
|
+
|
|
36
37
|
SetAttributes.(receiver.metadata, source.metadata, include: metadata_include)
|
|
38
|
+
|
|
39
|
+
source.metadata.properties.each do |property|
|
|
40
|
+
receiver.metadata.properties << property.dup
|
|
41
|
+
end
|
|
37
42
|
end
|
|
38
43
|
|
|
39
44
|
receiver
|
|
@@ -33,7 +33,7 @@ module Messaging
|
|
|
33
33
|
|
|
34
34
|
attribute :reply_stream_name, String
|
|
35
35
|
|
|
36
|
-
attribute :properties,
|
|
36
|
+
attribute :properties, Array, default: -> { Array.new }
|
|
37
37
|
|
|
38
38
|
attribute :time, Time
|
|
39
39
|
|
|
@@ -59,6 +59,14 @@ module Messaging
|
|
|
59
59
|
self.correlation_stream_name = preceding_metadata.correlation_stream_name
|
|
60
60
|
|
|
61
61
|
self.reply_stream_name = preceding_metadata.reply_stream_name
|
|
62
|
+
|
|
63
|
+
preceding_metadata.properties.each do |property|
|
|
64
|
+
if property.local?
|
|
65
|
+
next
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
properties << property.dup
|
|
69
|
+
end
|
|
62
70
|
end
|
|
63
71
|
|
|
64
72
|
def follows?(preceding_metadata)
|
|
@@ -128,16 +136,49 @@ module Messaging
|
|
|
128
136
|
end
|
|
129
137
|
alias :correlates? :correlated?
|
|
130
138
|
|
|
131
|
-
def set_property(name, value)
|
|
132
|
-
|
|
139
|
+
def set_property(name, value, local: nil)
|
|
140
|
+
if not name.is_a?(String)
|
|
141
|
+
raise Error, "Property name must be a string: #{name.inspect}"
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
local ||= false
|
|
145
|
+
|
|
146
|
+
delete_property(name)
|
|
147
|
+
|
|
148
|
+
property = Property.new(name, value, local)
|
|
149
|
+
|
|
150
|
+
properties << property
|
|
151
|
+
|
|
152
|
+
property
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
def set_local_property(name, value)
|
|
156
|
+
set_property(name, value, local: true)
|
|
133
157
|
end
|
|
134
158
|
|
|
135
159
|
def get_property(name)
|
|
136
|
-
|
|
160
|
+
if not name.is_a?(String)
|
|
161
|
+
raise Error, "Property name must be a string: #{name.inspect}"
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
property = properties.find { |property| property.name == name }
|
|
165
|
+
property&.value
|
|
137
166
|
end
|
|
138
167
|
|
|
139
168
|
def delete_property(name)
|
|
140
|
-
|
|
169
|
+
if not name.is_a?(String)
|
|
170
|
+
raise Error, "Property name must be a string: #{name.inspect}"
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
i = properties.index { |property| property.name == name }
|
|
174
|
+
|
|
175
|
+
return nil if i.nil?
|
|
176
|
+
|
|
177
|
+
properties.delete_at(i).value
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
def clear_properties
|
|
181
|
+
properties.clear
|
|
141
182
|
end
|
|
142
183
|
|
|
143
184
|
def self.source_attribute_names
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
module Messaging
|
|
2
|
+
module Message
|
|
3
|
+
class Metadata
|
|
4
|
+
Property = Struct.new(
|
|
5
|
+
:name,
|
|
6
|
+
:value,
|
|
7
|
+
:local
|
|
8
|
+
) do
|
|
9
|
+
def local?
|
|
10
|
+
local == true
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def ==(other)
|
|
14
|
+
equal =
|
|
15
|
+
name == other.name &&
|
|
16
|
+
value == other.value &&
|
|
17
|
+
!!local == !!other.local
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -26,8 +26,12 @@ module Messaging
|
|
|
26
26
|
|
|
27
27
|
metadata = message.metadata.to_h
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
properties = metadata[:properties]
|
|
30
|
+
|
|
31
|
+
if properties.empty?
|
|
32
|
+
metadata.delete(:properties)
|
|
33
|
+
else
|
|
34
|
+
metadata[:properties] = Properties.write(properties)
|
|
31
35
|
end
|
|
32
36
|
|
|
33
37
|
metadata.delete_if { |k, v| v.nil? }
|
|
@@ -37,9 +41,24 @@ module Messaging
|
|
|
37
41
|
message_data
|
|
38
42
|
end
|
|
39
43
|
|
|
44
|
+
module Properties
|
|
45
|
+
def self.write(properties)
|
|
46
|
+
properties.map do |property|
|
|
47
|
+
property_hash = property.to_h
|
|
48
|
+
|
|
49
|
+
if not property_hash[:local]
|
|
50
|
+
property_hash.delete(:local)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
property_hash
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
40
58
|
def self.read(message_data)
|
|
41
59
|
data = message_data.to_h
|
|
42
60
|
|
|
61
|
+
## TODO change to positive "if"
|
|
43
62
|
unless data[:metadata].nil?
|
|
44
63
|
data[:metadata] = data[:metadata].clone
|
|
45
64
|
else
|
|
@@ -54,6 +73,16 @@ module Messaging
|
|
|
54
73
|
metadata[:global_position] = data[:global_position]
|
|
55
74
|
metadata[:time] = data[:time]
|
|
56
75
|
|
|
76
|
+
if metadata[:properties].nil?
|
|
77
|
+
metadata[:properties] = []
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
properties = metadata[:properties].map do |property_data|
|
|
81
|
+
Metadata::Property.new(*property_data.values_at(*Metadata::Property.members))
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
metadata[:properties] = properties
|
|
85
|
+
|
|
57
86
|
data
|
|
58
87
|
end
|
|
59
88
|
end
|
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.8.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- The Eventide Project
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2021-02-09 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: evt-message_store
|
|
@@ -67,6 +67,7 @@ files:
|
|
|
67
67
|
- lib/messaging/controls/message.rb
|
|
68
68
|
- lib/messaging/controls/message_data.rb
|
|
69
69
|
- lib/messaging/controls/metadata.rb
|
|
70
|
+
- lib/messaging/controls/properties.rb
|
|
70
71
|
- lib/messaging/controls/random.rb
|
|
71
72
|
- lib/messaging/controls/settings.rb
|
|
72
73
|
- lib/messaging/controls/stream_name.rb
|
|
@@ -81,6 +82,7 @@ files:
|
|
|
81
82
|
- lib/messaging/message/follow.rb
|
|
82
83
|
- lib/messaging/message/import.rb
|
|
83
84
|
- lib/messaging/message/metadata.rb
|
|
85
|
+
- lib/messaging/message/metadata/property.rb
|
|
84
86
|
- lib/messaging/message/sequence_accessor.rb
|
|
85
87
|
- lib/messaging/message/transform.rb
|
|
86
88
|
- lib/messaging/message_registry.rb
|