NAME

POE::Request::Recall - encapsulates responses to POE::Request::Emit

SYNOPSIS

# 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
	},
);

DESCRIPTION

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.

new PAIRS

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.

BUGS

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.

SEE ALSO

POE::Request, POE::Request::Emit, and probably POE::Stage.

AUTHORS

Rocco Caputo <rcaputo@cpan.org>.

LICENSE

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.