---
name: "POE::Component::Schedule"
section: "3pm"
platform: "linux"
package: "libpoe-component-schedule-perl"
version: "0.95-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/POE::Component::Schedule"
---

# POE::Component::Schedule(3pm)

Schedule POE events using DateTime::Set iterators

## NAME

POE::Component::Schedule - Schedule POE events using DateTime::Set iterators

## SYNOPSIS

```
    use POE qw(Component::Schedule);
    use DateTime::Set;
    POE::Session->create(
        inline_states => {
            _start => sub {
                $_[HEAP]{sched} = POE::Component::Schedule->add(
                    $_[SESSION], Tick => DateTime::Set->from_recurrence(
                        after      => DateTime->now,
                        before     => DateTime->now->add(seconds => 3),
                        recurrence => sub {
                            return $_[0]->truncate( to => 'second' )->add( seconds => 1 )
                        },
                    ),
                );
            },
            Tick => sub {
                print 'tick ', scalar localtime, "\n";
            },
            remove_sched => sub {
                # Three ways to remove a schedule
                # The first one is only for API compatibility with POE::Component::Cron
                $_[HEAP]{sched}->delete;
                $_[HEAP]{sched} = undef;
                delete $_[HEAP]{sched};
            },
            _stop => sub {
                print "_stop\n";
            },
        },
    );
    POE::Kernel->run();
```

## DESCRIPTION

This component encapsulates a session that sends events to client sessions on a schedule as defined by a DateTime::Set iterator.

## POE::Component::Schedule METHODS

### spawn(Alias =\> *name*)

Start up the PoCo::Schedule background session with the given alias. Returns the back-end session handle.

No need to call this in normal use, `"add()"` and `"new()"` all crank one of these up if it is needed.

### add(*$session*, *$event\_name*, *$iterator*, *@event\_args*)

```
    my $sched = POE::Component::Schedule->add(
        $session,
        $event_name,
        $DateTime_Set_iterator,
        @event_args
    );
```

Add a set of events to the scheduler.

Returns a schedule handle. The event is automatically deleted when the handle is not referenced anymore.

### new(*$session*, *$event\_name*, *$iterator*, *@event\_args*)

`"new()"` is an alias for `"add()"`.

## SCHEDULE HANDLE METHODS

### *delete()*

Removes a schedule using the handle returned from `"add()"` or `"new()"`.

**DEPRECATED**: Schedules are now automatically deleted when they are not referenced anymore. So just setting the container variable to `"undef"` will delete the schedule.

## SEE ALSO

POE, DateTime::Set, POE::Component::Cron.

## SUPPORT

You can look for information at:

- •

  RT: CPAN's request tracker

  \<http://rt.cpan.org/NoAuth/Bugs.html?Dist=POE-Component-Schedule\>: post bug report there.

- •

  CPAN Ratings

  \<http://cpanratings.perl.org/p/POE-Component-Schedule\>: if you use this distribution, please add comments on your experience for other users.

- •

  Search CPAN

  \<http://search.cpan.org/dist/POE-Component-Schedule/\>

- •

  AnnoCPAN: Annotated CPAN documentation

  \<http://annocpan.org/dist/POE-Component-Schedule\>

## ACKNOWLEDGMENT & HISTORY

This module was a friendly fork of POE::Component::Cron to extract the generic parts and isolate the Cron specific code in order to reduce dependencies on other CPAN modules.

See \<https://rt.cpan.org/Ticket/Display.html?id=44442\>.

The original author of POE::Component::Cron is Chris Fedde.

POE::Component::Cron is now implemented as a class that inherits from POE::Component::Schedule.

Most of the POE::Component::Schedule internals have since been rewritten in 0.91\_01 and we have now a complete test suite.

## AUTHORS

- Olivier Mengue, "dolmen@cpan.org"

  - Chris Fedde, "cfedde@cpan.org"

  ## COPYRIGHT AND LICENSE

- Copyright X 2009-2010 Olivier Mengue.

  - Copyright X 2007-2008 Chris Fedde.

  This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.3 or, at your option, any later version of Perl 5 you may have available.
