ichannel 4.0.0 → 4.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,3 @@
1
1
  class IChannel
2
- VERSION = "4.0.0"
2
+ VERSION = "4.1.0"
3
3
  end
data/lib/ichannel.rb CHANGED
@@ -70,7 +70,7 @@ class IChannel
70
70
  end
71
71
  _, writable, _ = IO.select nil, [@writer], nil, timeout
72
72
  if writable
73
- writable[0].send @serializer.dump(object), 0
73
+ writable[0].syswrite @serializer.dump(object)
74
74
  else
75
75
  raise IOError, 'The channel cannot be written to.'
76
76
  end
@@ -116,7 +116,7 @@ class IChannel
116
116
  end
117
117
  readable, _ = IO.select [@reader], nil, nil, timeout
118
118
  if readable
119
- msg, _ = readable[0].recvmsg
119
+ msg = readable[0].sysread 1024
120
120
  @serializer.load msg
121
121
  else
122
122
  raise IOError, 'The channel cannot be read from.'
@@ -126,7 +126,7 @@ class IChannel
126
126
 
127
127
  #
128
128
  # @return [Boolean]
129
- # Returns true if the channel is empty (nothing to read).
129
+ # Returns true when the channel is empty (nothing to read).
130
130
  #
131
131
  def empty?
132
132
  if @reader.closed?
@@ -135,4 +135,12 @@ class IChannel
135
135
  ! IO.select [@reader], nil, nil, 0.1
136
136
  end
137
137
  end
138
+
139
+ #
140
+ # @return [Boolean]
141
+ # Returns true when the channel is readable.
142
+ #
143
+ def readable?
144
+ ! empty?
145
+ end
138
146
  end
@@ -60,4 +60,21 @@ class IChannelTest < Test::Unit::TestCase
60
60
  @channel.close
61
61
  assert @channel.empty?
62
62
  end
63
+
64
+ def test_readable_on_populated_channel
65
+ @channel.put %w(a)
66
+ @channel.put %w(b)
67
+ assert @channel.readable?
68
+ end
69
+
70
+ def test_readable_on_empty_channel
71
+ @channel.put %w(42)
72
+ @channel.get # discard
73
+ refute @channel.readable?
74
+ end
75
+
76
+ def test_readable_on_closed_channel
77
+ @channel.close
78
+ refute @channel.readable?
79
+ end
63
80
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ichannel
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0
4
+ version: 4.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-27 00:00:00.000000000 Z
12
+ date: 2012-11-30 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: ! "A modern and easy-to-use interprocess communication \n primitive."
15
15
  email:
@@ -45,7 +45,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
45
45
  version: '0'
46
46
  segments:
47
47
  - 0
48
- hash: 1818717660868684885
48
+ hash: -2586476710676895974
49
49
  required_rubygems_version: !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
@@ -54,7 +54,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
54
54
  version: '0'
55
55
  segments:
56
56
  - 0
57
- hash: 1818717660868684885
57
+ hash: -2586476710676895974
58
58
  requirements: []
59
59
  rubyforge_project:
60
60
  rubygems_version: 1.8.23