rbczmq 0.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.
Files changed (101) hide show
  1. data/.gitignore +23 -0
  2. data/.travis.yml +19 -0
  3. data/Gemfile +5 -0
  4. data/Gemfile.lock +19 -0
  5. data/MIT-LICENSE +20 -0
  6. data/README.rdoc +247 -0
  7. data/Rakefile +67 -0
  8. data/examples/loop.rb +109 -0
  9. data/examples/poller.rb +37 -0
  10. data/examples/pub_sub.rb +101 -0
  11. data/examples/push_pull.rb +104 -0
  12. data/examples/req_rep.rb +100 -0
  13. data/ext/czmq.tar.gz +0 -0
  14. data/ext/rbczmq/context.c +280 -0
  15. data/ext/rbczmq/context.h +26 -0
  16. data/ext/rbczmq/extconf.rb +138 -0
  17. data/ext/rbczmq/frame.c +401 -0
  18. data/ext/rbczmq/frame.h +24 -0
  19. data/ext/rbczmq/jruby.h +22 -0
  20. data/ext/rbczmq/loop.c +413 -0
  21. data/ext/rbczmq/loop.h +24 -0
  22. data/ext/rbczmq/message.c +620 -0
  23. data/ext/rbczmq/message.h +24 -0
  24. data/ext/rbczmq/poller.c +308 -0
  25. data/ext/rbczmq/poller.h +29 -0
  26. data/ext/rbczmq/pollitem.c +251 -0
  27. data/ext/rbczmq/pollitem.h +25 -0
  28. data/ext/rbczmq/rbczmq_ext.c +198 -0
  29. data/ext/rbczmq/rbczmq_ext.h +94 -0
  30. data/ext/rbczmq/rbczmq_prelude.h +22 -0
  31. data/ext/rbczmq/rubinius.h +24 -0
  32. data/ext/rbczmq/ruby18.h +43 -0
  33. data/ext/rbczmq/ruby19.h +15 -0
  34. data/ext/rbczmq/socket.c +1570 -0
  35. data/ext/rbczmq/socket.h +136 -0
  36. data/ext/rbczmq/timer.c +110 -0
  37. data/ext/rbczmq/timer.h +23 -0
  38. data/ext/zeromq.tar.gz +0 -0
  39. data/lib/rbczmq.rb +3 -0
  40. data/lib/zmq.rb +77 -0
  41. data/lib/zmq/context.rb +50 -0
  42. data/lib/zmq/default_handler.rb +16 -0
  43. data/lib/zmq/frame.rb +11 -0
  44. data/lib/zmq/handler.rb +76 -0
  45. data/lib/zmq/loop.rb +131 -0
  46. data/lib/zmq/message.rb +9 -0
  47. data/lib/zmq/poller.rb +22 -0
  48. data/lib/zmq/pollitem.rb +31 -0
  49. data/lib/zmq/socket.rb +125 -0
  50. data/lib/zmq/socket/dealer.rb +33 -0
  51. data/lib/zmq/socket/pair.rb +39 -0
  52. data/lib/zmq/socket/pub.rb +30 -0
  53. data/lib/zmq/socket/pull.rb +29 -0
  54. data/lib/zmq/socket/push.rb +32 -0
  55. data/lib/zmq/socket/rep.rb +37 -0
  56. data/lib/zmq/socket/req.rb +37 -0
  57. data/lib/zmq/socket/router.rb +38 -0
  58. data/lib/zmq/socket/sub.rb +27 -0
  59. data/lib/zmq/timer.rb +12 -0
  60. data/lib/zmq/version.rb +5 -0
  61. data/perf/pair.rb +7 -0
  62. data/perf/pair/local.rb +22 -0
  63. data/perf/pair/remote.rb +25 -0
  64. data/perf/pub_sub.rb +7 -0
  65. data/perf/pub_sub/local.rb +22 -0
  66. data/perf/pub_sub/remote.rb +25 -0
  67. data/perf/push_pull.rb +7 -0
  68. data/perf/push_pull/local.rb +21 -0
  69. data/perf/push_pull/remote.rb +25 -0
  70. data/perf/req_rep.rb +7 -0
  71. data/perf/req_rep/local.rb +35 -0
  72. data/perf/req_rep/remote.rb +28 -0
  73. data/perf/runner.rb +142 -0
  74. data/rbczmq.gemspec +22 -0
  75. data/test/helper.rb +21 -0
  76. data/test/socket/test_dealer_socket.rb +14 -0
  77. data/test/socket/test_pair_socket.rb +24 -0
  78. data/test/socket/test_pair_sockets.rb +74 -0
  79. data/test/socket/test_pub_socket.rb +17 -0
  80. data/test/socket/test_pub_sub_sockets.rb +87 -0
  81. data/test/socket/test_pull_socket.rb +17 -0
  82. data/test/socket/test_push_pull_sockets.rb +81 -0
  83. data/test/socket/test_push_socket.rb +17 -0
  84. data/test/socket/test_rep_socket.rb +25 -0
  85. data/test/socket/test_req_rep_sockets.rb +42 -0
  86. data/test/socket/test_req_socket.rb +27 -0
  87. data/test/socket/test_router_socket.rb +14 -0
  88. data/test/socket/test_routing.rb +66 -0
  89. data/test/socket/test_sub_socket.rb +17 -0
  90. data/test/test_context.rb +86 -0
  91. data/test/test_frame.rb +78 -0
  92. data/test/test_handler.rb +28 -0
  93. data/test/test_loop.rb +252 -0
  94. data/test/test_message.rb +201 -0
  95. data/test/test_poller.rb +154 -0
  96. data/test/test_pollitem.rb +78 -0
  97. data/test/test_socket.rb +403 -0
  98. data/test/test_threading.rb +34 -0
  99. data/test/test_timer.rb +37 -0
  100. data/test/test_zmq.rb +62 -0
  101. metadata +208 -0
