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
2945end
0 commit comments