/*
 * call-seq:
 *    conn.notifies()
 *
 * Returns an array of the unprocessed notifiers.
 * If there is no unprocessed notifier, it returns +nil+.
 */
static VALUE
pgconn_notifies(self)
    VALUE self;
{
    PGconn* conn = get_pgconn(self);
    PGnotify *notify;
    VALUE hash;
        VALUE sym_relname, sym_be_pid, sym_extra;
        VALUE relname, be_pid, extra;

        sym_relname = ID2SYM(rb_intern("relname"));
        sym_be_pid = ID2SYM(rb_intern("be_pid"));
        sym_extra = ID2SYM(rb_intern("extra"));

    notify = PQnotifies(conn);
    if (notify == NULL) {
        return Qnil;
    }
        
        hash = rb_hash_new();
        relname = rb_tainted_str_new2(notify->relname);
        be_pid = INT2NUM(notify->be_pid);
        extra = rb_tainted_str_new2(PGNOTIFY_EXTRA(notify));
        
    rb_hash_aset(hash, sym_relname, relname);
        rb_hash_aset(hash, sym_be_pid, be_pid);
        rb_hash_aset(hash, sym_extra, extra);

    PQfreemem(notify);
    return hash;
}