uvrb 0.1.0 → 0.1.1

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.
@@ -1,4 +1,16 @@
1
1
  module UV
2
+ typedef :uint32_t, :in_addr_t
3
+ typedef :uint16, :in_port_t
4
+ typedef :int, :mode_t
5
+
6
+ module WS2
7
+ extend FFI::Library
8
+ ffi_lib('Ws2_32.dll').first # this is for ntohs
9
+ attach_function :ntohs, [:ushort], :ushort, :blocking => true
10
+ end
11
+ def_delegators :WS2, :ntohs
12
+ module_function :ntohs
13
+
2
14
  # win32 has a different uv_buf_t layout to everything else.
3
15
  class UvBuf < FFI::Struct
4
16
  layout :len, :ulong, :base, :pointer
@@ -1,3 +1,3 @@
1
1
  module UV
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.1'
3
3
  end
@@ -0,0 +1,41 @@
1
+ module UV
2
+ class Work
3
+ include Resource, Listener
4
+
5
+ def initialize(loop, work, callback = nil)
6
+ @loop, @work, @callback = loop, work, callback
7
+ @complete = false
8
+
9
+ @pointer = UV.create_request(:uv_work)
10
+ begin
11
+ check_result! UV.queue_work(@loop, @pointer, callback(:on_work), callback(:on_complete))
12
+ rescue StandardError => e
13
+ UV.free(@pointer)
14
+ @complete = true
15
+ raise e
16
+ end
17
+ end
18
+
19
+ def cancel
20
+ if not @complete
21
+ check_result! UV.cancel(@pointer)
22
+ @complete = true
23
+ end
24
+ end
25
+
26
+ def completed?
27
+ return @complete
28
+ end
29
+
30
+ private
31
+ def on_complete(req)
32
+ @complete = true
33
+ UV.free(req)
34
+ @callback.call unless @callback.nil?
35
+ end
36
+
37
+ def on_work(req)
38
+ @work.call
39
+ end
40
+ end
41
+ end
@@ -26,20 +26,12 @@ describe UV::Loop do
26
26
 
27
27
  describe "#run" do
28
28
  it "calls UV.run" do
29
- UV.should_receive(:run).with(loop_pointer)
29
+ UV.should_receive(:run).with(loop_pointer, :UV_RUN_DEFAULT)
30
30
 
31
31
  subject.run
32
32
  end
33
33
  end
34
34
 
35
- describe "#run_once" do
36
- it "calls UV.run_once" do
37
- UV.should_receive(:run_once).with(loop_pointer)
38
-
39
- subject.run_once
40
- end
41
- end
42
-
43
35
  describe "#update_time" do
44
36
  it "calls UV.update_time" do
45
37
  UV.should_receive(:update_time).with(loop_pointer)
@@ -62,11 +54,10 @@ describe UV::Loop do
62
54
  let(:error) { double() }
63
55
 
64
56
  it "calls UV.last_error" do
65
- UV.should_receive(:last_error).with(loop_pointer).and_return(error)
66
57
  UV.should_receive(:err_name).with(error).and_return("EINVAL")
67
58
  UV.should_receive(:strerror).with(error).and_return("invalid argument")
68
59
 
69
- subject.last_error.should == UV::Error::EINVAL.new("invalid argument")
60
+ subject.lookup_error(error).should == UV::Error::EINVAL.new("invalid argument")
70
61
  end
71
62
  end
72
63
 
@@ -20,7 +20,11 @@ describe UV::Pipe do
20
20
  end
21
21
 
22
22
  describe "#bind" do
23
- let(:name) { "/tmp/filename.ipc" }
23
+ let(:name) {
24
+ name = "/tmp/filename.ipc"
25
+ name = subject.send :windows_path, name if FFI::Platform.windows?
26
+ name
27
+ }
24
28
 
25
29
  it "calls UV.pipe_bind" do
26
30
  UV.should_receive(:pipe_bind).with(pointer, name)
