Sha256: 7a487c20ba1c0d86a292ce2322b5cf3826934706de706d62c875e82da02de235

Contents?: true

Size: 1.86 KB

Versions: 11

Compression:

Stored size: 1.86 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 channel state
  # @!attribute [r] previous
  #   @return [Connection::STATE] Previous channel 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
  # @!attribute [r] resumed
  #   @return [Boolean] True when a channel is resumed, false when continuity on the channel is no longer provided indicating that the developer is now responsible for recovering lost messages on this channel through other means, such as using the hisory API
  #
  class ChannelStateChange
    include Ably::Modules::ModelCommon

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

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

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

    def resumed
      !!@hash_object[:resumed]
    end
    alias_method :resumed?, :resumed

    # @api private
    def protocol_message
      @hash_object[:protocol_message]
    end

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

Version data entries

11 entries across 11 versions & 2 rubygems

Version Path
ably-1.0.7 lib/ably/models/channel_state_change.rb
ably-rest-1.0.6 lib/submodules/ably-ruby/lib/ably/models/channel_state_change.rb
ably-1.0.6 lib/ably/models/channel_state_change.rb
ably-rest-1.0.5 lib/submodules/ably-ruby/lib/ably/models/channel_state_change.rb
ably-1.0.5 lib/ably/models/channel_state_change.rb
ably-1.0.4 lib/ably/models/channel_state_change.rb
ably-1.0.3 lib/ably/models/channel_state_change.rb
ably-1.0.2 lib/ably/models/channel_state_change.rb
ably-1.0.1 lib/ably/models/channel_state_change.rb
ably-rest-1.0.0 lib/submodules/ably-ruby/lib/ably/models/channel_state_change.rb
ably-1.0.0 lib/ably/models/channel_state_change.rb