1###############################################################################
2#
3#   Sub Name:       methodSignature
4#
5#   Description:    Retrieve the list of method signatures for the specified
6#                   methods.
7#
8#   Arguments:      NAME      IN/OUT  TYPE      DESCRIPTION
9#                   $srv      in      ref       Server object instance
10#                   $arg      in      ref/sc    Listref or scalar specification
11#
12#   Globals:        None.
13#
14#   Environment:    None.
15#
16#   Returns:        Success:    listref
17#                   Failure:    fault object
18#
19###############################################################################
20sub methodSignature
21{
22    use strict;
23
24    my $srv = shift;
25    my $arg = shift;
26
27    my $name = $srv->{method_name};
28    my @list = (ref $arg) ? @$arg : ($arg);
29    my (@results, $list, $method);
30
31    for (@list)
32    {
33        if (ref($method = $srv->get_method($_)) and (! $method->hidden))
34        {
35            push(@results,
36                 [ map { [ split(/ /) ] } @{$method->signature} ]);
37        }
38        else
39        {
40            return RPC::XML::fault->new(302, "$name: Method $_ unknown");
41        }
42    }
43
44    return (ref $arg) ? \@results : $results[0];
45}
46