libuv 0.10.0

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.
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: