AnyEvent-FCP
view release on metacpan or search on metacpan
keepalive => 9 * 60,
name => time.rand.rand.rand, # lame
@_,
queue => [],
req => {},
prefix => "..:aefcpid:$rand:",
idseq => "a0",
}, $class;
{
Scalar::Util::weaken (my $self = $self);
$self->{kw} = AE::timer $self->{keepalive}, $self->{keepalive}, sub {
$self->{hdl}->push_write ("\n");
};
our $ENDMESSAGE = qr<\012(EndMessage|Data)\012>;
# these are declared here for performance reasons
my ($k, $v, $type);
my $rdata;
$self->{on_eof}($self);
} else {
$self->fatal ("EOF");
}
},
on_error => sub {
$self->fatal ($_[2]);
},
;
Scalar::Util::weaken ($self->{hdl}{fcp} = $self);
}
$self->send_msg (client_hello =>
name => $self->{name},
expected_version => "2.0",
);
$self
}
*{"$name\_"} = sub {
my ($ok, $err) = pop;
if (ARRAY:: eq ref $ok) {
($ok, $err) = @$ok;
} elsif (UNIVERSAL::isa $ok, AnyEvent::CondVar::) {
$err = sub { $ok->croak ($_[0]{extra_description}) };
} else {
my $bt = Carp::longmess "AnyEvent::FCP request $name";
Scalar::Util::weaken (my $self = $_[0]);
my $args = [@_]; shift @$args;
$err = sub {
if ($self->{on_failure}) {
$self->{on_failure}($self, $name, $args, $bt, $_[0]);
} else {
die "$_[0]{code_description} ($_[0]{extra_description})$bt";
}
};
}
( run in 0.337 second using v1.01-cache-2.11-cpan-65fba6d93b7 )