one_wire 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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