Class: Usbmux::SafeStreamSocket

Inherits:
Object
  • Object
show all
Defined in:
lib/usbmux/usbmux.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(family, address) ⇒ SafeStreamSocket

Returns a new instance of SafeStreamSocket.



12
13
14
15
# File 'lib/usbmux/usbmux.rb', line 12

def initialize(family, address)
  @sock = Socket.new(family, Socket::SOCK_STREAM)
  @sock.connect(address)
end

Instance Attribute Details

#sockObject

Returns the value of attribute sock.



10
11
12
# File 'lib/usbmux/usbmux.rb', line 10

def sock
  @sock
end

Instance Method Details

#closeObject



40
41
42
# File 'lib/usbmux/usbmux.rb', line 40

def close
  @sock.close
end

#receive(size) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
# File 'lib/usbmux/usbmux.rb', line 28

def receive(size)
  message = ''
  while message.length < size
    chunk = @sock.recv(size - message.length)
    if chunk.empty?
      raise MuxError.new('Socket connection broken')
    end
    message = message + chunk
  end
  message
end

#send(message) ⇒ Object



17
18
19
20
21
22
23
24
25
26
# File 'lib/usbmux/usbmux.rb', line 17

def send(message)
  total_sent = 0
  while total_sent < message.length
    sent = @sock.send(message[total_sent..-1], 0)
    if sent == 0
      raise MuxError.new('Socket connection broken')
    end
    total_sent += sent
  end
end