@@ -30,7 +34,11 @@ describe UV::Pipe do
30
34
  end
31
35
 
32
36
  describe "#connect" do
33
- let(:name) { "/tmp/filename.ipc" }
37
+ let(:name) {
38
+ name = "/tmp/filename.ipc"
39
+ name = subject.send :windows_path, name if FFI::Platform.windows?
40
+ name
41
+ }
34
42
  let(:connect_request) { double() }
35
43
 
36
44
  it "requires a block" do
@@ -11,18 +11,45 @@ Gem::Specification.new do |gem|
11
11
  gem.description = "UV is Ruby OOP bindings for libuv"
12
12
 
13
13
  gem.requirements << 'libuv'
14
+ gem.extensions << "ext/Rakefile"
14
15
 
15
16
  gem.required_ruby_version = '>= 1.9.2'
17
+ gem.require_paths = ["lib"]
18
+
19
+ gem.add_runtime_dependency 'ffi', '~> 1.9'
20
+ gem.add_development_dependency 'rspec', '~> 2.14'
21
+ gem.add_development_dependency 'cucumber', '~> 1.3'
22
+ gem.add_development_dependency 'aruba', '~> 0.5'
23
+ gem.add_development_dependency 'rake', '~> 10.1'
24
+ gem.add_development_dependency 'rdoc', '~> 4.0'
16
25
 
17
26
  gem.files = `git ls-files`.split("\n")
18
27
  gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
- gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
- gem.require_paths = ["lib"]
21
28
 
