POE::Request::Emit - encapsulates non-terminal replies to POE::Request


        # Note, this is not a complete program.
        # See the distribution's examples directory.

        sub do_something :Handler {
                my $req; # current request
                        type    => "pending",
                        args    => {
                                retry => $retry_number,


POE::Request::Emit objects are used to send intermediate responses to stages that have requested something. It's used internally by POE::Request's emit() method.

Emitted replies do not cancel the requests they respond to. A stage may therefore emit() multiple messages for a single request, finally calling return() or cancel() to end the request.

recall PAIRS

The stage receiving an emit()ted message may invoke recall() on that message. The recall() method sends another message back to the session that called emit(). Both emit() and recall() may be used multiple times to implement an ongoing, two-way dialogue between a requesting stage and the stage it's called.

Once constructed, the recall message is automatically sent to the source of the POE::Request::Emit object.

recall() creates and automatically sends a POE::Request::Recall object to the session that sent the POE::Request::Emit object. The PAIRS are named parameters, which will be received as arguments to the receiving stage's handler method.

See POE::Request::Recall for more discussion about recall messages.


See for known issues. See to report one.

POE::Stage is too young for production use. For example, its syntax is still changing. You probably know what you don't like, or what you need that isn't included, so consider fixing or adding that, or at least discussing it with the people on POE's mailing list or IRC channel. Your feedback and contributions will bring POE::Stage closer to usability. We appreciate it.


POE::Request, POE::Request::Upward, POE::Request::Recall, and probably POE::Stage.


Rocco Caputo <>.


POE::Request::Emit is Copyright 2005-2006 by Rocco Caputo. All rights are reserved. You may use, modify, and/or distribute this module under the same terms as Perl itself.