Class: MsgQ::EventMsg
- Inherits:
-
FFI::Struct
- Object
- FFI::Struct
- MsgQ::EventMsg
- Defined in:
- lib/rbtrace/msgq.rb
Constant Summary collapse
- BUF_SIZE =
RUBY_PLATFORM =~ /linux/ ? 256 : 120
- IPC_NOWAIT =
004000
Class Method Summary collapse
Class Method Details
.recv_cmd(q, block = true) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/rbtrace/msgq.rb', line 23 def self.recv_cmd(q, block=true) MsgQ.rb_enable_interrupt if RUBY_VERSION > '1.9' && RUBY_VERSION < '2.0' msg = EventMsg.new ret = MsgQ.msgrcv(q, msg, BUF_SIZE, 0, block ? 0 : IPC_NOWAIT) if ret == -1 if !block and [Errno::EAGAIN, Errno::ENOMSG].include?(FFI::LastError.exception) return nil end FFI::LastError.raise end msg[:buf].to_ptr.read_string_length(BUF_SIZE) ensure MsgQ.rb_disable_interrupt if RUBY_VERSION > '1.9' && RUBY_VERSION < '2.0' end |
.send_cmd(q, str) ⇒ Object
14 15 16 17 18 19 20 21 |
# File 'lib/rbtrace/msgq.rb', line 14 def self.send_cmd(q, str) msg = EventMsg.new msg[:mtype] = 1 msg[:buf].to_ptr.put_string(0, str) ret = MsgQ.msgsnd(q, msg, BUF_SIZE, 0) FFI::LastError.raise if ret == -1 end |