mirror of
https://github.com/mistergibson/gxg-web-client.git
synced 2026-08-15 11:34:29 -07:00
42 lines
882 B
Ruby
42 lines
882 B
Ruby
##
|
|
# Interface to the C errno integer.
|
|
|
|
module Errno
|
|
##
|
|
# Raises the appropriate SystemCallError exception with +additional+ as the
|
|
# message. Equivalent to MRI's rb_sys_fail().
|
|
#
|
|
# Unlike rb_sys_fail(), handle does not raise an exception if errno is 0.
|
|
|
|
def self.handle(additional = nil)
|
|
err = errno
|
|
return if err == 0
|
|
|
|
raise SystemCallError.new(additional, err)
|
|
end
|
|
|
|
def self.errno
|
|
FFI.errno
|
|
end
|
|
|
|
def self.eql?(code)
|
|
FFI.errno == code
|
|
end
|
|
|
|
def self.raise_waitreadable(message=nil)
|
|
raise IO::EAGAINWaitReadable, message
|
|
end
|
|
|
|
def self.raise_waitwritable(message=nil)
|
|
raise IO::EAGAINWaitWritable, message
|
|
end
|
|
|
|
def self.raise_eagain(message=nil)
|
|
raise_errno(message, Errno::EAGAIN::Errno)
|
|
end
|
|
|
|
def self.raise_errno(message, errno)
|
|
raise SystemCallError.new(message, errno)
|
|
end
|
|
private :raise_errno
|
|
end
|