Sha256: 575cc7d12b9ef8ccd830dca663b85b4420a0cf24a64fb8d46e9b8de44877d94c

Contents?: true

Size: 1.06 KB

Versions: 12

Compression:

Stored size: 1.06 KB

Contents

require 'msgpack'

module Terminalwire::Adapter
  # Works with Test, TCP, Unix, WebSocket, and other socket-like abstractions.
  class Socket
    include Terminalwire::Logging

    attr_reader :transport

    def initialize(transport)
      @transport = transport
    end

    def write(data)
      logger.debug "Adapter: Sending #{data.inspect}"
      packed_data = MessagePack.pack(data, symbolize_keys: true)
      @transport.write(packed_data)
    end

    def read
      logger.debug "Adapter: Reading"
      packed_data = @transport.read
      return nil if packed_data.nil?
      data = MessagePack.unpack(packed_data, symbolize_keys: true)
      logger.debug "Adapter: Received #{data.inspect}"
      data
    end

    def close
      @transport.close
    end
  end

  # This is a test adapter that can be used for testing purposes.
  class Test
    attr_reader :responses

    def initialize(responses = [])
      @responses = responses
    end

    def write(**data)
      @responses << data
    end

    def response
      @responses.pop
    end

    def close
    end
  end
end

Version data entries

12 entries across 12 versions & 2 rubygems

Version Path
terminalwire-core-0.3.0 lib/terminalwire/adapter.rb
terminalwire-core-0.3.0.alpha5 lib/terminalwire/adapter.rb
terminalwire-core-0.3.0.alpha4 lib/terminalwire/adapter.rb
terminalwire-core-0.3.0.alpha3 lib/terminalwire/adapter.rb
terminalwire-core-0.3.0.alpha2 lib/terminalwire/adapter.rb
terminalwire-core-0.3.0.alpha1 lib/terminalwire/adapter.rb
terminalwire-0.2.5 lib/terminalwire/adapter.rb
terminalwire-0.2.4 lib/terminalwire/adapter.rb
terminalwire-0.2.3 lib/terminalwire/adapter.rb
terminalwire-0.2.2 lib/terminalwire/adapter.rb
terminalwire-0.2.1 lib/terminalwire/adapter.rb
terminalwire-0.2.0 lib/terminalwire/adapter.rb