Sha256: 7d3a6fcf831e1d8a1d35ec8dd2867305c8926b4b7a22cfd72adb1005a97a8531

Contents?: true

Size: 638 Bytes

Versions: 1

Compression:

Stored size: 638 Bytes

Contents

module OneWire
  class Response
    def initialize(socket)
      begin
        header = socket.read(24)
        raise ShortRead unless header && header.size == 24
        version, payload_size, @return_value, @flags, data_size, offset = header.unpack('NNNNNN')
        raise SystemCallError, 2**32 - @return_value, "OWServer" if @return_value > 2**31
      end while payload_size > 2**31 # negative payload size indicates a server 'keep-alive' ping
      raise BadRead if data_size > 2**31
      @data = socket.read(payload_size)[0...data_size] unless payload_size.zero?
    end
    
    attr_reader :data, :return_value, :flags
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
one_wire-0.1.1 lib/one_wire/response.rb