Sha256: f2848873ee9da3579ec2bb6d55e50bfe872e7f6c22ba2fb82bc72860f7c956c0

Contents?: true

Size: 888 Bytes

Versions: 8

Compression:

Stored size: 888 Bytes

Contents

# frozen_string_literal: true

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)

    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]

    MessageBus::Message.new(global_id, message_id, channel, data)
  end

  # only tricky thing to encode is pipes in a channel name ... do a straight replace
  def encode
    global_id.to_s << "|" << message_id.to_s << "|" << channel.gsub("|", "$$123$$") << "|" << data
  end

  def encode_without_ids
    channel.gsub("|", "$$123$$") << "|" << data
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
message_bus-2.1.6 lib/message_bus/message.rb
message_bus-2.1.5 lib/message_bus/message.rb
message_bus-2.1.4 lib/message_bus/message.rb
message_bus-2.1.3 lib/message_bus/message.rb
message_bus-2.1.2 lib/message_bus/message.rb
message_bus-2.1.1 lib/message_bus/message.rb
message_bus-2.1.0 lib/message_bus/message.rb
message_bus-2.0.9 lib/message_bus/message.rb