ffi-rzmq 1.0.1 → 1.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.
- data/.travis.yml +0 -4
- data/AUTHORS.txt +4 -0
- data/History.txt +12 -0
- data/README.rdoc +4 -2
- data/lib/ffi-rzmq/context.rb +3 -3
- data/lib/ffi-rzmq/libzmq.rb +6 -8
- data/lib/ffi-rzmq/socket.rb +6 -6
- data/lib/ffi-rzmq/version.rb +1 -1
- data/spec/context_spec.rb +1 -1
- data/spec/poll_spec.rb +4 -4
- data/spec/socket_spec.rb +13 -4
- data/spec/spec_helper.rb +4 -10
- metadata +107 -186
data/.travis.yml
CHANGED
@@ -2,18 +2,14 @@ before_install: sudo apt-get install libzmq3-dev
|
|
2
2
|
script: bundle exec rspec
|
3
3
|
language: ruby
|
4
4
|
rvm:
|
5
|
-
- 1.9.2
|
6
5
|
- 1.9.3
|
7
6
|
- 2.0.0
|
8
7
|
- ruby-head
|
9
|
-
- jruby-18mode
|
10
8
|
- jruby-19mode
|
11
9
|
- jruby-head
|
12
|
-
- rbx-18mode
|
13
10
|
- rbx-19mode
|
14
11
|
|
15
12
|
matrix:
|
16
13
|
allow_failures:
|
17
14
|
- rvm: ruby-head
|
18
15
|
- rvm: jruby-head
|
19
|
-
- rvm: 1.9.2
|
data/AUTHORS.txt
CHANGED
data/History.txt
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
== 1.0.2 / 20130929
|
2
|
+
* Fix for issue #94. Now includes local_path when searching for a libzmq
|
3
|
+
to load.
|
4
|
+
|
5
|
+
* Fix for issue #92. Context and Socket finalizers now track the process'
|
6
|
+
PID to handle a special case when forking a process. Thanks to
|
7
|
+
thinkerbot for the issue and a fix. (Spec is disabled on JRuby since
|
8
|
+
it does not support fork().)
|
9
|
+
|
10
|
+
* Fix a few RSpec deprecation warnings related to expectations on specific
|
11
|
+
Exception types.
|
12
|
+
|
1
13
|
== 1.0.1 / 20130318
|
2
14
|
* Fix for issue #77 was not included in 1.0.0 release by mistake.
|
3
15
|
|
data/README.rdoc
CHANGED
@@ -30,6 +30,9 @@ Check out the latest performance results:
|
|
30
30
|
|
31
31
|
http://www.zeromq.org/bindings:ruby-ffi
|
32
32
|
|
33
|
+
The short version is that the FFI bindings are a few microseconds slower
|
34
|
+
than using a C extension.
|
35
|
+
|
33
36
|
== FEATURES/PROBLEMS:
|
34
37
|
|
35
38
|
This gem needs more tests. This gem has been battle tested by myself
|
@@ -131,14 +134,13 @@ time of installation.
|
|
131
134
|
|
132
135
|
* ffi (>= 1.0.0)
|
133
136
|
|
134
|
-
This is a requirement for MRI
|
137
|
+
This is a requirement for MRI and Rubinius. JRuby has FFI support built
|
135
138
|
in as a standard component. Do *not* run this gem under MRI with an old 'ffi' gem.
|
136
139
|
It will crash randomly and you will be sad.
|
137
140
|
|
138
141
|
|
139
142
|
== INSTALL:
|
140
143
|
|
141
|
-
A full gem has been released to rubygems.org as of release 0.5.0.
|
142
144
|
Make sure the ZeroMQ library is already installed on your system.
|
143
145
|
|
144
146
|
% gem install ffi-rzmq # should grab the latest release
|
data/lib/ffi-rzmq/context.rb
CHANGED
@@ -149,15 +149,15 @@ module ZMQ
|
|
149
149
|
private
|
150
150
|
|
151
151
|
def define_finalizer
|
152
|
-
ObjectSpace.define_finalizer(self, self.class.close(@context))
|
152
|
+
ObjectSpace.define_finalizer(self, self.class.close(@context, Process.pid))
|
153
153
|
end
|
154
154
|
|
155
155
|
def remove_finalizer
|
156
156
|
ObjectSpace.undefine_finalizer self
|
157
157
|
end
|
158
158
|
|
159
|
-
def self.close context
|
160
|
-
Proc.new { LibZMQ.zmq_term context
|
159
|
+
def self.close context, pid
|
160
|
+
Proc.new { LibZMQ.zmq_term context if !context.null? && Process.pid == pid }
|
161
161
|
end
|
162
162
|
end
|
163
163
|
|
data/lib/ffi-rzmq/libzmq.rb
CHANGED
@@ -10,17 +10,15 @@ module ZMQ
|
|
10
10
|
# bias the library discovery to a path inside the gem first, then
|
11
11
|
# to the usual system paths
|
12
12
|
inside_gem = File.join(File.dirname(__FILE__), '..', '..', 'ext')
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
ZMQ_LIB_PATHS = [
|
19
|
-
inside_gem, '/usr/local/lib', '/opt/local/lib', '/usr/local/homebrew/lib', '/usr/lib64'
|
13
|
+
local_path = FFI::Platform::IS_WINDOWS ? ENV['PATH'].split(';') : ENV['PATH'].split(':')
|
14
|
+
|
15
|
+
# Search for libzmq in the following order...
|
16
|
+
ZMQ_LIB_PATHS = [inside_gem] + local_path + [
|
17
|
+
'/usr/local/lib', '/opt/local/lib', '/usr/local/homebrew/lib', '/usr/lib64'
|
20
18
|
].map{|path| "#{path}/libzmq.#{FFI::Platform::LIBSUFFIX}"}
|
21
19
|
ffi_lib(ZMQ_LIB_PATHS + %w{libzmq})
|
22
20
|
rescue LoadError
|
23
|
-
if ZMQ_LIB_PATHS.
|
21
|
+
if ZMQ_LIB_PATHS.any? {|path|
|
24
22
|
File.file? File.join(path, "libzmq.#{FFI::Platform::LIBSUFFIX}")}
|
25
23
|
warn "Unable to load this gem. The libzmq library exists, but cannot be loaded."
|
26
24
|
warn "If this is Windows:"
|
data/lib/ffi-rzmq/socket.rb
CHANGED
@@ -629,16 +629,16 @@ module ZMQ
|
|
629
629
|
# module; they *must* be in the class definition directly
|
630
630
|
|
631
631
|
def define_finalizer
|
632
|
-
ObjectSpace.define_finalizer(self, self.class.close(@socket))
|
632
|
+
ObjectSpace.define_finalizer(self, self.class.close(@socket, Process.pid))
|
633
633
|
end
|
634
634
|
|
635
635
|
def remove_finalizer
|
636
636
|
ObjectSpace.undefine_finalizer self
|
637
637
|
end
|
638
638
|
|
639
|
-
def self.close socket
|
639
|
+
def self.close socket, pid
|
640
640
|
Proc.new do
|
641
|
-
LibZMQ.zmq_close(socket) if socket && !socket.
|
641
|
+
LibZMQ.zmq_close(socket) if socket && !socket.nil? && Process.pid == pid
|
642
642
|
end
|
643
643
|
end
|
644
644
|
end # class Socket for version2
|
@@ -745,15 +745,15 @@ module ZMQ
|
|
745
745
|
# module; they *must* be in the class definition directly
|
746
746
|
|
747
747
|
def define_finalizer
|
748
|
-
ObjectSpace.define_finalizer(self, self.class.close(@socket))
|
748
|
+
ObjectSpace.define_finalizer(self, self.class.close(@socket, Process.pid))
|
749
749
|
end
|
750
750
|
|
751
751
|
def remove_finalizer
|
752
752
|
ObjectSpace.undefine_finalizer self
|
753
753
|
end
|
754
754
|
|
755
|
-
def self.close socket
|
756
|
-
Proc.new { LibZMQ.zmq_close socket }
|
755
|
+
def self.close socket, pid
|
756
|
+
Proc.new { LibZMQ.zmq_close socket if Process.pid == pid }
|
757
757
|
end
|
758
758
|
end # Socket for version3
|
759
759
|
end # LibZMQ.version3?
|
data/lib/ffi-rzmq/version.rb
CHANGED
data/spec/context_spec.rb
CHANGED
@@ -99,7 +99,7 @@ module ZMQ
|
|
99
99
|
context "when allocating a socket" do
|
100
100
|
it "should return nil when allocation fails" do
|
101
101
|
ctx = Context.new
|
102
|
-
LibZMQ.stub
|
102
|
+
LibZMQ.stub(:zmq_socket => nil)
|
103
103
|
ctx.socket(ZMQ::REQ).should be_nil
|
104
104
|
end
|
105
105
|
end # context socket
|
data/spec/poll_spec.rb
CHANGED
@@ -16,10 +16,10 @@ module ZMQ
|
|
16
16
|
|
17
17
|
context "#register" do
|
18
18
|
|
19
|
-
let(:pollable) {
|
19
|
+
let(:pollable) { double('pollable') }
|
20
20
|
let(:poller) { Poller.new }
|
21
21
|
let(:socket) { FFI::MemoryPointer.new(4) }
|
22
|
-
let(:io) {
|
22
|
+
let(:io) { double(:posix_fileno => fd) }
|
23
23
|
let(:fd) { 1 }
|
24
24
|
|
25
25
|
it "returns false when given a nil pollable" do
|
@@ -53,10 +53,10 @@ module ZMQ
|
|
53
53
|
|
54
54
|
context "#deregister" do
|
55
55
|
|
56
|
-
let(:pollable) {
|
56
|
+
let(:pollable) { double('pollable') }
|
57
57
|
let(:poller) { Poller.new }
|
58
58
|
let(:socket) { FFI::MemoryPointer.new(4) }
|
59
|
-
let(:io) {
|
59
|
+
let(:io) { double(:posix_fileno => fd) }
|
60
60
|
let(:fd) { 1 }
|
61
61
|
|
62
62
|
it "returns true when deregistered pollable from event" do
|
data/spec/socket_spec.rb
CHANGED
@@ -26,14 +26,14 @@ module ZMQ
|
|
26
26
|
lambda do
|
27
27
|
s = Socket.new(@ctx.pointer, ZMQ::REQ)
|
28
28
|
s.close
|
29
|
-
end.should_not raise_exception
|
29
|
+
end.should_not raise_exception
|
30
30
|
end
|
31
31
|
|
32
32
|
it "works with a Context instance as the context_ptr" do
|
33
33
|
lambda do
|
34
34
|
s = Socket.new(@ctx, ZMQ::SUB)
|
35
35
|
s.close
|
36
|
-
end.should_not raise_exception
|
36
|
+
end.should_not raise_exception
|
37
37
|
end
|
38
38
|
|
39
39
|
|
@@ -47,8 +47,8 @@ module ZMQ
|
|
47
47
|
end # each socket_type
|
48
48
|
|
49
49
|
it "should set the :socket accessor to the raw socket allocated by libzmq" do
|
50
|
-
socket =
|
51
|
-
socket.stub
|
50
|
+
socket = double('socket')
|
51
|
+
socket.stub(:null? => false)
|
52
52
|
LibZMQ.should_receive(:zmq_socket).and_return(socket)
|
53
53
|
|
54
54
|
sock = Socket.new(@ctx.pointer, ZMQ::REQ)
|
@@ -60,6 +60,15 @@ module ZMQ
|
|
60
60
|
sock = Socket.new(@ctx.pointer, ZMQ::REQ)
|
61
61
|
sock.close
|
62
62
|
end
|
63
|
+
|
64
|
+
unless jruby?
|
65
|
+
it "should track pid in finalizer so subsequent fork will not segfault" do
|
66
|
+
sock = Socket.new(@ctx.pointer, ZMQ::REQ)
|
67
|
+
pid = fork { }
|
68
|
+
Process.wait(pid)
|
69
|
+
sock.close
|
70
|
+
end
|
71
|
+
end
|
63
72
|
end # context initializing
|
64
73
|
|
65
74
|
|
data/spec/spec_helper.rb
CHANGED
@@ -22,6 +22,10 @@ def version3?
|
|
22
22
|
ZMQ::LibZMQ.version3?
|
23
23
|
end
|
24
24
|
|
25
|
+
def jruby?
|
26
|
+
RUBY_PLATFORM =~ /java/
|
27
|
+
end
|
28
|
+
|
25
29
|
|
26
30
|
def connect_to_inproc(socket, endpoint)
|
27
31
|
begin
|
@@ -30,16 +34,6 @@ def connect_to_inproc(socket, endpoint)
|
|
30
34
|
end
|
31
35
|
|
32
36
|
module APIHelper
|
33
|
-
def stub_libzmq
|
34
|
-
@err_str_mock = mock("error string")
|
35
|
-
|
36
|
-
LibZMQ.stub!(
|
37
|
-
:zmq_init => 0,
|
38
|
-
:zmq_errno => 0,
|
39
|
-
:zmq_sterror => @err_str_mock
|
40
|
-
)
|
41
|
-
end
|
42
|
-
|
43
37
|
def poller_setup
|
44
38
|
@helper_poller ||= ZMQ::Poller.new
|
45
39
|
end
|
metadata
CHANGED
@@ -1,252 +1,173 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ffi-rzmq
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
5
|
-
prerelease:
|
4
|
+
version: 1.0.2
|
5
|
+
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Chuck Remes
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-09-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
|
16
|
-
version_requirements: !ruby/object:Gem::Requirement
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
17
16
|
none: false
|
18
17
|
requirements:
|
19
|
-
- -
|
18
|
+
- - '>='
|
20
19
|
- !ruby/object:Gem::Version
|
21
20
|
version: '0'
|
22
21
|
name: ffi
|
23
|
-
|
24
|
-
|
22
|
+
type: :runtime
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
24
|
none: false
|
26
25
|
requirements:
|
27
|
-
- -
|
26
|
+
- - '>='
|
28
27
|
- !ruby/object:Gem::Version
|
29
28
|
version: '0'
|
29
|
+
prerelease: false
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
|
-
|
32
|
-
version_requirements: !ruby/object:Gem::Requirement
|
31
|
+
requirement: !ruby/object:Gem::Requirement
|
33
32
|
none: false
|
34
33
|
requirements:
|
35
34
|
- - ~>
|
36
35
|
- !ruby/object:Gem::Version
|
37
36
|
version: '2.6'
|
38
37
|
name: rspec
|
39
|
-
|
40
|
-
|
38
|
+
type: :development
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
40
|
none: false
|
42
41
|
requirements:
|
43
42
|
- - ~>
|
44
43
|
- !ruby/object:Gem::Version
|
45
44
|
version: '2.6'
|
45
|
+
prerelease: false
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
|
-
|
48
|
-
version_requirements: !ruby/object:Gem::Requirement
|
47
|
+
requirement: !ruby/object:Gem::Requirement
|
49
48
|
none: false
|
50
49
|
requirements:
|
51
|
-
- -
|
50
|
+
- - '>='
|
52
51
|
- !ruby/object:Gem::Version
|
53
52
|
version: '0'
|
54
53
|
name: rake
|
55
|
-
|
56
|
-
|
54
|
+
type: :development
|
55
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
56
|
none: false
|
58
57
|
requirements:
|
59
|
-
- -
|
58
|
+
- - '>='
|
60
59
|
- !ruby/object:Gem::Version
|
61
60
|
version: '0'
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
and run by any ruby runtime that supports FFI. That'
|
67
|
-
|
68
|
-
MRI, Rubinius and JRuby.'
|
61
|
+
prerelease: false
|
62
|
+
description: |-
|
63
|
+
This gem wraps the ZeroMQ networking library using the ruby FFI (foreign
|
64
|
+
function interface). It's a pure ruby wrapper so this gem can be loaded
|
65
|
+
and run by any ruby runtime that supports FFI. That's all of the major ones -
|
66
|
+
MRI, Rubinius and JRuby.
|
69
67
|
email:
|
70
68
|
- git@chuckremes.com
|
71
69
|
executables: []
|
72
70
|
extensions: []
|
73
71
|
extra_rdoc_files: []
|
74
72
|
files:
|
75
|
-
-
|
76
|
-
|
77
|
-
-
|
78
|
-
|
79
|
-
-
|
80
|
-
|
81
|
-
-
|
82
|
-
|
83
|
-
-
|
84
|
-
|
85
|
-
-
|
86
|
-
|
87
|
-
-
|
88
|
-
|
89
|
-
-
|
90
|
-
|
91
|
-
-
|
92
|
-
|
93
|
-
-
|
94
|
-
|
95
|
-
-
|
96
|
-
|
97
|
-
-
|
98
|
-
|
99
|
-
-
|
100
|
-
|
101
|
-
-
|
102
|
-
|
103
|
-
-
|
104
|
-
|
105
|
-
-
|
106
|
-
|
107
|
-
-
|
108
|
-
|
109
|
-
-
|
110
|
-
|
111
|
-
-
|
112
|
-
|
113
|
-
-
|
114
|
-
|
115
|
-
-
|
116
|
-
|
117
|
-
-
|
118
|
-
|
119
|
-
-
|
120
|
-
|
121
|
-
-
|
122
|
-
|
123
|
-
-
|
124
|
-
|
125
|
-
-
|
126
|
-
|
127
|
-
-
|
128
|
-
|
129
|
-
-
|
130
|
-
|
131
|
-
-
|
132
|
-
|
133
|
-
-
|
134
|
-
|
135
|
-
-
|
136
|
-
|
137
|
-
-
|
138
|
-
|
139
|
-
- !binary |-
|
140
|
-
ZXhhbXBsZXMvdjNhcGkvc3ViLnJi
|
141
|
-
- !binary |-
|
142
|
-
ZXhhbXBsZXMvdjNhcGkvdGhyb3VnaHB1dF9tZWFzdXJlbWVudC5yYg==
|
143
|
-
- !binary |-
|
144
|
-
ZXhhbXBsZXMvdjNhcGkveHJlcXhyZXBfcG9sbC5yYg==
|
145
|
-
- !binary |-
|
146
|
-
ZXh0L1JFQURNRQ==
|
147
|
-
- !binary |-
|
148
|
-
ZmZpLXJ6bXEuZ2Vtc3BlYw==
|
149
|
-
- !binary |-
|
150
|
-
bGliL2ZmaS1yem1xLnJi
|
151
|
-
- !binary |-
|
152
|
-
bGliL2ZmaS1yem1xL2NvbnN0YW50cy5yYg==
|
153
|
-
- !binary |-
|
154
|
-
bGliL2ZmaS1yem1xL2NvbnRleHQucmI=
|
155
|
-
- !binary |-
|
156
|
-
bGliL2ZmaS1yem1xL2RldmljZS5yYg==
|
157
|
-
- !binary |-
|
158
|
-
bGliL2ZmaS1yem1xL2V4Y2VwdGlvbnMucmI=
|
159
|
-
- !binary |-
|
160
|
-
bGliL2ZmaS1yem1xL2xpYmMucmI=
|
161
|
-
- !binary |-
|
162
|
-
bGliL2ZmaS1yem1xL2xpYnptcS5yYg==
|
163
|
-
- !binary |-
|
164
|
-
bGliL2ZmaS1yem1xL21lc3NhZ2UucmI=
|
165
|
-
- !binary |-
|
166
|
-
bGliL2ZmaS1yem1xL3BvbGwucmI=
|
167
|
-
- !binary |-
|
168
|
-
bGliL2ZmaS1yem1xL3BvbGxfaXRlbS5yYg==
|
169
|
-
- !binary |-
|
170
|
-
bGliL2ZmaS1yem1xL3BvbGxfaXRlbXMucmI=
|
171
|
-
- !binary |-
|
172
|
-
bGliL2ZmaS1yem1xL3NvY2tldC5yYg==
|
173
|
-
- !binary |-
|
174
|
-
bGliL2ZmaS1yem1xL3V0aWwucmI=
|
175
|
-
- !binary |-
|
176
|
-
bGliL2ZmaS1yem1xL3ZlcnNpb24ucmI=
|
177
|
-
- !binary |-
|
178
|
-
bGliL2lvX2V4dGVuc2lvbnMucmI=
|
179
|
-
- !binary |-
|
180
|
-
c3BlYy9jb250ZXh0X3NwZWMucmI=
|
181
|
-
- !binary |-
|
182
|
-
c3BlYy9kZXZpY2Vfc3BlYy5yYg==
|
183
|
-
- !binary |-
|
184
|
-
c3BlYy9tZXNzYWdlX3NwZWMucmI=
|
185
|
-
- !binary |-
|
186
|
-
c3BlYy9tdWx0aXBhcnRfc3BlYy5yYg==
|
187
|
-
- !binary |-
|
188
|
-
c3BlYy9ub25ibG9ja2luZ19yZWN2X3NwZWMucmI=
|
189
|
-
- !binary |-
|
190
|
-
c3BlYy9wb2xsX3NwZWMucmI=
|
191
|
-
- !binary |-
|
192
|
-
c3BlYy9wdXNocHVsbF9zcGVjLnJi
|
193
|
-
- !binary |-
|
194
|
-
c3BlYy9yZXFyZXBfc3BlYy5yYg==
|
195
|
-
- !binary |-
|
196
|
-
c3BlYy9zb2NrZXRfc3BlYy5yYg==
|
197
|
-
- !binary |-
|
198
|
-
c3BlYy9zcGVjX2hlbHBlci5yYg==
|
199
|
-
- !binary |-
|
200
|
-
c3BlYy9zdXBwb3J0L3Rlc3QuY3J0
|
201
|
-
- !binary |-
|
202
|
-
c3BlYy9zdXBwb3J0L3Rlc3Qua2V5
|
73
|
+
- .bnsignore
|
74
|
+
- .gitignore
|
75
|
+
- .travis.yml
|
76
|
+
- AUTHORS.txt
|
77
|
+
- Gemfile
|
78
|
+
- History.txt
|
79
|
+
- README.rdoc
|
80
|
+
- Rakefile
|
81
|
+
- examples/README.rdoc
|
82
|
+
- examples/v2api/latency_measurement.rb
|
83
|
+
- examples/v2api/local_lat.rb
|
84
|
+
- examples/v2api/local_lat_poll.rb
|
85
|
+
- examples/v2api/local_throughput.rb
|
86
|
+
- examples/v2api/pub.rb
|
87
|
+
- examples/v2api/publish_subscribe.rb
|
88
|
+
- examples/v2api/remote_lat.rb
|
89
|
+
- examples/v2api/remote_throughput.rb
|
90
|
+
- examples/v2api/reqrep_poll.rb
|
91
|
+
- examples/v2api/request_response.rb
|
92
|
+
- examples/v2api/sub.rb
|
93
|
+
- examples/v2api/throughput_measurement.rb
|
94
|
+
- examples/v2api/xreqxrep_poll.rb
|
95
|
+
- examples/v3api/latency_measurement.rb
|
96
|
+
- examples/v3api/local_lat.rb
|
97
|
+
- examples/v3api/local_lat_poll.rb
|
98
|
+
- examples/v3api/local_throughput.rb
|
99
|
+
- examples/v3api/pub.rb
|
100
|
+
- examples/v3api/publish_subscribe.rb
|
101
|
+
- examples/v3api/remote_lat.rb
|
102
|
+
- examples/v3api/remote_throughput.rb
|
103
|
+
- examples/v3api/reqrep_poll.rb
|
104
|
+
- examples/v3api/request_response.rb
|
105
|
+
- examples/v3api/sub.rb
|
106
|
+
- examples/v3api/throughput_measurement.rb
|
107
|
+
- examples/v3api/xreqxrep_poll.rb
|
108
|
+
- ext/README
|
109
|
+
- ffi-rzmq.gemspec
|
110
|
+
- lib/ffi-rzmq.rb
|
111
|
+
- lib/ffi-rzmq/constants.rb
|
112
|
+
- lib/ffi-rzmq/context.rb
|
113
|
+
- lib/ffi-rzmq/device.rb
|
114
|
+
- lib/ffi-rzmq/exceptions.rb
|
115
|
+
- lib/ffi-rzmq/libc.rb
|
116
|
+
- lib/ffi-rzmq/libzmq.rb
|
117
|
+
- lib/ffi-rzmq/message.rb
|
118
|
+
- lib/ffi-rzmq/poll.rb
|
119
|
+
- lib/ffi-rzmq/poll_item.rb
|
120
|
+
- lib/ffi-rzmq/poll_items.rb
|
121
|
+
- lib/ffi-rzmq/socket.rb
|
122
|
+
- lib/ffi-rzmq/util.rb
|
123
|
+
- lib/ffi-rzmq/version.rb
|
124
|
+
- lib/io_extensions.rb
|
125
|
+
- spec/context_spec.rb
|
126
|
+
- spec/device_spec.rb
|
127
|
+
- spec/message_spec.rb
|
128
|
+
- spec/multipart_spec.rb
|
129
|
+
- spec/nonblocking_recv_spec.rb
|
130
|
+
- spec/poll_spec.rb
|
131
|
+
- spec/pushpull_spec.rb
|
132
|
+
- spec/reqrep_spec.rb
|
133
|
+
- spec/socket_spec.rb
|
134
|
+
- spec/spec_helper.rb
|
135
|
+
- spec/support/test.crt
|
136
|
+
- spec/support/test.key
|
203
137
|
homepage: http://github.com/chuckremes/ffi-rzmq
|
204
138
|
licenses: []
|
205
|
-
post_install_message:
|
139
|
+
post_install_message:
|
206
140
|
rdoc_options: []
|
207
141
|
require_paths:
|
208
142
|
- lib
|
209
143
|
required_ruby_version: !ruby/object:Gem::Requirement
|
210
144
|
none: false
|
211
145
|
requirements:
|
212
|
-
- -
|
146
|
+
- - '>='
|
213
147
|
- !ruby/object:Gem::Version
|
214
148
|
version: '0'
|
215
149
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
216
150
|
none: false
|
217
151
|
requirements:
|
218
|
-
- -
|
152
|
+
- - '>='
|
219
153
|
- !ruby/object:Gem::Version
|
220
154
|
version: '0'
|
221
155
|
requirements: []
|
222
156
|
rubyforge_project: ffi-rzmq
|
223
|
-
rubygems_version: 1.8.
|
224
|
-
signing_key:
|
157
|
+
rubygems_version: 1.8.24
|
158
|
+
signing_key:
|
225
159
|
specification_version: 3
|
226
|
-
summary: This gem wraps the ZeroMQ (0mq) networking library using Ruby FFI (foreign
|
227
|
-
function interface).
|
160
|
+
summary: This gem wraps the ZeroMQ (0mq) networking library using Ruby FFI (foreign function interface).
|
228
161
|
test_files:
|
229
|
-
-
|
230
|
-
|
231
|
-
-
|
232
|
-
|
233
|
-
-
|
234
|
-
|
235
|
-
-
|
236
|
-
|
237
|
-
-
|
238
|
-
|
239
|
-
-
|
240
|
-
|
241
|
-
- !binary |-
|
242
|
-
c3BlYy9wdXNocHVsbF9zcGVjLnJi
|
243
|
-
- !binary |-
|
244
|
-
c3BlYy9yZXFyZXBfc3BlYy5yYg==
|
245
|
-
- !binary |-
|
246
|
-
c3BlYy9zb2NrZXRfc3BlYy5yYg==
|
247
|
-
- !binary |-
|
248
|
-
c3BlYy9zcGVjX2hlbHBlci5yYg==
|
249
|
-
- !binary |-
|
250
|
-
c3BlYy9zdXBwb3J0L3Rlc3QuY3J0
|
251
|
-
- !binary |-
|
252
|
-
c3BlYy9zdXBwb3J0L3Rlc3Qua2V5
|
162
|
+
- spec/context_spec.rb
|
163
|
+
- spec/device_spec.rb
|
164
|
+
- spec/message_spec.rb
|
165
|
+
- spec/multipart_spec.rb
|
166
|
+
- spec/nonblocking_recv_spec.rb
|
167
|
+
- spec/poll_spec.rb
|
168
|
+
- spec/pushpull_spec.rb
|
169
|
+
- spec/reqrep_spec.rb
|
170
|
+
- spec/socket_spec.rb
|
171
|
+
- spec/spec_helper.rb
|
172
|
+
- spec/support/test.crt
|
173
|
+
- spec/support/test.key
|