Bivio::Agent::Embed::Dispatcher
# Copyright (c) 2006-2009 bivio Software, Inc. All Rights Reserved.
# $Id$
package Bivio::Agent::Embed::Dispatcher;
use strict;
use Bivio::Base 'Agent.Dispatcher';
use Bivio::Agent::Embed::Request;
our($_SELF) = __PACKAGE__->initialize;
sub call_task {
shift;
my($req) = shift;
$req->internal_clear_current;
my($die) = $_SELF->process_request($req, @_);
$req->internal_set_current;
$die->throw
if $die;
return (
$req->get('Bivio::Agent::Embed::Reply'),
$req->delete('Bivio::Agent::Embed::Reply'),
)[0];
}
sub create_request {
shift;
return Bivio::Agent::Embed::Request->new(@_);
}
sub initialize {
return if $_SELF;
my($prev) = Bivio::Agent::Request->get_current;
$_SELF = shift->new;
$_SELF->SUPER::initialize;
Bivio::Agent::Embed::Request->clear_current
unless $prev;
return $_SELF
}
1;