AnyEvent-MySQL
view release on metacpan or search on metacpan
lib/AnyEvent/MySQL.pm view on Meta::CPAN
}
package AnyEvent::MySQL::db;
use strict;
use warnings;
use AE;
use AnyEvent::Socket;
use AnyEvent::Handle;
use Scalar::Util qw(weaken dualvar);
use Guard;
# connection state
use constant {
BUSY_CONN => 1,
IDLE_CONN => 2,
ZOMBIE_CONN => 3,
};
# transaction state
lib/AnyEvent/MySQL.pm view on Meta::CPAN
if( !$sock ) {
_report_error($dbh, 'connect', 2002, "Can't connect to local MySQL server through socket ''");
$cb->();
return;
}
$param->{host} = '/unix';
$param->{port} = $sock;
}
warn "Connecting to $param->{host}:$param->{port} ...";
weaken( my $wdbh = $dbh );
$dbh->{_}[CONNi] = tcp_connect($param->{host}, $param->{port}, sub {
my $fh = shift;
if( !$fh ) {
warn "Connect to $param->{host}:$param->{port} fail: $! retry later.";
undef $wdbh->{_}[CONNi];
_reconnect($wdbh);
return;
}
warn "Connected ($param->{host}:$param->{port})";
lib/AnyEvent/MySQL.pm view on Meta::CPAN
});
});
}
sub _process_task {
my $dbh = shift;
$dbh->{_}[CONN_STATEi] = IDLE_CONN;
$dbh->{_}[ERRi] = $AnyEvent::MySQL::err = undef;
$dbh->{_}[ERRSTRi] = $AnyEvent::MySQL::errstr = undef;
$dbh->{_}[FALLBACKi] = undef;
weaken( my $wdbh = $dbh );
if( !$dbh->{_}[HDi] ) {
_reconnect($dbh);
return;
}
my $task = shift @{$dbh->{_}[TASKi]};
return if( !$task );
my $next = sub {
lib/AnyEvent/MySQL.pm view on Meta::CPAN
the $sth in the $cb's arg will be undef.
So you should NOT rely on this for work flow controlling.
=cut
sub prepare {
my $dbh = $_[0];
my $sth = AnyEvent::MySQL::st->new(@_);
push @{$dbh->{_}[STi]}, $sth;
weaken($dbh->{_}[STi][-1]);
return $sth;
}
=head2 $dbh->begin_work([$cb->($rv)])
=cut
sub begin_work {
my $dbh = shift;
my $cb = shift || \&AnyEvent::MySQL::_empty_cb;
lib/AnyEvent/MySQL.pm view on Meta::CPAN
$next_act->();
});
}, $cb, 0]);
}
package AnyEvent::MySQL::st;
use strict;
use warnings;
use Scalar::Util qw(weaken);
use constant {
DBHi => 0,
IDi => 1,
PARAMi => 2,
FIELDi => 3,
STATEMENTi => 4,
};
=head2 $sth = AnyEvent::MySQL::st->new($dbh, $statement, [$cb->($sth)])
( run in 0.372 second using v1.01-cache-2.11-cpan-65fba6d93b7 )