]> git.evergreen-ils.org Git - working/Evergreen.git/blob - OpenSRF/src/perlmods/OpenSRF/Application/Demo/Math.pm
updating method lookup and registration in the demo
[working/Evergreen.git] / OpenSRF / src / perlmods / OpenSRF / Application / Demo / Math.pm
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/;
8 use strict;
9 use warnings;
10
11 sub DESTROY{}
12
13 our $log = 'OpenSRF::Utils::Logger';
14
15 sub send_request {
16
17         my $method_name = shift;
18         my @params = @_;
19
20         $log->debug( "Creating a client environment", DEBUG );
21         my $session = OpenSRF::AppSession->create( 
22                         "dbmath", sysname => 'math', secret => '12345' );
23
24         $log->debug( "Sending request to math server", INTERNAL );
25         
26         my $method = OpenSRF::DomainObject::oilsMethod->new( method => $method_name );
27         
28         $method->params( @params );
29         
30
31         my $req; 
32         my $resp;
33                 
34
35         try {
36
37                 for my $nn (0..1) {
38                         my $vv = $session->connect();
39                         if($vv) { last; }
40                         if( $nn and !$vv ) {
41                                 throw OpenSRF::EX::CRITICAL ("DBMath connect attempt timed out");
42                         }
43                 }
44
45                 $req = $session->request( $method );
46                 $resp = $req->recv(10); 
47
48         } catch OpenSRF::DomainObject::oilsAuthException with { 
49                 my $e = shift;
50                 $e->throw();
51         }; 
52
53         if ( defined($resp) and $resp and $resp->class->isa('OpenSRF::DomainObject::oilsResult') ){ 
54
55                 $log->debug( "Math server returned " . $resp->toString(1), INTERNAL );
56                 $req->finish;
57                 $session->finish;
58                 return $resp;
59
60         } else {
61
62                 if( $resp ) { $log->debug( "Math received \n".$resp->toString(), ERROR ); }
63                 else{ $log->debug( "Math received empty value", ERROR ); }
64                 $req->finish;
65                 $session->finish;
66                 throw OpenSRF::EX::ERROR ("Did not receive expected data from MathDB");
67
68         }
69 }
70
71 __PACKAGE__->register_method( method => 'add_1', api_name => 'add' );
72 sub add_1 {
73         my $self = shift;
74         my $client = shift;
75         my @args = @_;
76         return send_request( "add", @args );
77 }
78
79 __PACKAGE__->register_method( method => 'sub_1', api_name => 'sub' );
80 sub sub_1 {
81         my $self = shift;
82         my $client = shift;
83         my @args = @_;
84         return send_request( "sub", @args );
85 }
86
87 __PACKAGE__->register_method( method => 'mult_1', api_name => 'mult' );
88 sub mult_1 {
89         my $self = shift;
90         my $client = shift;
91         my @args = @_;
92         return send_request( "mult", @args );
93 }
94
95 __PACKAGE__->register_method( method => 'div_1', api_name => 'div' );
96 sub div_1 {
97         my $self = shift;
98         my $client = shift;
99         my @args = @_;
100         return send_request( "div", @args );
101 }
102
103
104 1;