about summary refs log tree commit homepage
diff options
context:
space:
mode:
-rw-r--r--lib/posix_mq.rb12
-rw-r--r--test/test_posix_mq.rb8
2 files changed, 20 insertions, 0 deletions
diff --git a/lib/posix_mq.rb b/lib/posix_mq.rb
index af31c16..86fa67e 100644
--- a/lib/posix_mq.rb
+++ b/lib/posix_mq.rb
@@ -66,6 +66,18 @@ class POSIX_MQ
     nil
   end if RUBY_PLATFORM =~ /linux/
 
+  # There's no point in ever duping a POSIX_MQ object.
+  # All send/receive operations are atomic and only one
+  # native thread may be notified at a time
+  def dup
+    self
+  end
+
+  # There's no point in ever cloning a POSIX_MQ object.
+  # All send/receive operations are atomic and only one
+  # native thread may be notified at a time
+  alias clone dup
+
 end
 
 require 'posix_mq_ext'
diff --git a/test/test_posix_mq.rb b/test/test_posix_mq.rb
index 42be59a..fa98a9c 100644
--- a/test/test_posix_mq.rb
+++ b/test/test_posix_mq.rb
@@ -27,6 +27,14 @@ class Test_POSIX_MQ < Test::Unit::TestCase
     assert @mq.closed?
   end
 
+  def test_dup_clone
+    @mq = POSIX_MQ.new(@path, :rw)
+    dup = @mq.dup
+    assert_equal @mq.object_id, dup.object_id
+    clone = @mq.clone
+    assert_equal @mq.object_id, clone.object_id
+  end
+
   def test_timed_receive
     interval = 0.01
     @mq = POSIX_MQ.new(@path, :rw)