class Kgio::UNIXServer
Kgio::UNIXServer
should be used in place of the plain UNIXServer
when kgio_accept
and kgio_tryaccept
methods are needed.
Public Instance Methods
Initiates a blocking accept and returns a generic Kgio::Socket
object with the kgio_addr attribute set (to the value of Kgio::LOCALHOST) on success.
On Ruby implementations using native threads, this can use a blocking accept(2) (or accept4(2)) system call to avoid thundering herds.
An optional klass
argument may be specified to override the Kgio::Socket
-class on a successful return value.
An optional flags
argument may also be specified. flags
is a bitmask that may contain any combination of:
-
Kgio::SOCK_CLOEXEC - close-on-exec flag (enabled by default)
-
Kgio::SOCK_NONBLOCK - non-blocking flag (unimportant)
static VALUE unix_accept(int argc, VALUE *argv, VALUE self) { struct accept_args a; a.addr = NULL; a.addrlen = NULL; prepare_accept(&a, self, argc, argv); return my_accept(&a, 0); }
Initiates a non-blocking accept and returns a generic Kgio::Socket
object with the kgio_addr attribute set (to the value of Kgio::LOCALHOST) on success.
An optional klass
argument may be specified to override the Kgio::Socket
-class on a successful return value.
An optional flags
argument may also be specified. flags
is a bitmask that may contain any combination of:
-
Kgio::SOCK_CLOEXEC - close-on-exec flag (enabled by default)
-
Kgio::SOCK_NONBLOCK - non-blocking flag (unimportant)
static VALUE unix_tryaccept(int argc, VALUE *argv, VALUE self) { struct accept_args a; a.addr = NULL; a.addrlen = NULL; prepare_accept(&a, self, argc, argv); return my_accept(&a, 1); }