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 )