Skip to content
Fetching contributors…
Cannot retrieve contributors at this time
63 lines (53 sloc) 1.95 KB
###############################################################################
#
# Sub Name: multicall
#
# Description: Execute multiple method calls in a single request
#
# Arguments: NAME IN/OUT TYPE DESCRIPTION
# $srv in ref Server object instance
# $list in ref List of struct's with the call
# data within.
#
# Globals: None.
#
# Environment: None.
#
# Returns: Success: listref
# Failure: fault object
#
###############################################################################
sub multicall
{
use strict;
my $srv = shift;
my $list = shift;
my ($call, $subname, $params, $result, @results);
my $name = $srv->{method_name};
for $call (@$list)
{
unless (ref($call) eq 'HASH')
{
return RPC::XML::fault->new(200,
"$name: One of the array elements " .
'passed in was not a struct');
}
return RPC::XML::fault->new(310,
"$name: Request was missing required " .
'"methodName" member')
unless ($subname = $call->{methodName});
return RPC::XML::fault->new(310,
"$name: Recursive calling of $name not " .
'allowed')
if ($subname eq $name);
$params = $call->{params} || [];
return RPC::XML::fault->new(200,
"$name: Request's value for \"params\" " .
'was not an array')
unless (ref($params) eq 'ARRAY');
$result = $srv->dispatch([ $subname, @$params ]);
return $result if $result->is_fault;
push @results, $result->value;
}
\@results;
}
Something went wrong with that request. Please try again.