Skip to content

Commit 50c1cb4

Browse files
authored
Make Message a regular class instead of a Struct (#386)
1 parent 63bfb6f commit 50c1cb4

1 file changed

Lines changed: 19 additions & 3 deletions

File tree

lib/message_bus/message.rb

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,16 @@
11
# frozen_string_literal: true
22

33
# Represents a published message and its encoding for persistence.
4-
class MessageBus::Message < Struct.new(:global_id, :message_id, :channel, :data)
5-
attr_accessor :site_id, :user_ids, :group_ids, :client_ids
4+
class MessageBus::Message
5+
attr_accessor :global_id, :message_id, :channel, :data,
6+
:site_id, :user_ids, :group_ids, :client_ids
7+
8+
def initialize(global_id, message_id, channel, data)
9+
@global_id = global_id
10+
@message_id = message_id
11+
@channel = channel
12+
@data = data
13+
end
614

715
def self.decode(encoded)
816
s1 = encoded.index("|")
@@ -15,7 +23,7 @@ def self.decode(encoded)
1523
channel.gsub!("$$123$$", "|")
1624
data = encoded[(s3 + 1), encoded.size]
1725

18-
MessageBus::Message.new(global_id, message_id, channel, data)
26+
new(global_id, message_id, channel, data)
1927
end
2028

2129
# only tricky thing to encode is pipes in a channel name ... do a straight replace
@@ -26,4 +34,12 @@ def encode
2634
def encode_without_ids
2735
"#{channel.gsub("|", "$$123$$")}|#{data}"
2836
end
37+
38+
def ==(other)
39+
other.is_a?(self.class) &&
40+
self.global_id == other.global_id &&
41+
self.message_id == other.message_id &&
42+
self.channel == other.channel &&
43+
self.data == other.data
44+
end
2945
end

0 commit comments

Comments
 (0)