/* * call-seq: * disconnect -> nil * * Disconnect from Spread. Invoking methods like #receive and * #multicast on a disconnected Spread::Connection will throw * exceptions. You can reconnect to Spread (perhaps supplying * different connection parameters) using #connect. */ static VALUE spconn_disconnect(VALUE obj) { int n; struct SpreadConnection *sp; Data_Get_Struct(obj, struct SpreadConnection, sp); if ((n = SP_disconnect(sp->mbox)) < 0) raise_sp_error(n); sp->connected = false; /* * The mailbox fd is no longer valid, so get rid of the cached IO * wrapper for it (if any) */ sp->rb_fd = Qnil; return Qnil; }