Sha256: 382bfd45b4c806fd6d65d770f74d57ec90983cd5ae5fe56e718ce7426c94b508

Contents?: true

Size: 858 Bytes

Versions: 7

Compression:

Stored size: 858 Bytes

Contents

# frozen_string_literal: true

module AnyCable
  # Socket mock to be used with application connection
  class Socket
    attr_reader :transmissions, :env

    def initialize(env: nil)
      @transmissions = []
      @env = env
    end

    def transmit(websocket_message)
      transmissions << websocket_message
    end

    def subscribe(_channel, broadcasting)
      streams << broadcasting
    end

    def unsubscribe(_channel, _broadcasting)
      raise NotImplementedError
    end

    def unsubscribe_from_all(_channel)
      @stop_all_streams = true
    end

    def streams
      @streams ||= []
    end

    def close
      @closed = true
      @transmissions.clear
      @streams&.clear
      @stop_all_streams = true
    end

    def closed?
      @closed == true
    end

    def stop_streams?
      @stop_all_streams == true
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
anycable-0.6.5 lib/anycable/socket.rb
anycable-0.6.4 lib/anycable/socket.rb
anycable-0.6.3 lib/anycable/socket.rb
anycable-0.6.2 lib/anycable/socket.rb
anycable-0.6.1 lib/anycable/socket.rb
anycable-0.6.0 lib/anycable/socket.rb
anycable-0.6.0.rc1 lib/anycable/socket.rb