@@ -0,0 +1,34 @@
1
+ # encoding: utf-8
2
+
3
+ require File.join(File.dirname(__FILE__), 'helper')
4
+
5
+ Thread.abort_on_exception = true
6
+
7
+ class TestZmqThreading < ZmqTestCase
8
+ def test_threaded
9
+ ctx = ZMQ::Context.new
10
+ rep, req, threads = nil, nil, []
11
+ # Spawn a few threads in sleep state
12
+ 5.times{|i| threads << Thread.new{ sleep(0.5); i } }
13
+ # Spawn a few CPU bound threads
14
+ 5.times{|i| threads << Thread.new{ 500_000.times{} } }
15
+ expected = "threaded message"
16
+ threads << Thread.new do
17
+ rep = ctx.socket ZMQ::PAIR
18
+ rep.bind('inproc://test.threaded')
19
+ sleep 0.5
20
+ rep.recv
21
+ end
22
+ sleep 0.3
23
+ threads << Thread.new do
24
+ req = ctx.socket ZMQ::PAIR
25
+ req.connect('inproc://test.threaded')
26
+ req.send(expected)
27
+ end
28
+ Thread.pass
29
+ sleep 0.3
30
+ threads.map!{|t| t.value }
31
+ thread_vals = [0, 1, 2, 3, 4, 500_000, 500_000, 500_000, 500_000, 500_000, expected, true]
32
+ assert_equal thread_vals, threads
33
+ end
34
+ end
@@ -0,0 +1,37 @@
1
+ # encoding: utf-8
2
+
3
+ require File.join(File.dirname(__FILE__), 'helper')
4
+
5
+ class TestZmqTimer < ZmqTestCase
6
+
7
+ def test_alloc
8
+ cb = Proc.new{ :done }
9
+ assert_raises ArgumentError do
10
+ ZMQ::Timer.new(1, 2)
11
+ end
12
+ assert_instance_of ZMQ::Timer, ZMQ::Timer.new(1, 2, cb)
13
+ assert_instance_of ZMQ::Timer, ZMQ::Timer.new(1, 2){ :fired }
14
+ end
15
+
16
+ def test_fire
17
+ timer = ZMQ::Timer.new(1, 2){ :fired }
18
+ assert_equal :fired, timer.fire
19
+ assert_equal :fired, timer.call
20
+ end
21
+
22
+ def test_on_error
23
+ timer = ZMQ::Timer.new(1, 2){ :fired }
24
+ err = StandardError.new("oops")
25
+ assert_raises StandardError do
26
+ timer.on_error(err)
27
+ end
28
+ end
29
+
30
+ def test_cancel
31
+ timer = ZMQ::Timer.new(1, 2){ :fired }
32
+ timer.cancel
33
+ assert_raises ZMQ::Error do
34
+ timer.call
35
+ end
36
+ end
37
+ end
data/test/test_zmq.rb ADDED
@@ -0,0 +1,62 @@
1
+ # encoding: utf-8
2
+
3
+ require File.join(File.dirname(__FILE__), 'helper')
4
+
5
+ class TestZmq < ZmqTestCase
6
+ def test_interrupted_p
7
+ assert !ZMQ.interrupted?
8
+ end
9
+
10
+ def test_version
11
+ assert_equal [2,1,11], ZMQ.version
12
+ end
13
+
14
+ def test_now
15
+ assert [Bignum, Fixnum].include?(ZMQ.now.class)
16
+ end
17
+
18
+ def test_log
19
+ assert_nil ZMQ.log("log message")
20
+ end
21
+
22
+ def test_error
23
+ expected = [ZMQ::Error, NilClass]
24
+ assert expected.any?{|c| c === ZMQ.error }
25
+ end
26
+
27
+ def test_errno
28
+ assert_instance_of Fixnum, ZMQ.errno
29
+ end
30
+
31
+ def test_select
32
+ ctx = ZMQ::Context.new
33
+ poller = ZMQ::Poller.new
34
+ assert_equal 0, poller.poll
35
+ rep = ctx.socket(:REP)
36
+ rep.linger = 0
37
+ rep.bind("inproc://test.select")
38
+ req = ctx.socket(:REQ)
39
+ req.linger = 0
40
+ req.connect("inproc://test.select")
41
+
42
+ r, w, e = ZMQ.select([rep], nil, nil, 1)
43
+ assert_equal [], r
44
+ assert_equal [], w
45
+ assert_equal [], e
46
+
47
+ assert req.send("request")
48
+
49
+ r, w, e = ZMQ.select([rep], nil, nil, 1)
50
+ assert_equal [rep], r
51
+ assert_equal [], w
52
+ assert_equal [], e
53
+ ensure
54
+ ctx.destroy
55
+ end
56
+
57
+ def test_pollitem
58
+ item = ZMQ::Pollitem(STDOUT, ZMQ::POLLIN)
59
+ assert_equal STDOUT, item.pollable
60
+ assert_equal ZMQ::POLLIN, item.events
61
+ end
62
+ end
metadata ADDED
@@ -0,0 +1,208 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rbczmq
3
+ version: !ruby/object:Gem::Version
4
+ hash: 9
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 1
9
+ version: "0.1"
10
+ platform: ruby
11
+ authors:
12
+ - "Lourens Naud\xC3\xA9"
13
+ - James Tucker
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2012-02-21 00:00:00 +00:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: rake-compiler
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ hash: 63
30
+ segments:
31
+ - 0
32
+ - 8
33
+ - 0
34
+ version: 0.8.0
35
+ type: :development
36
+ version_requirements: *id001
37
+ description: "Ruby extension for CZMQ - High-level C Binding for \xC3\x98MQ (http://czmq.zeromq.org)"
38
+ email:
39
+ - lourens@methodmissing.com
40
+ - jftucker@gmail.com
41
+ executables: []
42
+
43
+ extensions:
44
+ - ext/rbczmq/extconf.rb
45
+ extra_rdoc_files: []
46
+
47
+ files:
48
+ - .gitignore
49
+ - .travis.yml
50
+ - Gemfile
51
+ - Gemfile.lock
52
+ - MIT-LICENSE
53
+ - README.rdoc
54
+ - Rakefile
55
+ - examples/loop.rb
56
+ - examples/poller.rb
57
+ - examples/pub_sub.rb
58
+ - examples/push_pull.rb
59
+ - examples/req_rep.rb
60
+ - ext/czmq.tar.gz
61
+ - ext/rbczmq/context.c
62
+ - ext/rbczmq/context.h
63
+ - ext/rbczmq/extconf.rb
64
+ - ext/rbczmq/frame.c
65
+ - ext/rbczmq/frame.h
66
+ - ext/rbczmq/jruby.h
67
+ - ext/rbczmq/loop.c
68
+ - ext/rbczmq/loop.h
69
+ - ext/rbczmq/message.c
70
+ - ext/rbczmq/message.h
71
+ - ext/rbczmq/poller.c
72
+ - ext/rbczmq/poller.h
73
+ - ext/rbczmq/pollitem.c
74
+ - ext/rbczmq/pollitem.h
75
+ - ext/rbczmq/rbczmq_ext.c
76
+ - ext/rbczmq/rbczmq_ext.h
77
+ - ext/rbczmq/rbczmq_prelude.h
78
+ - ext/rbczmq/rubinius.h
79
+ - ext/rbczmq/ruby18.h
80
+ - ext/rbczmq/ruby19.h
81
+ - ext/rbczmq/socket.c
82
+ - ext/rbczmq/socket.h
83
+ - ext/rbczmq/timer.c
84
+ - ext/rbczmq/timer.h
85
+ - ext/zeromq.tar.gz
86
+ - lib/rbczmq.rb
87
+ - lib/zmq.rb
88
+ - lib/zmq/context.rb
89
+ - lib/zmq/default_handler.rb
90
+ - lib/zmq/frame.rb
91
+ - lib/zmq/handler.rb
92
+ - lib/zmq/loop.rb
93
+ - lib/zmq/message.rb
94
+ - lib/zmq/poller.rb
95
+ - lib/zmq/pollitem.rb
96
+ - lib/zmq/socket.rb
97
+ - lib/zmq/socket/dealer.rb
98
+ - lib/zmq/socket/pair.rb
99
+ - lib/zmq/socket/pub.rb
100
+ - lib/zmq/socket/pull.rb
101
+ - lib/zmq/socket/push.rb
102
+ - lib/zmq/socket/rep.rb
103
+ - lib/zmq/socket/req.rb
104
+ - lib/zmq/socket/router.rb
105
+ - lib/zmq/socket/sub.rb
106
+ - lib/zmq/timer.rb
107
+ - lib/zmq/version.rb
108
+ - perf/pair.rb
109
+ - perf/pair/local.rb
110
+ - perf/pair/remote.rb
111
+ - perf/pub_sub.rb
112
+ - perf/pub_sub/local.rb
113
+ - perf/pub_sub/remote.rb
114
+ - perf/push_pull.rb
115
+ - perf/push_pull/local.rb
116
+ - perf/push_pull/remote.rb
117
+ - perf/req_rep.rb
118
+ - perf/req_rep/local.rb
119
+ - perf/req_rep/remote.rb
120
+ - perf/runner.rb
121
+ - rbczmq.gemspec
122
+ - test/helper.rb
123
+ - test/socket/test_dealer_socket.rb
124
+ - test/socket/test_pair_socket.rb
125
+ - test/socket/test_pair_sockets.rb
126
+ - test/socket/test_pub_socket.rb
127
+ - test/socket/test_pub_sub_sockets.rb
128
+ - test/socket/test_pull_socket.rb
129
+ - test/socket/test_push_pull_sockets.rb
130
+ - test/socket/test_push_socket.rb
131
+ - test/socket/test_rep_socket.rb
132
+ - test/socket/test_req_rep_sockets.rb
133
+ - test/socket/test_req_socket.rb
134
+ - test/socket/test_router_socket.rb
135
+ - test/socket/test_routing.rb
136
+ - test/socket/test_sub_socket.rb
137
+ - test/test_context.rb
138
+ - test/test_frame.rb
139
+ - test/test_handler.rb
140
+ - test/test_loop.rb
141
+ - test/test_message.rb
142
+ - test/test_poller.rb
143
+ - test/test_pollitem.rb
144
+ - test/test_socket.rb
145
+ - test/test_threading.rb
146
+ - test/test_timer.rb
147
+ - test/test_zmq.rb
148
+ has_rdoc: true
149
+ homepage: http://github.com/methodmissing/rbczmq
150
+ licenses: []
151
+
152
+ post_install_message:
153
+ rdoc_options:
154
+ - --charset=UTF-8
155
+ require_paths:
156
+ - lib
157
+ required_ruby_version: !ruby/object:Gem::Requirement
158
+ none: false
159
+ requirements:
160
+ - - ">="
161
+ - !ruby/object:Gem::Version
162
+ hash: 3
163
+ segments:
164
+ - 0
165
+ version: "0"
166
+ required_rubygems_version: !ruby/object:Gem::Requirement
167
+ none: false
168
+ requirements:
169
+ - - ">="
170
+ - !ruby/object:Gem::Version
171
+ hash: 3
172
+ segments:
173
+ - 0
174
+ version: "0"
175
+ requirements: []
176
+
177
+ rubyforge_project:
178
+ rubygems_version: 1.6.2
179
+ signing_key:
180
+ specification_version: 3
181
+ summary: "Ruby extension for CZMQ - High-level C Binding for \xC3\x98MQ (http://czmq.zeromq.org)"
182
+ test_files:
183
+ - test/helper.rb
184
+ - test/socket/test_dealer_socket.rb
185
+ - test/socket/test_pair_socket.rb
186
+ - test/socket/test_pair_sockets.rb
187
+ - test/socket/test_pub_socket.rb
188
+ - test/socket/test_pub_sub_sockets.rb
189
+ - test/socket/test_pull_socket.rb
190
+ - test/socket/test_push_pull_sockets.rb
191
+ - test/socket/test_push_socket.rb
192
+ - test/socket/test_rep_socket.rb
193
+ - test/socket/test_req_rep_sockets.rb
194
+ - test/socket/test_req_socket.rb
195
+ - test/socket/test_router_socket.rb
196
+ - test/socket/test_routing.rb
197
+ - test/socket/test_sub_socket.rb
198
+ - test/test_context.rb
199
+ - test/test_frame.rb
200
+ - test/test_handler.rb
201
+ - test/test_loop.rb
202
+ - test/test_message.rb
203
+ - test/test_poller.rb
204
+ - test/test_pollitem.rb
205
+ - test/test_socket.rb
206
+ - test/test_threading.rb
207
+ - test/test_timer.rb
208
+ - test/test_zmq.rb