1 package OpenSRF::Application::Demo::Math;
2 use base qw/OpenSRF::Application/;
3 use OpenSRF::Application;
4 use OpenSRF::Utils::Logger qw/:level/;
5 use OpenSRF::DomainObject::oilsResponse;
6 #use OpenSRF::DomainObject::oilsPrimitive;
7 use OpenSRF::EX qw/:try/;
13 our $log = 'OpenSRF::Utils::Logger';
17 my $method_name = shift;
20 $log->debug( "Creating a client environment", DEBUG );
21 my $session = OpenSRF::AppSession->create(
22 "dbmath", sysname => 'math', secret => '12345' );
24 $log->debug( "Sending request to math server", INTERNAL );
26 my $method = OpenSRF::DomainObject::oilsMethod->new( method => $method_name );
28 $method->params( @params );
38 my $vv = $session->connect();
41 throw OpenSRF::EX::CRITICAL ("DBMath connect attempt timed out");
45 $req = $session->request( $method );
46 $resp = $req->recv(10);
48 } catch OpenSRF::DomainObject::oilsAuthException with {
53 if ( defined($resp) and $resp and $resp->class->isa('OpenSRF::DomainObject::oilsResult') ){
55 $log->debug( "Math server returned " . $resp->toString(1), INTERNAL );
62 if( $resp ) { $log->debug( "Math received \n".$resp->toString(), ERROR ); }
63 else{ $log->debug( "Math received empty value", ERROR ); }
66 throw OpenSRF::EX::ERROR ("Did not receive expected data from MathDB");
71 __PACKAGE__->register_method( method => 'add_1', api_name => 'add' );
76 return send_request( "add", @args );
79 __PACKAGE__->register_method( method => 'sub_1', api_name => 'sub' );
84 return send_request( "sub", @args );
87 __PACKAGE__->register_method( method => 'mult_1', api_name => 'mult' );
92 return send_request( "mult", @args );
95 __PACKAGE__->register_method( method => 'div_1', api_name => 'div' );
100 return send_request( "div", @args );