/*
* call-seq:
* io -> IO
*
* Returns an +IO+ handle representing the connection to Spread. The
* Spread "mailbox" is actually a file descriptor; I'm not sure if
* this is documented anywhere, but it seems to be relied upon by a
* number of things.
*
* Note that it is *not* safe to do much with the IO object; in
* particular, reading or writing to it is certainly not wise. This
* method is intended primarily to allow the use of Kernel#select to
* wait for Spread activity.
*/
static VALUE
spconn_io(VALUE obj)
{
struct SpreadConnection *sp_conn;
Data_Get_Struct(obj, struct SpreadConnection, sp_conn);
if (NIL_P(sp_conn->rb_fd))
{
/* Construct a new wrapper */
VALUE fd = INT2NUM(sp_conn->mbox);
sp_conn->rb_fd = rb_class_new_instance(1, &fd, rb_cIO);
}
return sp_conn->rb_fd;
}