AnyEvent-Timer-Cron
view release on metacpan or search on metacpan
lib/AnyEvent/Timer/Cron.pm view on Meta::CPAN
package AnyEvent::Timer::Cron;
use Moo;
our $VERSION = '0.002000';
$VERSION = eval $VERSION;
use AnyEvent;
use Scalar::Util qw(weaken);
use Safe::Isa;
use DateTime;
use DateTime::Event::Cron;
use namespace::clean;
has 'cb' => (is => 'ro', required => 1);
has 'time_zone' => (is => 'ro');
has '_cron' => (
is => 'ro',
required => 1,
lib/AnyEvent/Timer/Cron.pm view on Meta::CPAN
);
has '_timer' => (is => 'rw');
sub BUILD {
my $self = shift;
$self->create_timer;
}
sub create_timer {
my $self = shift;
weaken $self;
my $now = DateTime->from_epoch(epoch => AnyEvent->now);
$now->set_time_zone( $self->time_zone ) if $self->time_zone;
my $next = $self->next_event($now);
return
if not $next;
my $interval = $next->subtract_datetime_absolute($now)->in_units('nanoseconds') / 1_000_000_000;
$self->_timer(AnyEvent->timer(
after => $interval,
cb => sub {
$self->{cb}->();
( run in 0.388 second using v1.01-cache-2.11-cpan-65fba6d93b7 )