Sha256: 10e0828269f359d6e109daeed8b19319c99c74e242b8da30dc2e122282e2b328

Contents?: true

Size: 857 Bytes

Versions: 5

Compression:

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

5 entries across 5 versions & 1 rubygems

Version Path
anycable-0.4.6 lib/anycable/socket.rb
anycable-0.4.5 lib/anycable/socket.rb
anycable-0.4.4 lib/anycable/socket.rb
anycable-0.4.3 lib/anycable/socket.rb
anycable-0.4.2 lib/anycable/socket.rb