EV-Pg

 view release on metacpan or  search on metacpan

t/01_connect.t  view on Meta::CPAN

        },
        on_error => sub { diag "Error: $_[0]"; EV::break },
    );
    my $t = EV::timer(5, 0, sub { EV::break });
    EV::run;
    ok($connected, 'reset during connect: first connect succeeded');
    $pg->finish if $pg && $pg->is_connected;
}

# connect() from inside on_error croaks: the failed conn is still installed
# while the handler runs.  Timer-deferred connect (endpoint switching) works.
{
    my ($croak, $switched);
    my $pg;
    $pg = EV::Pg->new(
        conninfo => "$conninfo dbname=this_db_does_not_exist_xyz",
        on_connect => sub {
            $switched = 1;
            EV::break;
        },
        on_error => sub {

t/01_connect.t  view on Meta::CPAN

                $pg->finish;
                $pg->connect($conninfo);
            });
        },
    );
    my $t = EV::timer(10, 0, sub { EV::break });
    EV::run;
    $pg->finish if $pg && $pg->is_connected;
    like($croak, qr/previous connection failed/,
        'connect in on_error: actionable croak (not "already connected")');
    ok($switched, 'connect in on_error: timer-deferred connect switches endpoints');
}



( run in 2.397 seconds using v1.01-cache-2.11-cpan-cb04b646d8c )