Sha256: 6db487c6b1bf92ae4384ab320108e74cdf8be00cf031615c6d8116498c85646c

Contents?: true

Size: 1.87 KB

Versions: 26

Compression:

Stored size: 1.87 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

26 entries across 26 versions & 2 rubygems

Version Path
ably-rest-1.2.2 lib/submodules/ably-ruby/lib/ably/models/channel_state_change.rb
ably-1.2.2 lib/ably/models/channel_state_change.rb
ably-rest-1.2.1 lib/submodules/ably-ruby/lib/ably/models/channel_state_change.rb
ably-1.2.1 lib/ably/models/channel_state_change.rb
ably-rest-1.2.0 lib/submodules/ably-ruby/lib/ably/models/channel_state_change.rb
ably-1.2.0 lib/ably/models/channel_state_change.rb
ably-rest-1.1.8 lib/submodules/ably-ruby/lib/ably/models/channel_state_change.rb
ably-1.1.8 lib/ably/models/channel_state_change.rb
ably-rest-1.1.7 lib/submodules/ably-ruby/lib/ably/models/channel_state_change.rb
ably-1.1.7 lib/ably/models/channel_state_change.rb
ably-rest-1.1.6 lib/submodules/ably-ruby/lib/ably/models/channel_state_change.rb
ably-1.1.6 lib/ably/models/channel_state_change.rb
ably-rest-1.1.5 lib/submodules/ably-ruby/lib/ably/models/channel_state_change.rb
ably-1.1.5 lib/ably/models/channel_state_change.rb
ably-rest-1.1.4 lib/submodules/ably-ruby/lib/ably/models/channel_state_change.rb
ably-1.1.4 lib/ably/models/channel_state_change.rb
ably-rest-1.1.4.rc lib/submodules/ably-ruby/lib/ably/models/channel_state_change.rb
ably-1.1.4.rc lib/ably/models/channel_state_change.rb
ably-rest-1.1.3 lib/submodules/ably-ruby/lib/ably/models/channel_state_change.rb
ably-1.1.3 lib/ably/models/channel_state_change.rb