one_wire 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
- :patch: 0
3
2
  :major: 0
4
3
  :minor: 1
4
+ :patch: 1
@@ -1,13 +1,14 @@
1
1
  module OneWire
2
2
  class Response
3
3
  def initialize(socket)
4
- header = socket.read(24)
5
- raise ShortRead unless header && header.size == 24
6
- version, payload_size, @return_value, @flags, data_size, offset = header.unpack('NNNNNN')
7
- raise SystemCallError, 2**32 - @return_value, "OWServer" if @return_value > 2**31
8
- raise BadRead if payload_size > 2**31 || data_size > 2**31
4
+ begin
5
+ header = socket.read(24)
6
+ raise ShortRead unless header && header.size == 24
7
+ version, payload_size, @return_value, @flags, data_size, offset = header.unpack('NNNNNN')
8
+ raise SystemCallError, 2**32 - @return_value, "OWServer" if @return_value > 2**31
9
+ end while payload_size > 2**31 # negative payload size indicates a server 'keep-alive' ping
10
+ raise BadRead if data_size > 2**31
9
11
  @data = socket.read(payload_size)[0...data_size] unless payload_size.zero?
10
- # @data = payload_size.zero? ? "" : socket.read(payload_size)[0...data_size]
11
12
  end
12
13
 
13
14
  attr_reader :data, :return_value, :flags
@@ -33,6 +33,18 @@ module OneWire
33
33
  def write(path, value, options = {})
34
34
  new(:write, path, options.merge(:value => value))
35
35
  end
36
+
37
+ def ping(options = {})
38
+ host = options[:host] || OneWire::Config.host
39
+ port = options[:port] || OneWire::Config.port
40
+ socket = Socket.new(Socket::AF_INET, Socket::SOCK_STREAM, 0)
41
+ socket.connect(Socket.pack_sockaddr_in(port, host))
42
+ return true
43
+ rescue SystemCallError
44
+ return false
45
+ ensure
46
+ socket.close if socket && !socket.closed?
47
+ end
36
48
  end
37
49
  end
38
50
  end
data/one_wire.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{one_wire}
8
- s.version = "0.1.0"
8
+ s.version = "0.1.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Matthew Hollingworth"]
12
- s.date = %q{2009-10-10}
12
+ s.date = %q{2009-10-14}
13
13
  s.email = %q{mdholling@gmail.com}
14
14
  s.extra_rdoc_files = [
15
15
  "LICENSE",
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: one_wire
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Hollingworth
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-10-10 00:00:00 +11:00
12
+ date: 2009-10-14 00:00:00 +11:00
13
13
  default_executable:
14
14
  dependencies: []
15
15