1 |
#!/usr/bin/perl |
2 |
|
3 |
use strict; |
4 |
|
5 |
use RPC::XML::Server (); |
6 |
use Data::Dumper qw( Dumper ); |
7 |
|
8 |
my $srv = RPC::XML::Server->new( |
9 |
port => 7777, |
10 |
); |
11 |
|
12 |
die $srv unless ref $srv; |
13 |
|
14 |
{ |
15 |
my $add = $srv->add_method( { |
16 |
name => "spoo", |
17 |
version => "0.01", |
18 |
hidden => undef, |
19 |
# signature => [ ['int', 'array'] ], |
20 |
signature => [ [ 'int' ], |
21 |
[ qw(string array) ], |
22 |
], |
23 |
code => \&spoo, |
24 |
} |
25 |
); |
26 |
die "add_method failed: $add\n" unless ref( $add ); |
27 |
} |
28 |
|
29 |
print STDERR "Starting server loop on ", $srv->url, " \n"; |
30 |
|
31 |
$srv->server_loop; |
32 |
|
33 |
exit 0; |
34 |
|
35 |
sub spoo { |
36 |
my $srv = shift; |
37 |
my $sig = join( ':', @{$srv->{signature}} ); |
38 |
|
39 |
print STDERR $srv->{method_name}, |
40 |
" called with sig $sig:\n\t", |
41 |
join( "\t\n", map { "$_:\n" . Dumper( $_[0] ) } 0..$#_ ), |
42 |
"\n"; |
43 |
|
44 |
$sig eq 'string:array' and return "OK " . join( ':', @{$_[0]} ); |
45 |
$sig eq 'int' and return 42; |
46 |
|
47 |
} |