ffi-rzmq 0.9.3 → 0.9.6
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/History.txt +51 -0
- data/README.rdoc +17 -7
- data/examples/v2api/local_lat_poll.rb +3 -3
- data/examples/v2api/local_throughput.rb +2 -2
- data/examples/v2api/pub.rb +46 -0
- data/examples/v2api/publish_subscribe.rb +1 -1
- data/examples/v2api/remote_throughput.rb +1 -1
- data/examples/v2api/reqrep_poll.rb +2 -2
- data/examples/v2api/request_response.rb +2 -2
- data/examples/v2api/sub.rb +74 -0
- data/examples/v2api/throughput_measurement.rb +3 -3
- data/examples/v2api/xreqxrep_poll.rb +5 -5
- data/examples/v3api/local_lat_poll.rb +3 -3
- data/examples/v3api/pub.rb +46 -0
- data/examples/v3api/publish_subscribe.rb +1 -1
- data/examples/v3api/reqrep_poll.rb +2 -2
- data/examples/v3api/sub.rb +69 -0
- data/examples/v3api/xreqxrep_poll.rb +5 -5
- data/ffi-rzmq.gemspec +2 -2
- data/lib/ffi-rzmq/constants.rb +56 -18
- data/lib/ffi-rzmq/context.rb +63 -24
- data/lib/ffi-rzmq/device.rb +19 -19
- data/lib/ffi-rzmq/libzmq.rb +109 -34
- data/lib/ffi-rzmq/message.rb +23 -2
- data/lib/ffi-rzmq/poll.rb +7 -9
- data/lib/ffi-rzmq/socket.rb +284 -518
- data/lib/ffi-rzmq/util.rb +42 -36
- data/lib/ffi-rzmq/version.rb +1 -1
- data/spec/context_spec.rb +20 -16
- data/spec/device_spec.rb +64 -76
- data/spec/multipart_spec.rb +0 -54
- data/spec/nonblocking_recv_spec.rb +119 -80
- data/spec/poll_spec.rb +93 -12
- data/spec/pushpull_spec.rb +65 -111
- data/spec/reqrep_spec.rb +45 -56
- data/spec/socket_spec.rb +104 -71
- data/spec/spec_helper.rb +52 -4
- metadata +155 -135
data/spec/socket_spec.rb
CHANGED
@@ -5,6 +5,7 @@ module ZMQ
|
|
5
5
|
|
6
6
|
|
7
7
|
describe Socket do
|
8
|
+
include APIHelper
|
8
9
|
|
9
10
|
socket_types = if LibZMQ.version2?
|
10
11
|
[ZMQ::REQ, ZMQ::REP, ZMQ::DEALER, ZMQ::ROUTER, ZMQ::PUB, ZMQ::SUB, ZMQ::PUSH, ZMQ::PULL, ZMQ::PAIR]
|
@@ -78,54 +79,52 @@ module ZMQ
|
|
78
79
|
end # context calling close
|
79
80
|
|
80
81
|
|
81
|
-
if version2? || version3?
|
82
82
|
|
83
|
-
|
84
|
-
|
85
|
-
|
83
|
+
context "identity=" do
|
84
|
+
before(:all) { @ctx = Context.new }
|
85
|
+
after(:all) { @ctx.terminate }
|
86
86
|
|
87
|
-
|
88
|
-
|
87
|
+
it "fails to set identity for identities in excess of 255 bytes" do
|
88
|
+
sock = Socket.new @ctx.pointer, ZMQ::REQ
|
89
89
|
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
90
|
+
sock.identity = ('a' * 256)
|
91
|
+
sock.identity.should == ''
|
92
|
+
sock.close
|
93
|
+
end
|
94
94
|
|
95
|
-
|
96
|
-
|
95
|
+
it "fails to set identity for identities of length 0" do
|
96
|
+
sock = Socket.new @ctx.pointer, ZMQ::REQ
|
97
97
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
98
|
+
sock.identity = ''
|
99
|
+
sock.identity.should == ''
|
100
|
+
sock.close
|
101
|
+
end
|
102
102
|
|
103
|
-
|
104
|
-
|
103
|
+
it "sets the identity for identities of 1 byte" do
|
104
|
+
sock = Socket.new @ctx.pointer, ZMQ::REQ
|
105
105
|
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
106
|
+
sock.identity = 'a'
|
107
|
+
sock.identity.should == 'a'
|
108
|
+
sock.close
|
109
|
+
end
|
110
110
|
|
111
|
-
|
112
|
-
|
111
|
+
it "set the identity identities of 255 bytes" do
|
112
|
+
sock = Socket.new @ctx.pointer, ZMQ::REQ
|
113
113
|
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
114
|
+
sock.identity = ('a' * 255)
|
115
|
+
sock.identity.should == ('a' * 255)
|
116
|
+
sock.close
|
117
|
+
end
|
118
118
|
|
119
|
-
|
120
|
-
|
119
|
+
it "should convert numeric identities to strings" do
|
120
|
+
sock = Socket.new @ctx.pointer, ZMQ::REQ
|
121
121
|
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
122
|
+
sock.identity = 7
|
123
|
+
sock.identity.should == '7'
|
124
|
+
sock.close
|
125
|
+
end
|
126
|
+
end # context identity=
|
127
127
|
|
128
|
-
end # version2? || version3?
|
129
128
|
|
130
129
|
|
131
130
|
socket_types.each do |socket_type|
|
@@ -143,31 +142,27 @@ module ZMQ
|
|
143
142
|
end
|
144
143
|
|
145
144
|
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
identity = 'a' * length
|
153
|
-
socket.setsockopt ZMQ::IDENTITY, identity
|
154
|
-
|
155
|
-
array = []
|
156
|
-
rc = socket.getsockopt(ZMQ::IDENTITY, array)
|
157
|
-
rc.should == 0
|
158
|
-
array[0].should == identity
|
159
|
-
end
|
160
|
-
end
|
145
|
+
context "using option ZMQ::IDENTITY" do
|
146
|
+
it "should set the identity given any string under 255 characters" do
|
147
|
+
length = 4
|
148
|
+
(1..255).each do |length|
|
149
|
+
identity = 'a' * length
|
150
|
+
socket.setsockopt ZMQ::IDENTITY, identity
|
161
151
|
|
162
|
-
it "returns -1 given a string 256 characters or longer" do
|
163
|
-
identity = 'a' * 256
|
164
152
|
array = []
|
165
|
-
rc = socket.
|
166
|
-
rc.should ==
|
153
|
+
rc = socket.getsockopt(ZMQ::IDENTITY, array)
|
154
|
+
rc.should == 0
|
155
|
+
array[0].should == identity
|
167
156
|
end
|
168
|
-
end
|
157
|
+
end
|
169
158
|
|
170
|
-
|
159
|
+
it "returns -1 given a string 256 characters or longer" do
|
160
|
+
identity = 'a' * 256
|
161
|
+
array = []
|
162
|
+
rc = socket.setsockopt(ZMQ::IDENTITY, identity)
|
163
|
+
rc.should == -1
|
164
|
+
end
|
165
|
+
end # context using option ZMQ::IDENTITY
|
171
166
|
|
172
167
|
|
173
168
|
if version2?
|
@@ -240,7 +235,41 @@ module ZMQ
|
|
240
235
|
end
|
241
236
|
end # context using option ZMQ::RECOVERY_IVL_MSEC
|
242
237
|
|
243
|
-
|
238
|
+
else # version3 or higher
|
239
|
+
|
240
|
+
context "using option ZMQ::IPV4ONLY" do
|
241
|
+
it "should enable use of IPV6 sockets when set to 0" do
|
242
|
+
value = 0
|
243
|
+
socket.setsockopt ZMQ::IPV4ONLY, value
|
244
|
+
array = []
|
245
|
+
rc = socket.getsockopt(ZMQ::IPV4ONLY, array)
|
246
|
+
rc.should == 0
|
247
|
+
array[0].should == value
|
248
|
+
end
|
249
|
+
|
250
|
+
it "should default to a value of 1" do
|
251
|
+
value = 1
|
252
|
+
array = []
|
253
|
+
rc = socket.getsockopt(ZMQ::IPV4ONLY, array)
|
254
|
+
rc.should == 0
|
255
|
+
array[0].should == value
|
256
|
+
end
|
257
|
+
|
258
|
+
it "returns -1 given a negative value" do
|
259
|
+
value = -1
|
260
|
+
rc = socket.setsockopt ZMQ::IPV4ONLY, value
|
261
|
+
rc.should == -1
|
262
|
+
end
|
263
|
+
|
264
|
+
it "returns -1 given a value > 1" do
|
265
|
+
value = 2
|
266
|
+
rc = socket.setsockopt ZMQ::IPV4ONLY, value
|
267
|
+
rc.should == -1
|
268
|
+
end
|
269
|
+
end # context using option ZMQ::IPV4ONLY
|
270
|
+
|
271
|
+
|
272
|
+
end # version2? if/else block
|
244
273
|
|
245
274
|
|
246
275
|
context "using option ZMQ::SUBSCRIBE" do
|
@@ -366,7 +395,7 @@ module ZMQ
|
|
366
395
|
array[0].should == value
|
367
396
|
end
|
368
397
|
|
369
|
-
if ZMQ::SUB == socket_type || ZMQ::XSUB == socket_type
|
398
|
+
if (ZMQ::SUB == socket_type) && version3? || (defined?(ZMQ::XSUB) && ZMQ::XSUB == socket_type)
|
370
399
|
it "should default to a value of 0" do
|
371
400
|
value = 0
|
372
401
|
array = []
|
@@ -424,6 +453,7 @@ module ZMQ
|
|
424
453
|
array[0].should == value
|
425
454
|
end
|
426
455
|
end # context using option ZMQ::BACKLOG
|
456
|
+
|
427
457
|
end # context #setsockopt
|
428
458
|
|
429
459
|
|
@@ -512,7 +542,7 @@ module ZMQ
|
|
512
542
|
|
513
543
|
describe "Mapping socket EVENTS to POLLIN and POLLOUT" do
|
514
544
|
include APIHelper
|
515
|
-
|
545
|
+
|
516
546
|
shared_examples_for "pubsub sockets where" do
|
517
547
|
it "SUB socket that received a message always has POLLIN set" do
|
518
548
|
events = []
|
@@ -547,37 +577,40 @@ module ZMQ
|
|
547
577
|
|
548
578
|
before(:each) do
|
549
579
|
@ctx = Context.new
|
580
|
+
poller_setup
|
550
581
|
|
582
|
+
endpoint = "inproc://socket_test"
|
551
583
|
@sub = @ctx.socket ZMQ::SUB
|
552
584
|
rc = @sub.setsockopt ZMQ::SUBSCRIBE, ''
|
585
|
+
rc.should == 0
|
553
586
|
|
554
587
|
@pub = @ctx.socket ZMQ::PUB
|
555
|
-
|
556
|
-
|
557
|
-
sleep 0.5
|
588
|
+
@sub.bind(endpoint)
|
589
|
+
connect_to_inproc(@pub, endpoint)
|
558
590
|
|
559
|
-
|
560
|
-
sleep 0.2
|
591
|
+
@pub.send_string('test')
|
561
592
|
end
|
562
593
|
|
563
|
-
it_behaves_like "pubsub sockets where"
|
594
|
+
#it_behaves_like "pubsub sockets where" # see Jira LIBZMQ-270
|
564
595
|
end # context SUB binds PUB connects
|
565
596
|
|
566
597
|
context "when SUB connects and PUB binds" do
|
567
598
|
|
568
599
|
before(:each) do
|
569
600
|
@ctx = Context.new
|
601
|
+
poller_setup
|
570
602
|
|
603
|
+
endpoint = "inproc://socket_test"
|
571
604
|
@sub = @ctx.socket ZMQ::SUB
|
572
605
|
rc = @sub.setsockopt ZMQ::SUBSCRIBE, ''
|
573
606
|
|
574
607
|
@pub = @ctx.socket ZMQ::PUB
|
575
|
-
|
576
|
-
|
577
|
-
sleep 0.5
|
608
|
+
@pub.bind(endpoint)
|
609
|
+
connect_to_inproc(@sub, endpoint)
|
578
610
|
|
579
|
-
|
580
|
-
|
611
|
+
poll_it_for_read(@sub) do
|
612
|
+
rc = @pub.send_string('test')
|
613
|
+
end
|
581
614
|
end
|
582
615
|
|
583
616
|
it_behaves_like "pubsub sockets where"
|
data/spec/spec_helper.rb
CHANGED
@@ -5,6 +5,7 @@
|
|
5
5
|
require File.expand_path(
|
6
6
|
File.join(File.dirname(__FILE__), %w[.. lib ffi-rzmq]))
|
7
7
|
|
8
|
+
require 'thread' # necessary when testing in MRI 1.8 mode
|
8
9
|
Thread.abort_on_exception = true
|
9
10
|
|
10
11
|
# define some version guards so we can turn on/off specs based upon
|
@@ -18,8 +19,19 @@ def version3?
|
|
18
19
|
end
|
19
20
|
|
20
21
|
|
21
|
-
|
22
|
+
SLEEP_SHORT = 0.1
|
23
|
+
SLEEP_LONG = 0.3
|
22
24
|
|
25
|
+
def delivery_sleep() sleep(SLEEP_SHORT); end
|
26
|
+
def connect_sleep() sleep(SLEEP_SHORT); end
|
27
|
+
def bind_sleep() sleep(SLEEP_LONG); end
|
28
|
+
def thread_startup_sleep() sleep(1.0); end
|
29
|
+
|
30
|
+
def connect_to_inproc(socket, endpoint)
|
31
|
+
begin
|
32
|
+
rc = socket.connect(endpoint)
|
33
|
+
end until ZMQ::Util.resultcode_ok?(rc)
|
34
|
+
end
|
23
35
|
|
24
36
|
module APIHelper
|
25
37
|
def stub_libzmq
|
@@ -31,20 +43,48 @@ module APIHelper
|
|
31
43
|
:zmq_sterror => @err_str_mock
|
32
44
|
)
|
33
45
|
end
|
46
|
+
|
47
|
+
def poller_setup
|
48
|
+
@helper_poller ||= ZMQ::Poller.new
|
49
|
+
end
|
50
|
+
|
51
|
+
def poller_register_socket(socket)
|
52
|
+
@helper_poller.register(socket, ZMQ::POLLIN)
|
53
|
+
end
|
54
|
+
|
55
|
+
def poller_deregister_socket(socket)
|
56
|
+
@helper_poller.deregister(socket, ZMQ::POLLIN)
|
57
|
+
end
|
58
|
+
|
59
|
+
def poll_delivery
|
60
|
+
# timeout after 1 second
|
61
|
+
@helper_poller.poll(1000)
|
62
|
+
end
|
63
|
+
|
64
|
+
def poll_it_for_read(socket, &blk)
|
65
|
+
poller_register_socket(socket)
|
66
|
+
blk.call
|
67
|
+
poll_delivery
|
68
|
+
poller_deregister_socket(socket)
|
69
|
+
end
|
34
70
|
|
35
71
|
# generate a random port between 10_000 and 65534
|
36
72
|
def random_port
|
37
73
|
rand(55534) + 10_000
|
38
74
|
end
|
39
75
|
|
40
|
-
def bind_to_random_tcp_port
|
76
|
+
def bind_to_random_tcp_port(socket, max_tries = 500)
|
41
77
|
tries = 0
|
42
78
|
rc = -1
|
43
79
|
|
44
80
|
while !ZMQ::Util.resultcode_ok?(rc) && tries < max_tries
|
45
81
|
tries += 1
|
46
82
|
random = random_port
|
47
|
-
rc = socket.bind
|
83
|
+
rc = socket.bind(local_transport_string(random))
|
84
|
+
end
|
85
|
+
|
86
|
+
unless ZMQ::Util.resultcode_ok?(rc)
|
87
|
+
raise "Could not bind to random port successfully; retries all failed!"
|
48
88
|
end
|
49
89
|
|
50
90
|
random
|
@@ -57,12 +97,20 @@ module APIHelper
|
|
57
97
|
while !ZMQ::Util.resultcode_ok?(rc) && tries < max_tries
|
58
98
|
tries += 1
|
59
99
|
random = random_port
|
60
|
-
rc = socket.connect
|
100
|
+
rc = socket.connect(local_transport_string(random))
|
101
|
+
end
|
102
|
+
|
103
|
+
unless ZMQ::Util.resultcode_ok?(rc)
|
104
|
+
raise "Could not connect to random port successfully; retries all failed!"
|
61
105
|
end
|
62
106
|
|
63
107
|
random
|
64
108
|
end
|
65
109
|
|
110
|
+
def local_transport_string(port)
|
111
|
+
"tcp://127.0.0.1:#{port}"
|
112
|
+
end
|
113
|
+
|
66
114
|
def assert_ok(rc)
|
67
115
|
raise "Failed with rc [#{rc}] and errno [#{ZMQ::Util.errno}], msg [#{ZMQ::Util.error_string}]! #{caller(0)}" unless rc >= 0
|
68
116
|
end
|
metadata
CHANGED
@@ -1,154 +1,174 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: ffi-rzmq
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
version: 0.9.
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease:
|
5
|
+
version: 0.9.6
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
8
|
-
|
9
|
-
autorequire:
|
7
|
+
authors:
|
8
|
+
- Chuck Remes
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
+
date: 2012-08-08 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: ffi
|
16
|
+
version_requirements: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - ! '>='
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: !binary |-
|
21
|
+
MA==
|
22
|
+
none: false
|
23
|
+
requirement: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ! '>='
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: !binary |-
|
28
|
+
MA==
|
29
|
+
none: false
|
30
|
+
prerelease: false
|
31
|
+
type: :runtime
|
32
|
+
- !ruby/object:Gem::Dependency
|
33
|
+
name: rspec
|
34
|
+
version_requirements: !ruby/object:Gem::Requirement
|
35
|
+
requirements:
|
36
|
+
- - ~>
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: '2.6'
|
39
|
+
none: false
|
40
|
+
requirement: !ruby/object:Gem::Requirement
|
41
|
+
requirements:
|
42
|
+
- - ~>
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: '2.6'
|
45
|
+
none: false
|
46
|
+
prerelease: false
|
47
|
+
type: :development
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: rake
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: !binary |-
|
55
|
+
MA==
|
56
|
+
none: false
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: !binary |-
|
62
|
+
MA==
|
63
|
+
none: false
|
64
|
+
prerelease: false
|
65
|
+
type: :development
|
66
|
+
description: This gem wraps the ZeroMQ networking library using the ruby FFI (foreign
|
12
67
|
|
13
|
-
date: 2011-12-20 00:00:00 Z
|
14
|
-
dependencies:
|
15
|
-
- !ruby/object:Gem::Dependency
|
16
|
-
name: ffi
|
17
|
-
prerelease: false
|
18
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
19
|
-
none: false
|
20
|
-
requirements:
|
21
|
-
- - ">="
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: "0"
|
24
|
-
type: :runtime
|
25
|
-
version_requirements: *id001
|
26
|
-
- !ruby/object:Gem::Dependency
|
27
|
-
name: rspec
|
28
|
-
prerelease: false
|
29
|
-
requirement: &id002 !ruby/object:Gem::Requirement
|
30
|
-
none: false
|
31
|
-
requirements:
|
32
|
-
- - ~>
|
33
|
-
- !ruby/object:Gem::Version
|
34
|
-
version: "2.6"
|
35
|
-
type: :development
|
36
|
-
version_requirements: *id002
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
name: rake
|
39
|
-
prerelease: false
|
40
|
-
requirement: &id003 !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
|
-
requirements:
|
43
|
-
- - ">="
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: "0"
|
46
|
-
type: :development
|
47
|
-
version_requirements: *id003
|
48
|
-
description: |-
|
49
|
-
This gem wraps the ZeroMQ networking library using the ruby FFI (foreign
|
50
68
|
function interface). It's a pure ruby wrapper so this gem can be loaded
|
51
|
-
|
69
|
+
|
70
|
+
and run by any ruby runtime that supports FFI. That's all of them -
|
71
|
+
|
52
72
|
MRI 1.9.x, Rubinius and JRuby.
|
53
|
-
email:
|
54
|
-
|
73
|
+
email:
|
74
|
+
- git@chuckremes.com
|
55
75
|
executables: []
|
56
|
-
|
57
76
|
extensions: []
|
58
|
-
|
59
77
|
extra_rdoc_files: []
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
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
|
-
|
78
|
+
files:
|
79
|
+
- .bnsignore
|
80
|
+
- .gitignore
|
81
|
+
- AUTHORS.txt
|
82
|
+
- Gemfile
|
83
|
+
- History.txt
|
84
|
+
- README.rdoc
|
85
|
+
- Rakefile
|
86
|
+
- examples/README.rdoc
|
87
|
+
- examples/v2api/latency_measurement.rb
|
88
|
+
- examples/v2api/local_lat.rb
|
89
|
+
- examples/v2api/local_lat_poll.rb
|
90
|
+
- examples/v2api/local_throughput.rb
|
91
|
+
- examples/v2api/pub.rb
|
92
|
+
- examples/v2api/publish_subscribe.rb
|
93
|
+
- examples/v2api/remote_lat.rb
|
94
|
+
- examples/v2api/remote_throughput.rb
|
95
|
+
- examples/v2api/reqrep_poll.rb
|
96
|
+
- examples/v2api/request_response.rb
|
97
|
+
- examples/v2api/sub.rb
|
98
|
+
- examples/v2api/throughput_measurement.rb
|
99
|
+
- examples/v2api/xreqxrep_poll.rb
|
100
|
+
- examples/v3api/latency_measurement.rb
|
101
|
+
- examples/v3api/local_lat.rb
|
102
|
+
- examples/v3api/local_lat_poll.rb
|
103
|
+
- examples/v3api/local_throughput.rb
|
104
|
+
- examples/v3api/pub.rb
|
105
|
+
- examples/v3api/publish_subscribe.rb
|
106
|
+
- examples/v3api/remote_lat.rb
|
107
|
+
- examples/v3api/remote_throughput.rb
|
108
|
+
- examples/v3api/reqrep_poll.rb
|
109
|
+
- examples/v3api/request_response.rb
|
110
|
+
- examples/v3api/sub.rb
|
111
|
+
- examples/v3api/throughput_measurement.rb
|
112
|
+
- examples/v3api/xreqxrep_poll.rb
|
113
|
+
- ext/README
|
114
|
+
- ffi-rzmq.gemspec
|
115
|
+
- lib/ffi-rzmq.rb
|
116
|
+
- lib/ffi-rzmq/constants.rb
|
117
|
+
- lib/ffi-rzmq/context.rb
|
118
|
+
- lib/ffi-rzmq/device.rb
|
119
|
+
- lib/ffi-rzmq/exceptions.rb
|
120
|
+
- lib/ffi-rzmq/libc.rb
|
121
|
+
- lib/ffi-rzmq/libzmq.rb
|
122
|
+
- lib/ffi-rzmq/message.rb
|
123
|
+
- lib/ffi-rzmq/poll.rb
|
124
|
+
- lib/ffi-rzmq/poll_items.rb
|
125
|
+
- lib/ffi-rzmq/socket.rb
|
126
|
+
- lib/ffi-rzmq/util.rb
|
127
|
+
- lib/ffi-rzmq/version.rb
|
128
|
+
- spec/context_spec.rb
|
129
|
+
- spec/device_spec.rb
|
130
|
+
- spec/message_spec.rb
|
131
|
+
- spec/multipart_spec.rb
|
132
|
+
- spec/nonblocking_recv_spec.rb
|
133
|
+
- spec/poll_spec.rb
|
134
|
+
- spec/pushpull_spec.rb
|
135
|
+
- spec/reqrep_spec.rb
|
136
|
+
- spec/socket_spec.rb
|
137
|
+
- spec/spec_helper.rb
|
117
138
|
homepage: http://github.com/chuckremes/ffi-rzmq
|
118
139
|
licenses: []
|
119
|
-
|
120
|
-
post_install_message:
|
140
|
+
post_install_message:
|
121
141
|
rdoc_options: []
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
142
|
+
require_paths:
|
143
|
+
- lib
|
144
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
145
|
+
requirements:
|
146
|
+
- - ! '>='
|
147
|
+
- !ruby/object:Gem::Version
|
148
|
+
version: !binary |-
|
149
|
+
MA==
|
126
150
|
none: false
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
151
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
152
|
+
requirements:
|
153
|
+
- - ! '>='
|
154
|
+
- !ruby/object:Gem::Version
|
155
|
+
version: !binary |-
|
156
|
+
MA==
|
132
157
|
none: false
|
133
|
-
requirements:
|
134
|
-
- - ">="
|
135
|
-
- !ruby/object:Gem::Version
|
136
|
-
version: "0"
|
137
158
|
requirements: []
|
138
|
-
|
139
159
|
rubyforge_project: ffi-rzmq
|
140
|
-
rubygems_version: 1.8.
|
141
|
-
signing_key:
|
160
|
+
rubygems_version: 1.8.24
|
161
|
+
signing_key:
|
142
162
|
specification_version: 3
|
143
163
|
summary: This gem wraps the ZeroMQ (0mq) networking library using Ruby FFI (foreign function interface).
|
144
|
-
test_files:
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
164
|
+
test_files:
|
165
|
+
- spec/context_spec.rb
|
166
|
+
- spec/device_spec.rb
|
167
|
+
- spec/message_spec.rb
|
168
|
+
- spec/multipart_spec.rb
|
169
|
+
- spec/nonblocking_recv_spec.rb
|
170
|
+
- spec/poll_spec.rb
|
171
|
+
- spec/pushpull_spec.rb
|
172
|
+
- spec/reqrep_spec.rb
|
173
|
+
- spec/socket_spec.rb
|
174
|
+
- spec/spec_helper.rb
|