APNS-Agent
view release on metacpan or search on metacpan
lib/APNS/Agent.pm view on Meta::CPAN
certificate => $self->certificate,
private_key => $self->private_key,
sandbox => $self->sandbox,
on_error => sub {
my ($handle, $fatal, $message) = @_;
my $t; $t = AnyEvent->timer(
after => 0,
interval => 10,
cb => sub {
undef $t;
infof "event:reconnect";
$self->_connect_to_apns;
},
);
warnf "event:error\tfatal:$fatal\tmessage:$message";
},
on_connect => sub {
infof "event:on_connect";
$self->_disconnect_timer($self->_build_disconnect_timer);
lib/APNS/Agent.pm view on Meta::CPAN
interval => $interval,
cb => sub {
if ($self->{__apns} && (time - ($self->_last_sent_at || 0) > $interval)) {
delete $self->{__apns};
delete $self->{_disconnect_timer};
infof "event:close apns";
}
},
);
}
else { undef }
}
sub _sending {
my $self = shift;
$self->{_send_timer} ||= AnyEvent->timer(
after => $self->send_interval,
interval => $self->send_interval,
cb => sub {
my $msg = shift @{ $self->_queue };
lib/APNS/Agent.pm view on Meta::CPAN
local $@;
my $identifier;
eval {
$identifier = $self->_apns->send(pack("H*", $token) => {
aps => $payload,
});
};
if (my $err = $@) {
if ($err =~ m!Can't call method "push_write" on an undefined value!) {
# AnyEvent::APNS->handle is missing
delete $self->{_send_timer};
unshift @{ $self->_queue }, [$token, $payload];
$self->_connect_to_apns;
}
else {
die $err;
}
}
else {
t/01_basic.t view on Meta::CPAN
use AnyEvent;
use AnyEvent::Socket;
use JSON::XS;
use APNS::Agent;
my $cv = AnyEvent->condvar;
my $apns_port = empty_port;
tcp_server undef, $apns_port, sub {
my $fh = shift or die $!;
my $handle = AnyEvent::Handle->new(fh => $fh);
$handle->push_read( chunk => 1, sub {
is($_[1], pack('C', 1), 'command ok');
$handle->push_read( chunk => 4, sub {
is($_[1], pack('N', 1), 'identifier ok');
$handle->push_read( chunk => 4, sub {
( run in 2.262 seconds using v1.01-cache-2.11-cpan-d80b1682f3f )