22
- gem.add_runtime_dependency 'ffi', '~> 1.0'
23
- gem.add_development_dependency 'rspec', '~> 2.6'
24
- gem.add_development_dependency 'cucumber', '~> 1.2'
25
- gem.add_development_dependency 'aruba', '~> 0.4'
26
- gem.add_development_dependency 'rake', '~> 0.9'
27
- gem.add_development_dependency 'rdoc', '~> 3.1'
28
- end
29
+ relative_path = File.expand_path("../", __FILE__) + '/'
30
+ `git submodule --quiet foreach pwd`.split($\).each do |submodule_path|
31
+
32
+ if (ENV['OS'] == 'Windows_NT') && submodule_path[0] == '/'
33
+ # Detect if cygwin path is being used by git
34
+ submodule_path = submodule_path[1..-1]
35
+ submodule_path.insert(1, ':')
36
+ end
37
+
38
+ # for each submodule, change working directory to that submodule
39
+ Dir.chdir(submodule_path) do
40
+ # Make the submodule path relative
41
+ submodule_path = submodule_path.gsub(/#{relative_path}/i, '')
42
+
43
+ # issue git ls-files in submodule's directory
44
+ submodule_files = `git ls-files`.split($\)
45
+
46
+ # prepend the submodule path to create relative file paths
47
+ submodule_files_paths = submodule_files.map do |filename|
48
+ File.join(submodule_path, filename)
49
+ end
50
+
51
+ # add relative paths to gem.files
52
+ gem.files += submodule_files_paths
53
+ end
54
+ end
55
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: uvrb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
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-08-15 00:00:00.000000000 Z
12
+ date: 2013-08-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ffi
@@ -18,7 +18,7 @@ dependencies:
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: '1.0'
21
+ version: '1.9'
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
- version: '1.0'
29
+ version: '1.9'
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: rspec
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -34,7 +34,7 @@ dependencies:
34
34
  requirements:
35
35
  - - ~>
36
36
  - !ruby/object:Gem::Version
37
- version: '2.6'
37
+ version: '2.14'
38
38
  type: :development
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
@@ -42,7 +42,7 @@ dependencies:
42
42
  requirements:
43
43
  - - ~>
44
44
  - !ruby/object:Gem::Version
45
- version: '2.6'
45
+ version: '2.14'
46
46
  - !ruby/object:Gem::Dependency
47
47
  name: cucumber
48
48
  requirement: !ruby/object:Gem::Requirement
@@ -50,7 +50,7 @@ dependencies:
50
50
  requirements:
51
51
  - - ~>
52
52
  - !ruby/object:Gem::Version
53
- version: '1.2'
53
+ version: '1.3'
54
54
  type: :development
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
@@ -58,7 +58,7 @@ dependencies:
58
58
  requirements:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: '1.2'
61
+ version: '1.3'
62
62
  - !ruby/object:Gem::Dependency
63
63
  name: aruba
64
64
  requirement: !ruby/object:Gem::Requirement
@@ -66,7 +66,7 @@ dependencies:
66
66
  requirements:
67
67
  - - ~>
68
68
  - !ruby/object:Gem::Version
69
- version: '0.4'
69
+ version: '0.5'
70
70
  type: :development
71
71
  prerelease: false
72
72
  version_requirements: !ruby/object:Gem::Requirement
@@ -74,7 +74,7 @@ dependencies:
74
74
  requirements:
75
75
  - - ~>
76
76
  - !ruby/object:Gem::Version
77
- version: '0.4'
77
+ version: '0.5'
78
78
  - !ruby/object:Gem::Dependency
79
79
  name: rake
80
80
  requirement: !ruby/object:Gem::Requirement
@@ -82,7 +82,7 @@ dependencies:
82
82
  requirements:
83
83
  - - ~>
84
84
  - !ruby/object:Gem::Version
85
- version: '0.9'
85
+ version: '10.1'
86
86
  type: :development
87
87
  prerelease: false
88
88
  version_requirements: !ruby/object:Gem::Requirement
@@ -90,7 +90,7 @@ dependencies:
90
90
  requirements:
91
91
  - - ~>
92
92
  - !ruby/object:Gem::Version
93
- version: '0.9'
93
+ version: '10.1'
94
94
  - !ruby/object:Gem::Dependency
95
95
  name: rdoc
96
96
  requirement: !ruby/object:Gem::Requirement
@@ -98,7 +98,7 @@ dependencies:
98
98
  requirements:
99
99
  - - ~>
100
100
  - !ruby/object:Gem::Version
101
- version: '3.1'
101
+ version: '4.0'
102
102
  type: :development
103
103
  prerelease: false
104
104
  version_requirements: !ruby/object:Gem::Requirement
@@ -106,12 +106,13 @@ dependencies:
106
106
  requirements:
107
107
  - - ~>
108
108
  - !ruby/object:Gem::Version
109
- version: '3.1'
109
+ version: '4.0'
110
110
  description: UV is Ruby OOP bindings for libuv
111
111
  email:
112
112
  - mallluhuct@gmail.com
113
113
  executables: []
114
- extensions: []
114
+ extensions:
115
+ - ext/Rakefile
115
116
  extra_rdoc_files: []
116
117
  files:
117
118
  - .gitignore
@@ -137,6 +138,7 @@ files:
137
138
  - examples/tcp_example_plain.rb
138
139
  - examples/tty_example.rb
139
140
  - ext/README.md
141
+ - ext/Rakefile
140
142
  - features/async.feature
141
143
  - features/idle.feature
142
144
  - features/pipe.feature
@@ -175,6 +177,7 @@ files:
175
177
  - lib/uv/types/windows.rb
176
178
  - lib/uv/udp.rb
177
179
  - lib/uv/version.rb
180
+ - lib/uv/work.rb
178
181
  - lib/uvrb.rb
179
182
  - spec/shared_examples/handle.rb
180
183
  - spec/shared_examples/stream.rb
@@ -214,11 +217,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
214
217
  version: '0'
215
218
  segments:
216
219
  - 0
217
- hash: 2524694776609682679
220
+ hash: 1356397277929985480
218
221
  requirements:
219
222
  - libuv
220
223
  rubyforge_project:
221
- rubygems_version: 1.8.21
224
+ rubygems_version: 1.8.23
222
225
  signing_key:
223
226
  specification_version: 3
224
227
  summary: libuv bindings for Ruby