gio-redis 0.0.1 → 0.0.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 52f7795d1fcb334f1b765925b960e4d9915fe462
4
- data.tar.gz: 4a8086109f8c8a89a4f932693d4004eb9c0c7376
3
+ metadata.gz: d75e20471a85809648d47357c950211657aec17a
4
+ data.tar.gz: ee2f7eaed1760cdacca425ec109e29dde1baa3a5
5
5
  SHA512:
6
- metadata.gz: 8f62e8485ca8ea1e3c464f3e013830bf583e32bf3e75236abbb8615fc3d5893b1cab14ee3f7e94df727bc7b30175dd3cc0964d41c1d7dbc4e38be1178e9b87ca
7
- data.tar.gz: 84180211093a88517bbd2cdc12d3abef2c03b18a058f4cba4965b912ee4662f4971220c8bb1c57424b5aa7043cbb6ce54c66dd3fdce181e0abe7d1aec219e1d2
6
+ metadata.gz: 8ceda2a4a3566d4a1e1e0bcc891ed1a8db2538108a9b83017df6e879437c7ac2eb3f187f6c05c774baa4207414eaee8a0b0c1545e7fc8dbaf8f51c4e822429ac
7
+ data.tar.gz: 5197119e9a0d53e6307f6aee00e7dba23c5b1f86534f795608638f8fd14ae052e77a3ce946d5fae840230a2276be482bcd87e6c0393c486475356164e4ac97d7
data/gio-redis.gemspec CHANGED
@@ -21,6 +21,7 @@ Gem::Specification.new do |spec|
21
21
  spec.add_dependency 'hiredis'
22
22
  spec.add_dependency 'gio2'
23
23
  spec.add_development_dependency "bundler", "~> 1.3"
24
+ spec.add_development_dependency 'redis'
24
25
  spec.add_development_dependency "rake"
25
26
  spec.add_development_dependency "gtk2"
26
27
  end
@@ -1,5 +1,5 @@
1
1
  module Gio
2
2
  class Redis
3
- VERSION = "0.0.1"
3
+ VERSION = "0.0.2"
4
4
  end
5
5
  end
data/lib/gio/redis.rb CHANGED
@@ -7,15 +7,24 @@ module Gio
7
7
  # Your code goes here...
8
8
  def initialize(host = '127.0.0.1', port = 6379, mainloop = nil)
9
9
 
10
- @addr = Gio::InetSocketAddress.new(Gio::InetAddress.new_from_string(host), port)
11
- @sock = Gio::Socket.new(:ipv4, :stream, :tcp)
10
+ @addr = Gio::InetSocketAddress.new(inet_address_from_string(host), port)
11
+ @sock = Gio::Socket.new(:ipv4, :stream, :tcp)
12
12
 
13
13
  @sock.connect(@addr)
14
14
  @sock.set_blocking(false)
15
15
 
16
- @reader = Hiredis::Reader.new
16
+ @redis_reader = Hiredis::Reader.new
17
+
18
+ if defined?(Gio::PollableInputStream)
19
+ @reader = Gio::UnixInputStream.new(@sock.fd, false)
20
+ @source = @reader.create_source(&method(:read_response))
21
+ @writer = Gio::UnixOutputStream.new(@sock.fd, false)
22
+ else
23
+ @source = @sock.create_source(GLib::IOCondition::IN, &method(:read_response))
24
+ @writer = @sock
25
+ @reader = @sock
26
+ end
17
27
 
18
- @source = @sock.create_source(GLib::IOCondition::IN, &method(:read_response))
19
28
  @source.attach
20
29
  @pong = false
21
30
  @callbacks = {}
@@ -41,6 +50,14 @@ module Gio
41
50
  end
42
51
 
43
52
  private
53
+ def inet_address_from_string(host)
54
+ if Gio::InetAddress.respond_to?(:new_from_string)
55
+ Gio::InetAddress.new_from_string(host)
56
+ else
57
+ Gio::InetAddress.new(host)
58
+ end
59
+ end
60
+
44
61
  def call_command(*args)
45
62
  command = "*#{args.size}\r\n"
46
63
  args.each { |a|
@@ -48,14 +65,18 @@ module Gio
48
65
  command << a.to_s
49
66
  command << "\r\n"
50
67
  }
51
- @sock.send command
68
+ if @writer.respond_to?(:write_nonblocking)
69
+ @writer.write_nonblocking command
70
+ else
71
+ @writer.send command
72
+ end
52
73
  end
53
74
 
54
75
  def read_response(source=nil, condition=nil)
55
76
  while data = read(4096)
56
- @reader.feed(data)
77
+ @redis_reader.feed(data)
57
78
 
58
- while response = @reader.gets
79
+ while response = @redis_reader.gets
59
80
  case response
60
81
  when 'PONG'
61
82
  @pong = true
@@ -77,9 +98,17 @@ module Gio
77
98
  end
78
99
 
79
100
  def read(n)
80
- @sock.receive(n)
81
- rescue Gio::IO::WouldBlockError => e
82
- nil
101
+ if @reader.respond_to?(:read_nonblocking)
102
+ begin @reader.read_nonblocking(n)
103
+ rescue Gio::IOError::WouldBlock => e
104
+ nil
105
+ end
106
+ else
107
+ begin @reader.receive(n)
108
+ rescue Gio::IO::WouldBlockError => e
109
+ nil
110
+ end
111
+ end
83
112
  end
84
113
  end
85
114
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gio-redis
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - |
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-06-18 00:00:00.000000000 Z
12
+ date: 2014-04-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: hiredis
@@ -53,6 +53,20 @@ dependencies:
53
53
  - - ~>
54
54
  - !ruby/object:Gem::Version
55
55
  version: '1.3'
56
+ - !ruby/object:Gem::Dependency
57
+ name: redis
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
56
70
  - !ruby/object:Gem::Dependency
57
71
  name: rake
58
72
  requirement: !ruby/object:Gem::Requirement
@@ -118,7 +132,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
118
132
  version: '0'
119
133
  requirements: []
120
134
  rubyforge_project:
121
- rubygems_version: 2.0.0.rc.2
135
+ rubygems_version: 2.2.2
122
136
  signing_key:
123
137
  specification_version: 4
124
138
  summary: gio2 based redis pub/sub listener