/*
 * call-seq:
 *    conn.setnonblocking() -> Boolean
 *
 * Returns +true+ if a command is busy, that is, if
 * PQgetResult would block. Otherwise returns +false+.
 */
static VALUE
pgconn_setnonblocking(self, state)
        VALUE self, state;
{
        int arg;
        VALUE error;
        PGconn *conn = get_pgconn(self);
        if(state == Qtrue)
                arg = 1;
        else if (state == Qfalse)
                arg = 0;
        else
                rb_raise(rb_eArgError, "Boolean value expected");

        if(PQsetnonblocking(conn, arg) == -1) {
                error = rb_exc_new2(rb_ePGError, PQerrorMessage(conn));
                rb_iv_set(error, "@connection", self);
                rb_exc_raise(error);
        }
        return Qnil;
}