diff --git a/lib/message_bus/message.rb b/lib/message_bus/message.rb index ee988bf5..5bc4965d 100644 --- a/lib/message_bus/message.rb +++ b/lib/message_bus/message.rb @@ -5,15 +5,15 @@ class MessageBus::Message < Struct.new(:global_id, :message_id, :channel, :data) attr_accessor :site_id, :user_ids, :group_ids, :client_ids def self.decode(encoded) - s1 = encoded.index("|") - s2 = encoded.index("|", s1 + 1) - s3 = encoded.index("|", s2 + 1) + s1 = encoded.byteindex("|") + s2 = encoded.byteindex("|", s1 + 1) + s3 = encoded.byteindex("|", s2 + 1) - global_id = encoded[0, s1 + 1].to_i - message_id = encoded[(s1 + 1), (s2 - s1 - 1)].to_i - channel = encoded[(s2 + 1), (s3 - s2 - 1)] - channel.gsub!("$$123$$", "|") - data = encoded[(s3 + 1), encoded.size] + global_id = encoded.to_i + message_id = encoded.byteslice(s1 + 1, s2 - s1 - 1).to_i + channel = encoded.byteslice(s2 + 1, s3 - s2 - 1) + channel.gsub!("$$123$$", "|") if channel.include?("$$123$$") + data = encoded.byteslice(s3 + 1, encoded.bytesize - s3 - 1) MessageBus::Message.new(global_id, message_id, channel, data) end