POE::Request::Recall - encapsulates responses to POE::Request::Emit
# Note, this is not a complete program. # See the distribution's examples directory. my $rsp; $rsp->recall( method => "method_name", # invoke this method on Emit's creator args => { param_1 => 123, # with this parameter param_2 => "abc", # and this one, too }, );
POE::Request::Recall objects encapsulate responses to POE::Request::Emit objects. They are created internally by POE::Request::Emit's recall() method.
They are quite like POE::Request objects, except that they are not created with a "stage" parameter. Rather, the destination stage is the one that originally created the previous POE::Request::Emit object.
Consider this persistent dialogue between two stages:
Requester Servicer ----------------------- ------------------------- POE::Request->new(...) : (receives the request) : $req->emit(...) (receives the emit) $rsp->recall(...) : (receives the recall) : $req->return(...) (receives the return)
A stage requests a service from another stage. The servicer stage emits an intermediate response, which is handled by the requester. The requester uses recall() to send more information. The servicer stage handles the new message by calling return(), ending the dialogue.
POE::Request::Emit and POE::Request::Recall reuse the original POE::Request closure rather than create new ones. This allows each side of the dialog to store state that persists for the life of the dialog.
Create a new POE::Request::Recall object, specifying the "method" to call in the POE::Stage object on the other end of the dialog. An optional "args" parameter should contain a hashref of key/value pairs that are passed to the destination method as its $arg_ parameters.
See http://thirdlobe.com/projects/poe-stage/report/1 for known issues. See http://thirdlobe.com/projects/poe-stage/newticket 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::Emit, and probably POE::Stage.
Rocco Caputo <rcaputo@cpan.org>.
POE::Request::Recall 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.
To install POE::Stage, copy and paste the appropriate command in to your terminal.
cpanm
cpanm POE::Stage
CPAN shell
perl -MCPAN -e shell install POE::Stage
For more information on module installation, please visit the detailed CPAN module installation guide.