libuv 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +15 -0
  2. data/.gitignore +17 -0
  3. data/.gitmodules +3 -0
  4. data/.rspec +1 -0
  5. data/.travis.yml +16 -0
  6. data/Gemfile +2 -0
  7. data/LICENSE +24 -0
  8. data/README.md +73 -0
  9. data/Rakefile +31 -0
  10. data/lib/libuv.rb +34 -0
  11. data/lib/libuv/assertions.rb +23 -0
  12. data/lib/libuv/async.rb +33 -0
  13. data/lib/libuv/check.rb +49 -0
  14. data/lib/libuv/error.rb +70 -0
  15. data/lib/libuv/ext/ext.rb +257 -0
  16. data/lib/libuv/ext/platform/darwin_x64.rb +12 -0
  17. data/lib/libuv/ext/platform/linux.rb +8 -0
  18. data/lib/libuv/ext/platform/unix.rb +14 -0
  19. data/lib/libuv/ext/platform/windows.rb +27 -0
  20. data/lib/libuv/ext/tasks.rb +27 -0
  21. data/lib/libuv/ext/tasks/mac.rb +23 -0
  22. data/lib/libuv/ext/tasks/unix.rb +23 -0
  23. data/lib/libuv/ext/tasks/win.rb +11 -0
  24. data/lib/libuv/ext/types.rb +230 -0
  25. data/lib/libuv/fs_event.rb +31 -0
  26. data/lib/libuv/handle.rb +82 -0
  27. data/lib/libuv/idle.rb +49 -0
  28. data/lib/libuv/listener.rb +34 -0
  29. data/lib/libuv/loop.rb +310 -0
  30. data/lib/libuv/net.rb +38 -0
  31. data/lib/libuv/pipe.rb +97 -0
  32. data/lib/libuv/prepare.rb +49 -0
  33. data/lib/libuv/q.rb +429 -0
  34. data/lib/libuv/resource.rb +28 -0
  35. data/lib/libuv/simple_async.rb +28 -0
  36. data/lib/libuv/stream.rb +124 -0
  37. data/lib/libuv/tcp.rb +194 -0
  38. data/lib/libuv/timer.rb +75 -0
  39. data/lib/libuv/tty.rb +34 -0
  40. data/lib/libuv/udp.rb +256 -0
  41. data/lib/libuv/version.rb +3 -0
  42. data/lib/libuv/work.rb +62 -0
  43. data/libuv.gemspec +54 -0
  44. data/spec/async_spec.rb +60 -0
  45. data/spec/defer_spec.rb +980 -0
  46. data/spec/idle_spec.rb +56 -0
  47. data/spec/pipe_spec.rb +148 -0
  48. data/spec/tcp_spec.rb +188 -0
  49. metadata +382 -0
