Sha256: ec0c7c60a2ae602de93c6da4b6449bc6e10eb100224ede75af17aea6941edf62

Contents?: true

Size: 1.35 KB

Versions: 3

Compression:

Stored size: 1.35 KB

Contents

module Ably::Models
  # ChannelStateChange is a class that is emitted by the {Ably::Realtime::Channel} object
  # when a state change occurs
  #
  # @!attribute [r] current
  #   @return [Connection::STATE] Current connection state
  # @!attribute [r] previous
  #   @return [Connection::STATE] Previous connection state
  # @!attribute [r] reason
  #   @return [Ably::Models::ErrorInfo] Object describing the reason for a state change when not initiated by the consumer of the client library
  #
  class ChannelStateChange
    include Ably::Modules::ModelCommon

    def initialize(hash_object)
      unless (hash_object.keys - [:current, :previous, :reason, :protocol_message]).empty?
        raise ArgumentError, 'Invalid attributes, expecting :current, :previous, :reason'
      end

      @hash_object = {
        current: hash_object.fetch(:current),
        previous: hash_object.fetch(:previous),
        retry_in: hash_object[:retry_in],
        reason: hash_object[:reason],
        protocol_message: hash_object[:protocol_message]
      }
    rescue KeyError => e
      raise ArgumentError, e
    end

    %w(current previous reason protocol_message).each do |attribute|
      define_method attribute do
        @hash_object[attribute.to_sym]
      end
    end

    def to_s
      "ChannelStateChange: current state #{current}, previous state #{previous}"
    end
  end
end

Version data entries

3 entries across 3 versions & 2 rubygems

Version Path
ably-rest-0.8.5 lib/submodules/ably-ruby/lib/ably/models/channel_state_change.rb
ably-0.8.5 lib/ably/models/channel_state_change.rb
ably-0.8.4 lib/ably/models/channel_state_change.rb