From 0f61ef22e8069e27a14de9319de18ff3a68931e6 Mon Sep 17 00:00:00 2001 From: Michael Oberegger Date: Wed, 1 Apr 2026 21:52:58 -0400 Subject: [PATCH] Make Message a regular class instead of a Struct --- lib/message_bus/message.rb | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/lib/message_bus/message.rb b/lib/message_bus/message.rb index ee988bf5..c95d28d6 100644 --- a/lib/message_bus/message.rb +++ b/lib/message_bus/message.rb @@ -1,8 +1,16 @@ # frozen_string_literal: true # Represents a published message and its encoding for persistence. -class MessageBus::Message < Struct.new(:global_id, :message_id, :channel, :data) - attr_accessor :site_id, :user_ids, :group_ids, :client_ids +class MessageBus::Message + attr_accessor :global_id, :message_id, :channel, :data, + :site_id, :user_ids, :group_ids, :client_ids + + def initialize(global_id, message_id, channel, data) + @global_id = global_id + @message_id = message_id + @channel = channel + @data = data + end def self.decode(encoded) s1 = encoded.index("|") @@ -15,7 +23,7 @@ def self.decode(encoded) channel.gsub!("$$123$$", "|") data = encoded[(s3 + 1), encoded.size] - MessageBus::Message.new(global_id, message_id, channel, data) + new(global_id, message_id, channel, data) end # only tricky thing to encode is pipes in a channel name ... do a straight replace @@ -26,4 +34,12 @@ def encode def encode_without_ids "#{channel.gsub("|", "$$123$$")}|#{data}" end + + def ==(other) + other.is_a?(self.class) && + self.global_id == other.global_id && + self.message_id == other.message_id && + self.channel == other.channel && + self.data == other.data + end end