data/spec/idle_spec.rb ADDED
@@ -0,0 +1,56 @@
1
+ require 'libuv'
2
+
3
+
4
+ describe Libuv::Idle do
5
+ before :each do
6
+ @log = []
7
+ @general_failure = []
8
+
9
+ @loop = Libuv::Loop.new
10
+ @server = @loop.pipe
11
+ @client = @loop.pipe
12
+ @timeout = @loop.timer do
13
+ @loop.stop
14
+ @general_failure << "test timed out"
15
+ end
16
+ @timeout.start(5000)
17
+
18
+ @loop.all(@server, @client, @timeout).catch do |reason|
19
+ @general_failure << reason.inspect
20
+ p "Failed with: #{reason.message}\n#{reason.backtrace.join("\n")}\n"
21
+ end
22
+ end
23
+
24
+ it "should increase the idle count when there is nothing to process" do
25
+ @loop.run { |logger|
26
+ logger.progress do |level, errorid, error|
27
+ begin
28
+ p "Log called: #{level}: #{errorid}\n#{error.message}\n#{error.backtrace.join("\n")}\n"
29
+ rescue Exception
30
+ p 'error in logger'
31
+ end
32
+ end
33
+
34
+ @idle_calls = 0
35
+
36
+ idle = @loop.idle do |e|
37
+ @idle_calls += 1
38
+ end
39
+ idle.start
40
+
41
+ timer = @loop.timer proc {}
42
+ timer.start(1, 0)
43
+
44
+ stopper = @loop.timer do
45
+ idle.close
46
+ timer.close
47
+ stopper.close
48
+ @loop.stop
49
+ end
50
+ stopper.start(1000, 0)
51
+ }
52
+
53
+ @general_failure.should == []
54
+ (@idle_calls > 0).should == true
55
+ end
56
+ end
data/spec/pipe_spec.rb ADDED
@@ -0,0 +1,148 @@
1
+ require 'libuv'
2
+
3
+
4
+ describe Libuv::Pipe do
5
+ before :each do
6
+ @log = []
7
+ @general_failure = []
8
+
9
+ @loop = Libuv::Loop.new
10
+ @server = @loop.pipe
11
+ @client = @loop.pipe
12
+ @timeout = @loop.timer do
13
+ @loop.stop
14
+ @general_failure << "test timed out"
15
+ end
16
+ @timeout.start(5000)
17
+
18
+ @pipefile = "/tmp/test-pipe.pipe"
19
+
20
+ @loop.all(@server, @client, @timeout).catch do |reason|
21
+ @general_failure << reason.inspect
22
+ p "Failed with: #{reason.message}\n#{reason.backtrace.join("\n")}\n"
23
+ end
24
+
25
+ begin
26
+ File.unlink(@pipefile)
27
+ rescue
28
+ end
29
+ end
30
+
31
+ after :each do
32
+ begin
33
+ File.unlink(@pipefile)
34
+ rescue
35
+ end
36
+ end
37
+
38
+ describe 'bidirectional inter process communication' do
39
+
40
+ it "should send a ping and return a pong" do
41
+ @loop.run { |logger|
42
+ logger.progress do |level, errorid, error|
43
+ begin
44
+ p "Log called: #{level}: #{errorid}\n#{error.message}\n#{error.backtrace.join("\n")}\n"
45
+ rescue Exception
46
+ p 'error in logger'
47
+ end
48
+ end
49
+
50
+ @server.bind("/tmp/ipc-example.ipc") do |connection|
51
+ connection.accept do |client|
52
+ client.progress do |data|
53
+ @log << data
54
+ client.write('pong')
55
+ end
56
+ client.start_read
57
+ end
58
+ end
59
+
60
+ # catch server errors
61
+ @server.catch do |reason|
62
+ @general_failure << reason.inspect
63
+ @loop.stop
64
+
65
+ p "Failed with: #{reason.message}\n#{reason.backtrace.join("\n")}\n"
66
+ end
67
+
68
+ # start listening
69
+ @server.listen(1024)
70
+
71
+
72
+
73
+ # connect client to server
74
+ @client.connect("/tmp/ipc-example.ipc") do |client|
75
+ @client.progress do |data|
76
+ @log << data
77
+
78
+ @client.close
79
+ end
80
+
81
+ @client.start_read
82
+ @client.write('ping')
83
+ end
84
+
85
+ # Stop the loop once the client handle is closed
86
+ @client.finally do
87
+ @server.close
88
+ @loop.stop
89
+ end
90
+ }
91
+
92
+ @general_failure.should == []
93
+ @log.should == ['ping', 'pong']
94
+ end
95
+ end
96
+
97
+ # This test won't pass on jRuby as java won't expose file descriptors
98
+ describe 'unidirectional pipeline', :real_io => true do
99
+ before :each do
100
+ system "/usr/bin/mkfifo", @pipefile
101
+ end
102
+
103
+ it "should send work to a consumer" do
104
+ @loop.run { |logger|
105
+ logger.progress do |level, errorid, error|
106
+ p "Log called: #{level}: #{errorid}\n#{e.message}\n#{e.backtrace.join("\n")}\n"
107
+ end
108
+
109
+
110
+ heartbeat = @loop.timer
111
+ @file1 = File.open(@pipefile, File::RDWR|File::NONBLOCK)
112
+ @server.open(@file1.fileno) do |server|
113
+ heartbeat.progress do
114
+ @server.write('workload').catch do |err|
115
+ @general_failure << err
116
+ end
117
+ end
118
+ heartbeat.start(0, 200)
119
+ end
120
+
121
+
122
+
123
+ @file2 = File.open(@pipefile, File::RDWR|File::NONBLOCK)
124
+ # connect client to server
125
+ @client.open(@file2.fileno) do |consumer|
126
+ consumer.progress do |data|
127
+ @log = data
128
+ end
129
+
130
+ consumer.start_read
131
+ end
132
+
133
+
134
+ timeout = @loop.timer do
135
+ @server.close
136
+ @client.close
137
+ timeout.close
138
+ heartbeat.close
139
+ @loop.stop
140
+ end
141
+ timeout.start(1000)
142
+ }
143
+
144
+ @general_failure.should == []
145
+ @log.should == 'workload'
146
+ end
147
+ end
148
+ end
data/spec/tcp_spec.rb ADDED
@@ -0,0 +1,188 @@
1
+ require 'libuv'
2
+
3
+
4
+ describe Libuv::TCP do
5
+ before :each do
6
+ @log = []
7
+ @general_failure = []
8
+
9
+ @loop = Libuv::Loop.new
10
+ @server = @loop.tcp
11
+ @client = @loop.tcp
12
+ @timeout = @loop.timer do
13
+ @loop.stop
14
+ @general_failure << "test timed out"
15
+ end
16
+ @timeout.start(5000)
17
+
18
+ @loop.all(@server, @client, @timeout).catch do |reason|
19
+ @general_failure << reason.inspect
20
+ end
21
+ end
22
+
23
+ describe 'basic client server' do
24
+ it "should send a ping and return a pong", :network => true do
25
+ @loop.run { |logger|
26
+ logger.progress do |level, errorid, error|
27
+ begin
28
+ p "Log called: #{level}: #{errorid}\n#{error.message}\n#{error.backtrace.join("\n")}\n"
29
+ rescue Exception
30
+ p 'error in logger'
31
+ end
32
+ end
33
+
34
+
35
+ @server.bind('127.0.0.1', 34567) do |server|
36
+ server.accept do |client|
37
+ client.progress do |data|
38
+ @log << data
39
+
40
+ client.write('pong')
41
+ end
42
+ client.start_read
43
+ end
44
+ end
45
+
46
+ # catch errors
47
+ @server.catch do |reason|
48
+ @general_failure << reason.inspect
49
+ end
50
+
51
+ # start listening
52
+ @server.listen(1024)
53
+
54
+
55
+
56
+ # connect client to server
57
+ @client.connect('127.0.0.1', 34567) do |client|
58
+ client.progress do |data|
59
+ @log << data
60
+
61
+ @client.shutdown
62
+ end
63
+
64
+ @client.start_read
65
+ @client.write('ping')
66
+ end
67
+
68
+ # catch errors
69
+ @client.catch do |reason|
70
+ @general_failure << reason.inspect
71
+ end
72
+
73
+ # close the handle
74
+ @client.finally do
75
+ @server.close
76
+ @loop.stop
77
+ end
78
+ }
79
+
80
+ @general_failure.should == []
81
+ @log.should == ['ping', 'pong']
82
+ end
83
+
84
+ =begin
85
+ it "should allow multiple binds to the same address" do
86
+ @loop.run { |logger|
87
+ logger.progress do |level, errorid, error|
88
+ begin
89
+ p "Log called: #{level}: #{errorid}\n#{error.message}\n#{error.backtrace.join("\n")}\n"
90
+ rescue Exception
91
+ p 'error in logger'
92
+ end
93
+ end
94
+
95
+
96
+ @server.bind('127.0.0.1', 34567) do |server|
97
+ server.accept do |client|
98
+ client.progress do |data|
99
+ @log << data
100
+
101
+ client.write('pong1')
102
+ end
103
+ client.start_read
104
+ end
105
+ end
106
+
107
+ # catch errors
108
+ @server.catch do |reason|
109
+ @general_failure << reason.inspect
110
+ end
111
+
112
+ # start listening
113
+ @server.listen(1024)
114
+
115
+
116
+ @server2 = @loop.tcp
117
+
118
+ @server2.bind('127.0.0.1', 34567) do |server|
119
+ server.accept do |client|
120
+ client.progress do |data|
121
+ @log << data
122
+
123
+ client.write('pong2')
124
+ end
125
+ client.start_read
126
+ end
127
+ end
128
+
129
+ # catch errors
130
+ @server2.catch do |reason|
131
+ @general_failure << reason.inspect
132
+ end
133
+
134
+ # start listening
135
+ @server2.listen(1024)
136
+
137
+
138
+ # connect client to server
139
+ @client.connect('127.0.0.1', 34567) do |client|
140
+ client.progress do |data|
141
+ @log << data
142
+
143
+ @client.shutdown
144
+ end
145
+
146
+ @client.start_read
147
+ @client.write('ping1')
148
+ end
149
+
150
+ # catch errors
151
+ @client.catch do |reason|
152
+ @general_failure << reason.inspect
153
+ end
154
+
155
+ # close the handle
156
+ @client.finally do
157
+ @server.close
158
+ @loop.stop
159
+ end
160
+
161
+ @client2 = @loop.tcp
162
+
163
+ # connect client to server
164
+ @client2.connect('127.0.0.1', 34567) do |client|
165
+ client.progress do |data|
166
+ @log << data
167
+
168
+ @client.shutdown
169
+ end
170
+
171
+ @client2.start_read
172
+ @client2.write('ping2')
173
+ end
174
+
175
+ # catch errors
176
+ @client2.catch do |reason|
177
+ @general_failure << reason.inspect
178
+ end
179
+
180
+ }
181
+
182
+ @general_failure.should == []
183
+ @log.should == ['ping', 'pong']
184
+ end
185
+ =end
186
+
187
+ end
188
+ end
metadata ADDED
@@ -0,0 +1,382 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: libuv
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.10.0
5
+ platform: ruby
6
+ authors:
7
+ - Bulat Shakirzyanov
8
+ - Stephen von Takach
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-08-23 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: ffi
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ! '>='
19
+ - !ruby/object:Gem::Version
20
+ version: '1.9'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ! '>='
26
+ - !ruby/object:Gem::Version
27
+ version: '1.9'
28
+ - !ruby/object:Gem::Dependency
29
+ name: thread_safe
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ! '>='
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ! '>='
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: rspec
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ! '>='
47
+ - !ruby/object:Gem::Version
48
+ version: '2.14'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '2.14'
56
+ - !ruby/object:Gem::Dependency
57
+ name: rake
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '10.1'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '10.1'
70
+ - !ruby/object:Gem::Dependency
71
+ name: yard
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ! '>='
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ description: An opinionated wrapper around libuv for Ruby
85
+ email:
86
+ - mallluhuct@gmail.com
87
+ - steve@cotag.me
88
+ executables: []
89
+ extensions:
90
+ - ext/Rakefile
91
+ extra_rdoc_files: []
92
+ files:
93
+ - .gitignore
94
+ - .gitmodules
95
+ - .rspec
96
+ - .travis.yml
97
+ - Gemfile
98
+ - LICENSE
99
+ - README.md
100
+ - Rakefile
101
+ - ext/README.md
102
+ - ext/Rakefile
103
+ - lib/libuv.rb
104
+ - lib/libuv/assertions.rb
105
+ - lib/libuv/async.rb
106
+ - lib/libuv/check.rb
107
+ - lib/libuv/error.rb
108
+ - lib/libuv/ext/ext.rb
109
+ - lib/libuv/ext/platform/darwin_x64.rb
110
+ - lib/libuv/ext/platform/linux.rb
111
+ - lib/libuv/ext/platform/unix.rb
112
+ - lib/libuv/ext/platform/windows.rb
113
+ - lib/libuv/ext/tasks.rb
114
+ - lib/libuv/ext/tasks/mac.rb
115
+ - lib/libuv/ext/tasks/unix.rb
116
+ - lib/libuv/ext/tasks/win.rb
117
+ - lib/libuv/ext/types.rb
118
+ - lib/libuv/fs_event.rb
119
+ - lib/libuv/handle.rb
120
+ - lib/libuv/idle.rb
121
+ - lib/libuv/listener.rb
122
+ - lib/libuv/loop.rb
123
+ - lib/libuv/net.rb
124
+ - lib/libuv/pipe.rb
125
+ - lib/libuv/prepare.rb
126
+ - lib/libuv/q.rb
127
+ - lib/libuv/resource.rb
128
+ - lib/libuv/simple_async.rb
129
+ - lib/libuv/stream.rb
130
+ - lib/libuv/tcp.rb
131
+ - lib/libuv/timer.rb
132
+ - lib/libuv/tty.rb
133
+ - lib/libuv/udp.rb
134
+ - lib/libuv/version.rb
135
+ - lib/libuv/work.rb
136
+ - libuv.gemspec
137
+ - spec/async_spec.rb
138
+ - spec/defer_spec.rb
139
+ - spec/idle_spec.rb
140
+ - spec/pipe_spec.rb
141
+ - spec/tcp_spec.rb
142
+ - ext/libuv/.gitignore
143
+ - ext/libuv/.mailmap
144
+ - ext/libuv/AUTHORS
145
+ - ext/libuv/ChangeLog
146
+ - ext/libuv/LICENSE
147
+ - ext/libuv/Makefile.am
148
+ - ext/libuv/Makefile.mingw
149
+ - ext/libuv/README.md
150
+ - ext/libuv/android-configure
151
+ - ext/libuv/autogen.sh
152
+ - ext/libuv/checksparse.sh
153
+ - ext/libuv/common.gypi
154
+ - ext/libuv/configure.ac
155
+ - ext/libuv/gyp_uv
156
+ - ext/libuv/include/pthread-fixes.h
157
+ - ext/libuv/include/stdint-msvc2008.h
158
+ - ext/libuv/include/tree.h
159
+ - ext/libuv/include/uv-bsd.h
160
+ - ext/libuv/include/uv-darwin.h
161
+ - ext/libuv/include/uv-errno.h
162
+ - ext/libuv/include/uv-linux.h
163
+ - ext/libuv/include/uv-sunos.h
164
+ - ext/libuv/include/uv-unix.h
165
+ - ext/libuv/include/uv-win.h
166
+ - ext/libuv/include/uv.h
167
+ - ext/libuv/m4/.gitignore
168
+ - ext/libuv/m4/dtrace.m4
169
+ - ext/libuv/src/fs-poll.c
170
+ - ext/libuv/src/inet.c
171
+ - ext/libuv/src/queue.h
172
+ - ext/libuv/src/unix/aix.c
173
+ - ext/libuv/src/unix/async.c
174
+ - ext/libuv/src/unix/core.c
175
+ - ext/libuv/src/unix/darwin-proctitle.c
176
+ - ext/libuv/src/unix/darwin.c
177
+ - ext/libuv/src/unix/dl.c
178
+ - ext/libuv/src/unix/freebsd.c
179
+ - ext/libuv/src/unix/fs.c
180
+ - ext/libuv/src/unix/fsevents.c
181
+ - ext/libuv/src/unix/getaddrinfo.c
182
+ - ext/libuv/src/unix/internal.h
183
+ - ext/libuv/src/unix/kqueue.c
184
+ - ext/libuv/src/unix/linux-core.c
185
+ - ext/libuv/src/unix/linux-inotify.c
186
+ - ext/libuv/src/unix/linux-syscalls.c
187
+ - ext/libuv/src/unix/linux-syscalls.h
188
+ - ext/libuv/src/unix/loop-watcher.c
189
+ - ext/libuv/src/unix/loop.c
190
+ - ext/libuv/src/unix/netbsd.c
191
+ - ext/libuv/src/unix/openbsd.c
192
+ - ext/libuv/src/unix/pipe.c
193
+ - ext/libuv/src/unix/poll.c
194
+ - ext/libuv/src/unix/process.c
195
+ - ext/libuv/src/unix/proctitle.c
196
+ - ext/libuv/src/unix/pthread-fixes.c
197
+ - ext/libuv/src/unix/signal.c
198
+ - ext/libuv/src/unix/stream.c
199
+ - ext/libuv/src/unix/sunos.c
200
+ - ext/libuv/src/unix/tcp.c
201
+ - ext/libuv/src/unix/thread.c
202
+ - ext/libuv/src/unix/threadpool.c
203
+ - ext/libuv/src/unix/timer.c
204
+ - ext/libuv/src/unix/tty.c
205
+ - ext/libuv/src/unix/udp.c
206
+ - ext/libuv/src/unix/uv-dtrace.d
207
+ - ext/libuv/src/uv-common.c
208
+ - ext/libuv/src/uv-common.h
209
+ - ext/libuv/src/version.c
210
+ - ext/libuv/src/win/async.c
211
+ - ext/libuv/src/win/atomicops-inl.h
212
+ - ext/libuv/src/win/core.c
213
+ - ext/libuv/src/win/dl.c
214
+ - ext/libuv/src/win/error.c
215
+ - ext/libuv/src/win/fs-event.c
216
+ - ext/libuv/src/win/fs.c
217
+ - ext/libuv/src/win/getaddrinfo.c
218
+ - ext/libuv/src/win/handle-inl.h
219
+ - ext/libuv/src/win/handle.c
220
+ - ext/libuv/src/win/internal.h
221
+ - ext/libuv/src/win/loop-watcher.c
222
+ - ext/libuv/src/win/pipe.c
223
+ - ext/libuv/src/win/poll.c
224
+ - ext/libuv/src/win/process-stdio.c
225
+ - ext/libuv/src/win/process.c
226
+ - ext/libuv/src/win/req-inl.h
227
+ - ext/libuv/src/win/req.c
228
+ - ext/libuv/src/win/signal.c
229
+ - ext/libuv/src/win/stream-inl.h
230
+ - ext/libuv/src/win/stream.c
231
+ - ext/libuv/src/win/tcp.c
232
+ - ext/libuv/src/win/thread.c
233
+ - ext/libuv/src/win/threadpool.c
234
+ - ext/libuv/src/win/timer.c
235
+ - ext/libuv/src/win/tty.c
236
+ - ext/libuv/src/win/udp.c
237
+ - ext/libuv/src/win/util.c
238
+ - ext/libuv/src/win/winapi.c
239
+ - ext/libuv/src/win/winapi.h
240
+ - ext/libuv/src/win/winsock.c
241
+ - ext/libuv/src/win/winsock.h
242
+ - ext/libuv/test/benchmark-async-pummel.c
243
+ - ext/libuv/test/benchmark-async.c
244
+ - ext/libuv/test/benchmark-fs-stat.c
245
+ - ext/libuv/test/benchmark-getaddrinfo.c
246
+ - ext/libuv/test/benchmark-list.h
247
+ - ext/libuv/test/benchmark-loop-count.c
248
+ - ext/libuv/test/benchmark-million-async.c
249
+ - ext/libuv/test/benchmark-million-timers.c
250
+ - ext/libuv/test/benchmark-multi-accept.c
251
+ - ext/libuv/test/benchmark-ping-pongs.c
252
+ - ext/libuv/test/benchmark-pound.c
253
+ - ext/libuv/test/benchmark-pump.c
254
+ - ext/libuv/test/benchmark-sizes.c
255
+ - ext/libuv/test/benchmark-spawn.c
256
+ - ext/libuv/test/benchmark-tcp-write-batch.c
257
+ - ext/libuv/test/benchmark-thread.c
258
+ - ext/libuv/test/benchmark-udp-pummel.c
259
+ - ext/libuv/test/blackhole-server.c
260
+ - ext/libuv/test/dns-server.c
261
+ - ext/libuv/test/echo-server.c
262
+ - ext/libuv/test/fixtures/empty_file
263
+ - ext/libuv/test/fixtures/load_error.node
264
+ - ext/libuv/test/run-benchmarks.c
265
+ - ext/libuv/test/run-tests.c
266
+ - ext/libuv/test/runner-unix.c
267
+ - ext/libuv/test/runner-unix.h
268
+ - ext/libuv/test/runner-win.c
269
+ - ext/libuv/test/runner-win.h
270
+ - ext/libuv/test/runner.c
271
+ - ext/libuv/test/runner.h
272
+ - ext/libuv/test/task.h
273
+ - ext/libuv/test/test-active.c
274
+ - ext/libuv/test/test-async-null-cb.c
275
+ - ext/libuv/test/test-async.c
276
+ - ext/libuv/test/test-barrier.c
277
+ - ext/libuv/test/test-callback-order.c
278
+ - ext/libuv/test/test-callback-stack.c
279
+ - ext/libuv/test/test-condvar.c
280
+ - ext/libuv/test/test-connection-fail.c
281
+ - ext/libuv/test/test-cwd-and-chdir.c
282
+ - ext/libuv/test/test-delayed-accept.c
283
+ - ext/libuv/test/test-dlerror.c
284
+ - ext/libuv/test/test-embed.c
285
+ - ext/libuv/test/test-error.c
286
+ - ext/libuv/test/test-fail-always.c
287
+ - ext/libuv/test/test-fs-event.c
288
+ - ext/libuv/test/test-fs-poll.c
289
+ - ext/libuv/test/test-fs.c
290
+ - ext/libuv/test/test-get-currentexe.c
291
+ - ext/libuv/test/test-get-loadavg.c
292
+ - ext/libuv/test/test-get-memory.c
293
+ - ext/libuv/test/test-getaddrinfo.c
294
+ - ext/libuv/test/test-getsockname.c
295
+ - ext/libuv/test/test-hrtime.c
296
+ - ext/libuv/test/test-idle.c
297
+ - ext/libuv/test/test-ip6-addr.c
298
+ - ext/libuv/test/test-ipc-send-recv.c
299
+ - ext/libuv/test/test-ipc.c
300
+ - ext/libuv/test/test-list.h
301
+ - ext/libuv/test/test-loop-handles.c
302
+ - ext/libuv/test/test-loop-stop.c
303
+ - ext/libuv/test/test-multiple-listen.c
304
+ - ext/libuv/test/test-mutexes.c
305
+ - ext/libuv/test/test-osx-select.c
306
+ - ext/libuv/test/test-pass-always.c
307
+ - ext/libuv/test/test-ping-pong.c
308
+ - ext/libuv/test/test-pipe-bind-error.c
309
+ - ext/libuv/test/test-pipe-connect-error.c
310
+ - ext/libuv/test/test-platform-output.c
311
+ - ext/libuv/test/test-poll-close.c
312
+ - ext/libuv/test/test-poll.c
313
+ - ext/libuv/test/test-process-title.c
314
+ - ext/libuv/test/test-ref.c
315
+ - ext/libuv/test/test-run-nowait.c
316
+ - ext/libuv/test/test-run-once.c
317
+ - ext/libuv/test/test-semaphore.c
318
+ - ext/libuv/test/test-shutdown-close.c
319
+ - ext/libuv/test/test-shutdown-eof.c
320
+ - ext/libuv/test/test-signal-multiple-loops.c
321
+ - ext/libuv/test/test-signal.c
322
+ - ext/libuv/test/test-spawn.c
323
+ - ext/libuv/test/test-stdio-over-pipes.c
324
+ - ext/libuv/test/test-tcp-bind-error.c
325
+ - ext/libuv/test/test-tcp-bind6-error.c
326
+ - ext/libuv/test/test-tcp-close-while-connecting.c
327
+ - ext/libuv/test/test-tcp-close.c
328
+ - ext/libuv/test/test-tcp-connect-error-after-write.c
329
+ - ext/libuv/test/test-tcp-connect-error.c
330
+ - ext/libuv/test/test-tcp-connect-timeout.c
331
+ - ext/libuv/test/test-tcp-connect6-error.c
332
+ - ext/libuv/test/test-tcp-flags.c
333
+ - ext/libuv/test/test-tcp-open.c
334
+ - ext/libuv/test/test-tcp-read-stop.c
335
+ - ext/libuv/test/test-tcp-shutdown-after-write.c
336
+ - ext/libuv/test/test-tcp-unexpected-read.c
337
+ - ext/libuv/test/test-tcp-write-to-half-open-connection.c
338
+ - ext/libuv/test/test-tcp-writealot.c
339
+ - ext/libuv/test/test-thread.c
340
+ - ext/libuv/test/test-threadpool-cancel.c
341
+ - ext/libuv/test/test-threadpool.c
342
+ - ext/libuv/test/test-timer-again.c
343
+ - ext/libuv/test/test-timer-from-check.c
344
+ - ext/libuv/test/test-timer.c
345
+ - ext/libuv/test/test-tty.c
346
+ - ext/libuv/test/test-udp-dgram-too-big.c
347
+ - ext/libuv/test/test-udp-ipv6.c
348
+ - ext/libuv/test/test-udp-multicast-join.c
349
+ - ext/libuv/test/test-udp-multicast-ttl.c
350
+ - ext/libuv/test/test-udp-open.c
351
+ - ext/libuv/test/test-udp-options.c
352
+ - ext/libuv/test/test-udp-send-and-recv.c
353
+ - ext/libuv/test/test-util.c
354
+ - ext/libuv/test/test-walk-handles.c
355
+ - ext/libuv/uv.gyp
356
+ - ext/libuv/vcbuild.bat
357
+ homepage: https://github.com/cotag/libuv
358
+ licenses:
359
+ - MIT
360
+ metadata: {}
361
+ post_install_message:
362
+ rdoc_options: []
363
+ require_paths:
364
+ - lib
365
+ required_ruby_version: !ruby/object:Gem::Requirement
366
+ requirements:
367
+ - - ! '>='
368
+ - !ruby/object:Gem::Version
369
+ version: 1.9.2
370
+ required_rubygems_version: !ruby/object:Gem::Requirement
371
+ requirements:
372
+ - - ! '>='
373
+ - !ruby/object:Gem::Version
374
+ version: '0'
375
+ requirements: []
376
+ rubyforge_project:
377
+ rubygems_version: 2.0.7
378
+ signing_key:
379
+ specification_version: 4
380
+ summary: libuv bindings for Ruby
381
+ test_files: []
382
+ has_rdoc: