class Uc::Mqueue
Attributes
max_msg[R]
msg_size[R]
name[R]
Public Class Methods
new(name, max_msg: 15, msg_size: 70)
click to toggle source
# File lib/uc/mqueue.rb, line 7 def initialize(name, max_msg: 15, msg_size: 70) @name = name @max_msg = max_msg @msg_size = msg_size end
Public Instance Methods
attr()
click to toggle source
# File lib/uc/mqueue.rb, line 28 def attr ::POSIX_MQ::Attr.new(0,max_msg,msg_size) end
clear()
click to toggle source
# File lib/uc/mqueue.rb, line 79 def clear nb_reader do |mq| loop { mq.receive } end rescue Errno::EAGAIN return end
create()
click to toggle source
# File lib/uc/mqueue.rb, line 13 def create ::POSIX_MQ.new("/#{name}", :rw, 0700, attr) end
destroy()
click to toggle source
# File lib/uc/mqueue.rb, line 22 def destroy ::POSIX_MQ.unlink("/#{name}") rescue return false end
nb_reader(&block)
click to toggle source
# File lib/uc/mqueue.rb, line 48 def nb_reader(&block) new_mq(:r, true, &block) end
nb_writer(&block)
click to toggle source
# File lib/uc/mqueue.rb, line 56 def nb_writer(&block) new_mq(IO::WRONLY, true, &block) end
new_mq(io_mode, nonblock) { |mq| ... }
click to toggle source
# File lib/uc/mqueue.rb, line 32 def new_mq(io_mode, nonblock, &block) mq = ::POSIX_MQ.new("/#{name}", io_mode) mq.nonblock = true if nonblock return mq if not block_given? begin yield mq ensure mq.close if mq end end
reader(&block)
click to toggle source
# File lib/uc/mqueue.rb, line 44 def reader(&block) new_mq(:r, false, &block) end
recreate()
click to toggle source
# File lib/uc/mqueue.rb, line 17 def recreate destroy create end
wait(event, timeout, output: false)
click to toggle source
# File lib/uc/mqueue.rb, line 60 def wait(event, timeout, output: false) event = event.to_s message = "" reader do |r| while message != event do r.receive(message, timeout) puts "> #{message}" if output end end return message end
watch(event, timeout: 30, recreate: true) { || ... }
click to toggle source
# File lib/uc/mqueue.rb, line 72 def watch(event, timeout: 30, recreate: true, &block) self.recreate if recreate clear yield wait(event, timeout, output: true) end
writer(&block)
click to toggle source
# File lib/uc/mqueue.rb, line 52 def writer(&block) new_mq(IO::WRONLY, false, &block) end