[[user-comments:osrf-devel:example-server|User Comments]]
===== Example Application =====
**Perl module and package implementing a math server.**
package MyMathServer;
use OpenSRF::Application;
use base 'OpenSRF::Application';
sub do_math {
my $self = shift; # instance of MyMathServer
my $client = shift; # instance of OpenSRF::AppRequest connected
# to the client
my $left_side = shift;
my $op = shift;
my $right_side = shift;
return eval "$left_side $op $right_side";
}
__PACKAGE__->register_method(
api_name => 'useless.do_math',
argc => 3,
method => 'do_math'
);
1;
**Another Perl module and package implementing a square-root server on top of the previous math server.**
package MySquareRootServer;
use OpenSRF::Application;
use base 'OpenSRF::Application';
sub sqrt_math {
my $self = shift; # instance of MySquareRootServer
my $client = shift; # instance of OpenSRF::AppRequest connected
# to the client
my $math_method = $self->method_lookup('useless.do_math');
my ($result) = $math_method->run( @_ );
return sqrt( $result );
}
__PACKAGE__->register_method(
api_name => 'simple.sqrt',
argc => 3,
method => 'sqrt_math'
);
1;