rbczmq 1.6 → 1.6.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.
- checksums.yaml +15 -0
- data/.travis.yml +0 -3
- data/CHANGELOG.rdoc +7 -0
- data/Gemfile.lock +1 -1
- data/ext/czmq-1.4.1.tar.gz +0 -0
- data/ext/rbczmq/beacon.c +318 -0
- data/ext/rbczmq/beacon.h +38 -0
- data/ext/rbczmq/context.c +22 -71
- data/ext/rbczmq/context.h +2 -0
- data/ext/rbczmq/frame.h +1 -1
- data/ext/rbczmq/jruby.h +1 -17
- data/ext/rbczmq/loop.c +2 -3
- data/ext/rbczmq/rbczmq_ext.c +2 -6
- data/ext/rbczmq/rbczmq_ext.h +6 -0
- data/ext/rbczmq/rubinius.h +0 -14
- data/ext/rbczmq/ruby18.h +1 -38
- data/ext/rbczmq/ruby19.h +0 -11
- data/ext/rbczmq/socket.c +223 -245
- data/ext/rbczmq/socket.h +6 -5
- data/lib/zmq.rb +0 -14
- data/lib/zmq/version.rb +1 -1
- data/rbczmq.gemspec +1 -1
- data/test/test_beacon.rb +92 -0
- data/test/test_context.rb +0 -15
- data/test/test_loop.rb +1 -1
- data/test/test_monitoring.rb +0 -4
- data/test/test_poller.rb +1 -1
- data/test/test_socket.rb +62 -52
- metadata +11 -11
- data/ext/czmq-1.4.0.tar.gz +0 -0
data/ext/rbczmq/socket.h
CHANGED
@@ -8,6 +8,7 @@
|
|
8
8
|
#define ZMQ_SOCKET_PENDING 0x01
|
9
9
|
#define ZMQ_SOCKET_BOUND 0x02
|
10
10
|
#define ZMQ_SOCKET_CONNECTED 0x04
|
11
|
+
#define ZMQ_SOCKET_DISCONNECTED 0x08
|
11
12
|
|
12
13
|
typedef struct {
|
13
14
|
zctx_t *ctx;
|
@@ -15,11 +16,6 @@ typedef struct {
|
|
15
16
|
int flags;
|
16
17
|
bool verbose;
|
17
18
|
int state;
|
18
|
-
#ifndef HAVE_RB_THREAD_BLOCKING_REGION
|
19
|
-
zlist_t *str_buffer;
|
20
|
-
zlist_t *frame_buffer;
|
21
|
-
zlist_t *msg_buffer;
|
22
|
-
#endif
|
23
19
|
VALUE endpoints;
|
24
20
|
VALUE thread;
|
25
21
|
VALUE context;
|
@@ -126,6 +122,11 @@ struct nogvl_recv_args {
|
|
126
122
|
zmq_sock_wrapper *socket;
|
127
123
|
};
|
128
124
|
|
125
|
+
struct nogvl_socket_poll_args {
|
126
|
+
zmq_sock_wrapper *socket;
|
127
|
+
int timeout;
|
128
|
+
};
|
129
|
+
|
129
130
|
struct nogvl_monitor_recv_args {
|
130
131
|
void *socket;
|
131
132
|
zmq_msg_t msg;
|
data/lib/zmq.rb
CHANGED
@@ -13,20 +13,6 @@ require 'zmq/version' unless defined? ZMQ::VERSION
|
|
13
13
|
require 'socket'
|
14
14
|
|
15
15
|
module ZMQ
|
16
|
-
def self.version3?
|
17
|
-
version[0] == 3
|
18
|
-
end
|
19
|
-
|
20
|
-
def self.stable_version?
|
21
|
-
version[0] == 3 &&
|
22
|
-
version[1] == 2 &&
|
23
|
-
version[2] == 2
|
24
|
-
end
|
25
|
-
|
26
|
-
def self.version2?
|
27
|
-
!version3?
|
28
|
-
end
|
29
|
-
|
30
16
|
# Sugaring for creating new ZMQ frames
|
31
17
|
#
|
32
18
|
# ZMQ::Frame("frame") => ZMQ::Frame
|
data/lib/zmq/version.rb
CHANGED
data/rbczmq.gemspec
CHANGED
@@ -7,7 +7,7 @@ Gem::Specification.new do |s|
|
|
7
7
|
s.version = ZMQ::VERSION
|
8
8
|
s.summary = "Ruby extension for CZMQ - High-level C Binding for ØMQ (http://czmq.zeromq.org)"
|
9
9
|
s.description = "Ruby extension for CZMQ - High-level C Binding for ØMQ (http://czmq.zeromq.org)"
|
10
|
-
s.authors = ["Lourens Naudé", "James Tucker"]
|
10
|
+
s.authors = ["Lourens Naudé", "James Tucker", "Matt Connolly"]
|
11
11
|
s.email = ["lourens@methodmissing.com", "jftucker@gmail.com"]
|
12
12
|
s.homepage = "http://github.com/methodmissing/rbczmq"
|
13
13
|
s.date = Time.now.utc.strftime('%Y-%m-%d')
|
data/test/test_beacon.rb
ADDED
@@ -0,0 +1,92 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require File.join(File.dirname(__FILE__), 'helper')
|
4
|
+
|
5
|
+
class TestZmqBeacon < ZmqTestCase
|
6
|
+
def test_beacon
|
7
|
+
beacon = ZMQ::Beacon.new(80000)
|
8
|
+
assert_instance_of ZMQ::Beacon, beacon
|
9
|
+
assert_nil beacon.destroy
|
10
|
+
assert_raises TypeError do
|
11
|
+
ZMQ::Beacon.new(:invalid)
|
12
|
+
end
|
13
|
+
ensure
|
14
|
+
beacon.destroy
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_hostname
|
18
|
+
beacon = ZMQ::Beacon.new(80000)
|
19
|
+
assert_instance_of String, beacon.hostname
|
20
|
+
ensure
|
21
|
+
beacon.destroy
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_set_interval
|
25
|
+
beacon = ZMQ::Beacon.new(80000)
|
26
|
+
beacon.interval = 100
|
27
|
+
assert_raises TypeError do
|
28
|
+
beacon.interval = :invalid
|
29
|
+
end
|
30
|
+
ensure
|
31
|
+
beacon.destroy
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_noecho
|
35
|
+
beacon = ZMQ::Beacon.new(80000)
|
36
|
+
assert_nil beacon.noecho
|
37
|
+
ensure
|
38
|
+
beacon.destroy
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_publish
|
42
|
+
beacon = ZMQ::Beacon.new(80000)
|
43
|
+
assert_raises TypeError do
|
44
|
+
beacon.publish :invalid
|
45
|
+
end
|
46
|
+
assert_nil beacon.publish("test")
|
47
|
+
assert_nil beacon.silence
|
48
|
+
ensure
|
49
|
+
beacon.destroy
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_subscribe
|
53
|
+
beacon = ZMQ::Beacon.new(80000)
|
54
|
+
assert_raises TypeError do
|
55
|
+
beacon.subscribe :invalid
|
56
|
+
end
|
57
|
+
assert_nil beacon.subscribe("test")
|
58
|
+
assert_nil beacon.unsubscribe
|
59
|
+
ensure
|
60
|
+
beacon.destroy
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_pipe
|
64
|
+
beacon = ZMQ::Beacon.new(80000)
|
65
|
+
assert_instance_of ZMQ::Socket::Pair, beacon.pipe
|
66
|
+
GC.start # check GC cycle with "detached" socket
|
67
|
+
ensure
|
68
|
+
beacon.destroy
|
69
|
+
end
|
70
|
+
|
71
|
+
def test_announce_lookup
|
72
|
+
ctx = ZMQ::Context.new
|
73
|
+
address = "tcp://127.0.0.1:90000"
|
74
|
+
rep = ctx.bind(:REP, address)
|
75
|
+
service_beacon = ZMQ::Beacon.new(80000)
|
76
|
+
service_beacon.publish(address)
|
77
|
+
sleep(0.5)
|
78
|
+
client_beacon = ZMQ::Beacon.new(80000)
|
79
|
+
client_beacon.subscribe("tcp")
|
80
|
+
client_beacon.pipe.rcvtimeo = 1000
|
81
|
+
sender_address = client_beacon.pipe.recv
|
82
|
+
client_address = client_beacon.pipe.recv
|
83
|
+
assert_equal address, client_address
|
84
|
+
req = ctx.connect(:REQ, client_address)
|
85
|
+
req.send "ping"
|
86
|
+
assert_equal "ping", rep.recv
|
87
|
+
ensure
|
88
|
+
ctx.destroy
|
89
|
+
service_beacon.destroy
|
90
|
+
client_beacon.destroy
|
91
|
+
end
|
92
|
+
end
|
data/test/test_context.rb
CHANGED
@@ -59,21 +59,6 @@ class TestZmqContext < ZmqTestCase
|
|
59
59
|
ctx.destroy
|
60
60
|
end
|
61
61
|
|
62
|
-
def test_hwm
|
63
|
-
ctx = ZMQ::Context.new
|
64
|
-
assert_raises TypeError do
|
65
|
-
ctx.hwm = :invalid
|
66
|
-
end
|
67
|
-
ctx.hwm = 10
|
68
|
-
assert_raises ZMQ::Error do
|
69
|
-
ctx.hwm = -2
|
70
|
-
end
|
71
|
-
# deprecated method
|
72
|
-
assert_equal 0, ctx.hwm
|
73
|
-
ensure
|
74
|
-
ctx.destroy
|
75
|
-
end
|
76
|
-
|
77
62
|
def test_bind_connect
|
78
63
|
ctx = ZMQ::Context.new
|
79
64
|
rep = ctx.bind(:REP, "inproc://test.bind_connect")
|
data/test/test_loop.rb
CHANGED
@@ -175,7 +175,7 @@ class TestZmqLoop < ZmqTestCase
|
|
175
175
|
|
176
176
|
def test_register_ruby_sockets
|
177
177
|
server = TCPServer.new("127.0.0.1", 0)
|
178
|
-
|
178
|
+
port = server.addr[1]
|
179
179
|
client = TCPSocket.new("127.0.0.1", port)
|
180
180
|
s = server.accept
|
181
181
|
ret = ZMQ::Loop.run do
|
data/test/test_monitoring.rb
CHANGED
data/test/test_poller.rb
CHANGED
@@ -71,7 +71,7 @@ class TestZmqPoller < ZmqTestCase
|
|
71
71
|
def test_poll_ruby_sockets
|
72
72
|
poller = ZMQ::Poller.new
|
73
73
|
server = TCPServer.new("127.0.0.1", 0)
|
74
|
-
|
74
|
+
port = server.addr[1]
|
75
75
|
client = TCPSocket.new("127.0.0.1", port)
|
76
76
|
s = server.accept
|
77
77
|
|
data/test/test_socket.rb
CHANGED
@@ -15,14 +15,24 @@ class TestZmqSocket < ZmqTestCase
|
|
15
15
|
ctx.destroy
|
16
16
|
end
|
17
17
|
|
18
|
-
def
|
18
|
+
def test_disconnect
|
19
19
|
ctx = ZMQ::Context.new
|
20
20
|
rep = ctx.socket(:REP)
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
21
|
+
endpoint = "inproc://test.socket-send-timeout"
|
22
|
+
rep.bind(endpoint)
|
23
|
+
req = ctx.connect(:REQ, endpoint)
|
24
|
+
assert req.disconnect(endpoint)
|
25
|
+
assert_raises Errno::EINVAL do
|
26
|
+
req.disconnect "invalid"
|
25
27
|
end
|
28
|
+
ensure
|
29
|
+
ctx.destroy
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_send_timeout
|
33
|
+
ctx = ZMQ::Context.new
|
34
|
+
rep = ctx.socket(:REP)
|
35
|
+
rep.sndhwm = 1
|
26
36
|
rep.bind("inproc://test.socket-send-timeout")
|
27
37
|
req = ctx.connect(:REQ, "inproc://test.socket-send-timeout")
|
28
38
|
# Cannot test much other than normal transfer's not disrupted
|
@@ -125,7 +135,7 @@ class TestZmqSocket < ZmqTestCase
|
|
125
135
|
def test_connect
|
126
136
|
ctx = ZMQ::Context.new
|
127
137
|
rep = ctx.socket(:PAIR)
|
128
|
-
|
138
|
+
rep.bind("inproc://test.socket-connect")
|
129
139
|
req = ctx.socket(:PAIR)
|
130
140
|
assert(req.state & ZMQ::Socket::PENDING)
|
131
141
|
req.connect("inproc://test.socket-connect")
|
@@ -138,7 +148,7 @@ class TestZmqSocket < ZmqTestCase
|
|
138
148
|
def test_connect_all
|
139
149
|
ctx = ZMQ::Context.new
|
140
150
|
rep = ctx.socket(:PAIR)
|
141
|
-
|
151
|
+
rep.bind("inproc://test.socket-connect")
|
142
152
|
req = ctx.socket(:PAIR)
|
143
153
|
assert(req.state & ZMQ::Socket::PENDING)
|
144
154
|
req.connect_all("inproc://test.socket-connect")
|
@@ -381,6 +391,19 @@ class TestZmqSocket < ZmqTestCase
|
|
381
391
|
ctx.destroy
|
382
392
|
end
|
383
393
|
|
394
|
+
def test_poll
|
395
|
+
ctx = ZMQ::Context.new
|
396
|
+
rep = ctx.socket(:PAIR)
|
397
|
+
rep.bind("inproc://test.socket-poll")
|
398
|
+
assert !rep.poll(100)
|
399
|
+
req = ctx.socket(:PAIR)
|
400
|
+
req.connect("inproc://test.socket-poll")
|
401
|
+
req.send("test")
|
402
|
+
assert rep.poll(100)
|
403
|
+
ensure
|
404
|
+
ctx.destroy
|
405
|
+
end
|
406
|
+
|
384
407
|
def test_send_receive_message
|
385
408
|
ctx = ZMQ::Context.new
|
386
409
|
rep = ctx.socket(:PAIR)
|
@@ -415,57 +438,44 @@ class TestZmqSocket < ZmqTestCase
|
|
415
438
|
sock = ctx.socket(:ROUTER)
|
416
439
|
sock.verbose = true
|
417
440
|
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
assert_equal 10000, sock.sndhwm
|
422
|
-
|
423
|
-
assert_equal 1000, sock.rcvhwm
|
424
|
-
sock.rcvhwm = 10000
|
425
|
-
assert_equal 10000, sock.rcvhwm
|
426
|
-
else
|
427
|
-
assert_equal 0, sock.hwm
|
428
|
-
sock.hwm = 1000
|
429
|
-
assert_equal 1000, sock.hwm
|
430
|
-
|
431
|
-
assert_equal 0, sock.swap
|
432
|
-
sock.swap = 1000
|
433
|
-
assert_equal 1000, sock.swap
|
441
|
+
assert_equal 1000, sock.sndhwm
|
442
|
+
sock.sndhwm = 10000
|
443
|
+
assert_equal 10000, sock.sndhwm
|
434
444
|
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
end
|
445
|
+
assert_equal 1000, sock.rcvhwm
|
446
|
+
sock.rcvhwm = 10000
|
447
|
+
assert_equal 10000, sock.rcvhwm
|
439
448
|
|
440
449
|
assert_equal 0, sock.affinity
|
441
450
|
sock.affinity = 1
|
442
451
|
assert_equal 1, sock.affinity
|
443
452
|
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
assert_equal 50000, sock.rate
|
448
|
-
else
|
449
|
-
assert_equal 40000, sock.rate
|
450
|
-
sock.rate = 50000
|
451
|
-
assert_equal 50000, sock.rate
|
452
|
-
end
|
453
|
+
assert_equal 100, sock.rate
|
454
|
+
sock.rate = 50000
|
455
|
+
assert_equal 50000, sock.rate
|
453
456
|
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
assert_equal 20, sock.recovery_ivl
|
458
|
-
else
|
459
|
-
assert_equal 10, sock.recovery_ivl
|
460
|
-
sock.recovery_ivl = 20
|
461
|
-
assert_equal 20, sock.recovery_ivl
|
462
|
-
end
|
457
|
+
assert_equal 10000, sock.recovery_ivl
|
458
|
+
sock.recovery_ivl = 20
|
459
|
+
assert_equal 20, sock.recovery_ivl
|
463
460
|
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
461
|
+
assert_equal(-1, sock.maxmsgsize)
|
462
|
+
sock.maxmsgsize = 20
|
463
|
+
assert_equal 20, sock.maxmsgsize
|
464
|
+
|
465
|
+
assert_equal 1, sock.multicast_hops
|
466
|
+
sock.multicast_hops = 20
|
467
|
+
assert_equal 20, sock.multicast_hops
|
468
|
+
|
469
|
+
assert sock.ipv4only?
|
470
|
+
sock.ipv4only = false
|
471
|
+
assert !sock.ipv4only?
|
472
|
+
|
473
|
+
sock.delay_attach_on_connect = true
|
474
|
+
sock.router_mandatory = true
|
475
|
+
sock.router_raw = true
|
476
|
+
|
477
|
+
xpub = ctx.socket(:XPUB)
|
478
|
+
xpub.xpub_verbose = true
|
469
479
|
|
470
480
|
assert_equal 0, sock.sndbuf
|
471
481
|
sock.sndbuf = 1000
|
@@ -491,11 +501,11 @@ class TestZmqSocket < ZmqTestCase
|
|
491
501
|
sock.reconnect_ivl_max = 5
|
492
502
|
assert_equal 5, sock.reconnect_ivl_max
|
493
503
|
|
494
|
-
assert_equal
|
504
|
+
assert_equal(-1, sock.rcvtimeo)
|
495
505
|
sock.rcvtimeo = 200
|
496
506
|
assert_equal 200, sock.rcvtimeo
|
497
507
|
|
498
|
-
assert_equal
|
508
|
+
assert_equal(-1, sock.sndtimeo)
|
499
509
|
sock.sndtimeo = 200
|
500
510
|
assert_equal 200, sock.sndtimeo
|
501
511
|
|
metadata
CHANGED
@@ -1,21 +1,20 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rbczmq
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
5
|
-
prerelease:
|
4
|
+
version: 1.6.2
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Lourens Naudé
|
9
8
|
- James Tucker
|
9
|
+
- Matt Connolly
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-05-
|
13
|
+
date: 2013-05-29 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rake-compiler
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
18
|
-
none: false
|
19
18
|
requirements:
|
20
19
|
- - ~>
|
21
20
|
- !ruby/object:Gem::Version
|
@@ -23,7 +22,6 @@ dependencies:
|
|
23
22
|
type: :development
|
24
23
|
prerelease: false
|
25
24
|
version_requirements: !ruby/object:Gem::Requirement
|
26
|
-
none: false
|
27
25
|
requirements:
|
28
26
|
- - ~>
|
29
27
|
- !ruby/object:Gem::Version
|
@@ -50,7 +48,9 @@ files:
|
|
50
48
|
- examples/pub_sub.rb
|
51
49
|
- examples/push_pull.rb
|
52
50
|
- examples/req_rep.rb
|
53
|
-
- ext/czmq-1.4.
|
51
|
+
- ext/czmq-1.4.1.tar.gz
|
52
|
+
- ext/rbczmq/beacon.c
|
53
|
+
- ext/rbczmq/beacon.h
|
54
54
|
- ext/rbczmq/context.c
|
55
55
|
- ext/rbczmq/context.h
|
56
56
|
- ext/rbczmq/extconf.rb
|
@@ -128,6 +128,7 @@ files:
|
|
128
128
|
- test/socket/test_router_socket.rb
|
129
129
|
- test/socket/test_routing.rb
|
130
130
|
- test/socket/test_sub_socket.rb
|
131
|
+
- test/test_beacon.rb
|
131
132
|
- test/test_context.rb
|
132
133
|
- test/test_frame.rb
|
133
134
|
- test/test_handler.rb
|
@@ -142,28 +143,27 @@ files:
|
|
142
143
|
- test/test_zmq.rb
|
143
144
|
homepage: http://github.com/methodmissing/rbczmq
|
144
145
|
licenses: []
|
146
|
+
metadata: {}
|
145
147
|
post_install_message:
|
146
148
|
rdoc_options:
|
147
149
|
- --charset=UTF-8
|
148
150
|
require_paths:
|
149
151
|
- lib
|
150
152
|
required_ruby_version: !ruby/object:Gem::Requirement
|
151
|
-
none: false
|
152
153
|
requirements:
|
153
154
|
- - ! '>='
|
154
155
|
- !ruby/object:Gem::Version
|
155
156
|
version: '0'
|
156
157
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
157
|
-
none: false
|
158
158
|
requirements:
|
159
159
|
- - ! '>='
|
160
160
|
- !ruby/object:Gem::Version
|
161
161
|
version: '0'
|
162
162
|
requirements: []
|
163
163
|
rubyforge_project:
|
164
|
-
rubygems_version:
|
164
|
+
rubygems_version: 2.0.3
|
165
165
|
signing_key:
|
166
|
-
specification_version:
|
166
|
+
specification_version: 4
|
167
167
|
summary: Ruby extension for CZMQ - High-level C Binding for ØMQ (http://czmq.zeromq.org)
|
168
168
|
test_files:
|
169
169
|
- test/helper.rb
|
@@ -181,6 +181,7 @@ test_files:
|
|
181
181
|
- test/socket/test_router_socket.rb
|
182
182
|
- test/socket/test_routing.rb
|
183
183
|
- test/socket/test_sub_socket.rb
|
184
|
+
- test/test_beacon.rb
|
184
185
|
- test/test_context.rb
|
185
186
|
- test/test_frame.rb
|
186
187
|
- test/test_handler.rb
|
@@ -193,4 +194,3 @@ test_files:
|
|
193
194
|
- test/test_threading.rb
|
194
195
|
- test/test_timer.rb
|
195
196
|
- test/test_zmq.rb
|
196
|
-
has_rdoc: true
|