posix_mq 2.2.0 → 2.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/GIT-VERSION-GEN +1 -1
- data/README +13 -42
- data/bin/posix-mq-rb +2 -1
- data/ext/posix_mq/extconf.rb +11 -0
- data/ext/posix_mq/posix_mq.c +9 -1
- data/lib/posix_mq.rb +1 -2
- data/pkg.mk +1 -1
- data/test/test_posix_mq.rb +23 -8
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: df411b34002c2ef4be24cd08c876f27d36e1902e
|
4
|
+
data.tar.gz: b3bb9d8ade45215ec378ffaef6a8e26a43c15801
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6c2520418f996810ba8100fbefad750726dd05d32fa7cebc6ebc875283282c2aefa0eeee16c88e0f91b33e237ac8f2a6faba5be781869765926b1e3b40cf46c3
|
7
|
+
data.tar.gz: ffcaeeaede515f86b9348956bc40462d357b617ae76ca66d49eef358a9e43035e5aeeffb4d18f8285345a92e141f82b23bc9387485cd8e4f785bb6ff742cf1bf
|
data/GIT-VERSION-GEN
CHANGED
data/README
CHANGED
@@ -92,13 +92,12 @@ from processes that receive.
|
|
92
92
|
|
93
93
|
You can get the latest source via git from the following locations:
|
94
94
|
|
95
|
-
|
96
|
-
|
95
|
+
git://bogomips.org/ruby_posix_mq.git
|
96
|
+
git://repo.or.cz/ruby_posix_mq.git (mirror)
|
97
97
|
|
98
|
-
You may browse the code from the web
|
99
|
-
tarballs here:
|
98
|
+
You may also browse the code from the web:
|
100
99
|
|
101
|
-
* http://bogomips.org/ruby_posix_mq.git
|
100
|
+
* http://bogomips.org/ruby_posix_mq.git
|
102
101
|
* http://repo.or.cz/w/ruby_posix_mq.git (gitweb)
|
103
102
|
|
104
103
|
Inline patches (from "git format-patch") to the mailing list are
|
@@ -107,8 +106,11 @@ the patch.
|
|
107
106
|
|
108
107
|
We will adhere to mostly the same conventions for patch submissions as
|
109
108
|
git itself. See the Documentation/SubmittingPatches document
|
110
|
-
distributed with git on
|
111
|
-
|
109
|
+
distributed with git on patch submission guidelines to follow:
|
110
|
+
|
111
|
+
https://git.kernel.org/cgit/git/git.git/plain/Documentation/SubmittingPatches
|
112
|
+
|
113
|
+
Just don't mail the git list or maintainer with Ruby posix_mq patches.
|
112
114
|
|
113
115
|
== Contact
|
114
116
|
|
@@ -119,40 +121,9 @@ Send patches (from "git format-patch") with "git send-email" and do not
|
|
119
121
|
send HTML email or attachments. We are very responsive to email and you
|
120
122
|
will usually get a response within 24-72 hours.
|
121
123
|
|
122
|
-
|
123
|
-
|
124
|
-
We operate a {public-inbox}[http://public-inbox.org/] which
|
125
|
-
feeds the mailing list. You may subscribe either using
|
126
|
-
{ssoma}[http://ssoma.public-inbox.org/] or by sending a mail
|
127
|
-
to mailto:ruby-posix-mq+subscribe@bogomips.org
|
128
|
-
|
129
|
-
ssoma is a mail archiver/fetcher using git. It operates in a similar
|
130
|
-
fashion to tools such as slrnpull, fetchmail, or getmail. ssoma
|
131
|
-
subscription instructions:
|
132
|
-
|
133
|
-
URL=git://bogomips.org/ruby-posix-mq
|
134
|
-
LISTNAME=ruby-posix-mq
|
135
|
-
|
136
|
-
# to initialize a maildir (this may be a new or existing maildir,
|
137
|
-
# ssoma will not touch existing messages)
|
138
|
-
# If you prefer mbox, use mbox:/path/to/mbox as the last argument
|
139
|
-
# You may also use imap://$MAILSERVER/INBOX for an IMAP account
|
140
|
-
# or imaps:// for an IMAPS account, as well.
|
141
|
-
ssoma add $LISTNAME $URL maildir:/path/to/maildir
|
142
|
-
|
143
|
-
# read with your favorite MUA (only using mutt as an example)
|
144
|
-
mutt -f /path/to/maildir # (or /path/to/mbox)
|
145
|
-
|
146
|
-
# to keep your mbox or maildir up-to-date, periodically run:
|
147
|
-
ssoma sync $LISTNAME
|
148
|
-
|
149
|
-
# your MUA may modify and delete messages from the maildir or mbox,
|
150
|
-
# this does not affect ssoma functionality at all
|
151
|
-
|
152
|
-
# to sync all your ssoma subscriptions
|
153
|
-
ssoma sync
|
124
|
+
Subscription is optional: mailto:ruby-posix-mq+subscribe@bogomips.org
|
154
125
|
|
155
|
-
|
156
|
-
ssoma sync --cron
|
126
|
+
Read-only mail archives are available over HTTP and NNTP:
|
157
127
|
|
158
|
-
|
128
|
+
http://bogomips.org/ruby-posix-mq/
|
129
|
+
nntp://news.public-inbox.org/inbox.comp.lang.ruby.posix-mq
|
data/bin/posix-mq-rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
# -*- encoding: binary -*-
|
3
|
+
# -*- frozen_string_literal: true -*-
|
3
4
|
$stderr.sync = $stdout.sync = true
|
4
5
|
$stdout.binmode
|
5
6
|
$stderr.binmode
|
@@ -100,7 +101,7 @@ begin
|
|
100
101
|
when :create
|
101
102
|
exit
|
102
103
|
when :receive
|
103
|
-
buf, prio = mq.receive(
|
104
|
+
buf, prio = mq.receive(nil, timeout)
|
104
105
|
$stderr.write("priority=#{prio}\n") if priority
|
105
106
|
$stdout.write(buf)
|
106
107
|
when :send
|
data/ext/posix_mq/extconf.rb
CHANGED
@@ -14,4 +14,15 @@ have_library("pthread")
|
|
14
14
|
have_func("__mq_oshandle")
|
15
15
|
have_func("mq_timedsend")
|
16
16
|
have_func("mq_timedreceive")
|
17
|
+
|
18
|
+
r, w = IO.pipe
|
19
|
+
r.close
|
20
|
+
w.close
|
21
|
+
begin
|
22
|
+
r.close
|
23
|
+
$CPPFLAGS += ' -DIDEMPOTENT_IO_CLOSE=1'
|
24
|
+
rescue IOError
|
25
|
+
$CPPFLAGS += ' -DIDEMPOTENT_IO_CLOSE=0'
|
26
|
+
end
|
27
|
+
|
17
28
|
create_makefile("posix_mq_ext")
|
data/ext/posix_mq/posix_mq.c
CHANGED
@@ -824,7 +824,15 @@ static VALUE setattr(VALUE self, VALUE astruct)
|
|
824
824
|
*/
|
825
825
|
static VALUE _close(VALUE self)
|
826
826
|
{
|
827
|
-
struct posix_mq *mq
|
827
|
+
struct posix_mq *mq;
|
828
|
+
|
829
|
+
if (IDEMPOTENT_IO_CLOSE) { /* defined in extconf.rb */
|
830
|
+
mq = get(self, 0);
|
831
|
+
if (!mq || (mq->des == MQD_INVALID))
|
832
|
+
return Qnil;
|
833
|
+
} else {
|
834
|
+
mq = get(self, 1);
|
835
|
+
}
|
828
836
|
|
829
837
|
if (! MQ_IO_CLOSE(mq)) {
|
830
838
|
if (mq_close(mq->des) < 0)
|
data/lib/posix_mq.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# -*-
|
1
|
+
# -*- frozen_string_literal: true -*-
|
2
2
|
#
|
3
3
|
# This class represents an POSIX message queue descriptor (mqd_t)
|
4
4
|
# object. It matches the C API for POSIX messages queues closely.
|
@@ -79,7 +79,6 @@ class POSIX_MQ
|
|
79
79
|
# All send/receive operations are atomic and only one
|
80
80
|
# native thread may be notified at a time
|
81
81
|
alias clone dup
|
82
|
-
|
83
82
|
end
|
84
83
|
|
85
84
|
require 'posix_mq_ext'
|
data/pkg.mk
CHANGED
data/test/test_posix_mq.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# -*- encoding: binary -*-
|
2
|
+
# frozen_string_literal: true
|
2
3
|
require 'test/unit'
|
3
4
|
require 'thread'
|
4
5
|
require 'fcntl'
|
@@ -68,7 +69,7 @@ class Test_POSIX_MQ < Test::Unit::TestCase
|
|
68
69
|
@mq = POSIX_MQ.new(@path, :rw)
|
69
70
|
assert ! @mq.nonblock?
|
70
71
|
t0 = Time.now
|
71
|
-
maybe_timeout { @mq.receive
|
72
|
+
maybe_timeout { @mq.receive nil, interval } or return
|
72
73
|
elapsed = Time.now - t0
|
73
74
|
assert_operator elapsed, :>, interval, elapsed.inspect
|
74
75
|
assert_operator elapsed, :<, 0.04, elapsed.inspect
|
@@ -82,7 +83,7 @@ class Test_POSIX_MQ < Test::Unit::TestCase
|
|
82
83
|
@mq = POSIX_MQ.new(@path, :rw)
|
83
84
|
assert ! @mq.nonblock?
|
84
85
|
t0 = Time.now
|
85
|
-
maybe_timeout { @mq.receive
|
86
|
+
maybe_timeout { @mq.receive nil, interval } or return
|
86
87
|
elapsed = Time.now - t0
|
87
88
|
assert_operator elapsed, :>=, 0.01, elapsed.inspect
|
88
89
|
assert_operator elapsed, :<=, 0.04, elapsed.inspect
|
@@ -93,7 +94,7 @@ class Test_POSIX_MQ < Test::Unit::TestCase
|
|
93
94
|
@mq = POSIX_MQ.new(@path, :rw)
|
94
95
|
assert ! @mq.nonblock?
|
95
96
|
t0 = Time.now
|
96
|
-
maybe_timeout { @mq.receive
|
97
|
+
maybe_timeout { @mq.receive nil, interval } or return
|
97
98
|
elapsed = Time.now - t0
|
98
99
|
assert elapsed >= interval, elapsed.inspect
|
99
100
|
assert elapsed < 1.10, elapsed.inspect
|
@@ -151,7 +152,21 @@ class Test_POSIX_MQ < Test::Unit::TestCase
|
|
151
152
|
assert_equal true, mq.send("HI", 0)
|
152
153
|
assert_equal 1, mq.attr.curmsgs
|
153
154
|
assert_nil mq.close
|
154
|
-
|
155
|
+
|
156
|
+
r, w = IO.pipe
|
157
|
+
w.close
|
158
|
+
r.close
|
159
|
+
idempotent_close = begin
|
160
|
+
r.close
|
161
|
+
true
|
162
|
+
rescue IOError
|
163
|
+
false
|
164
|
+
end
|
165
|
+
if idempotent_close
|
166
|
+
2.times { assert_nil mq.close }
|
167
|
+
else
|
168
|
+
assert_raises(IOError) { mq.close }
|
169
|
+
end
|
155
170
|
end
|
156
171
|
assert @mq.closed?
|
157
172
|
@mq = nil
|
@@ -159,7 +174,7 @@ class Test_POSIX_MQ < Test::Unit::TestCase
|
|
159
174
|
end
|
160
175
|
|
161
176
|
def test_name
|
162
|
-
path =
|
177
|
+
path = @path.dup
|
163
178
|
path.freeze
|
164
179
|
@mq = POSIX_MQ.new @path, IO::CREAT|IO::WRONLY, 0666
|
165
180
|
assert_equal path, @mq.name
|
@@ -192,7 +207,7 @@ class Test_POSIX_MQ < Test::Unit::TestCase
|
|
192
207
|
end
|
193
208
|
|
194
209
|
def test_shift_buf
|
195
|
-
buf = ""
|
210
|
+
buf = "".dup
|
196
211
|
@mq = POSIX_MQ.new @path, IO::CREAT|IO::RDWR, 0666
|
197
212
|
@mq << "hello"
|
198
213
|
assert_equal "hello", @mq.shift(buf)
|
@@ -206,7 +221,7 @@ class Test_POSIX_MQ < Test::Unit::TestCase
|
|
206
221
|
end
|
207
222
|
|
208
223
|
def test_send_receive_buf
|
209
|
-
buf = ""
|
224
|
+
buf = "".dup
|
210
225
|
@mq = POSIX_MQ.new @path, IO::CREAT|IO::RDWR, 0666
|
211
226
|
assert_equal true, @mq.send("hello", 0)
|
212
227
|
assert_equal [ "hello", 0 ], @mq.receive(buf)
|
@@ -236,7 +251,7 @@ class Test_POSIX_MQ < Test::Unit::TestCase
|
|
236
251
|
end if POSIX_MQ.method_defined?(:to_io)
|
237
252
|
|
238
253
|
def test_for_fd
|
239
|
-
buf = ""
|
254
|
+
buf = "".dup
|
240
255
|
@mq = POSIX_MQ.new @path, IO::CREAT|IO::RDWR, 0666
|
241
256
|
@alt = POSIX_MQ.for_fd(@mq.to_io.to_i)
|
242
257
|
assert_equal true, @mq.send("hello", 0)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: posix_mq
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ruby POSIX MQ hackers
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-02-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: olddoc
|
@@ -90,7 +90,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
90
90
|
version: '0'
|
91
91
|
requirements: []
|
92
92
|
rubyforge_project:
|
93
|
-
rubygems_version: 2.
|
93
|
+
rubygems_version: 2.5.2
|
94
94
|
signing_key:
|
95
95
|
specification_version: 4
|
96
96
|
summary: POSIX Message Queues for Ruby
|