|  | #!/usr/bin/env perl | 
|  |  | 
|  | # | 
|  | # Licensed to the Apache Software Foundation (ASF) under one | 
|  | # or more contributor license agreements. See the NOTICE file | 
|  | # distributed with this work for additional information | 
|  | # regarding copyright ownership. The ASF licenses this file | 
|  | # to you under the Apache License, Version 2.0 (the | 
|  | # "License"); you may not use this file except in compliance | 
|  | # with the License. You may obtain a copy of the License at | 
|  | # | 
|  | #   http://www.apache.org/licenses/LICENSE-2.0 | 
|  | # | 
|  | # Unless required by applicable law or agreed to in writing, | 
|  | # software distributed under the License is distributed on an | 
|  | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | 
|  | # KIND, either express or implied. See the License for the | 
|  | # specific language governing permissions and limitations | 
|  | # under the License. | 
|  | # | 
|  |  | 
|  | use strict; | 
|  | use warnings; | 
|  |  | 
|  | use lib '../../lib/perl/lib'; | 
|  | use lib '../gen-perl'; | 
|  |  | 
|  | use Thrift; | 
|  | use Thrift::BinaryProtocol; | 
|  | use Thrift::Socket; | 
|  | use Thrift::BufferedTransport; | 
|  |  | 
|  | use shared::SharedService; | 
|  | use tutorial::Calculator; | 
|  | use shared::Types; | 
|  | use tutorial::Types; | 
|  |  | 
|  | use Data::Dumper; | 
|  |  | 
|  | my $socket    = new Thrift::Socket('localhost',9090); | 
|  | my $transport = new Thrift::BufferedTransport($socket,1024,1024); | 
|  | my $protocol  = new Thrift::BinaryProtocol($transport); | 
|  | my $client    = new tutorial::CalculatorClient($protocol); | 
|  |  | 
|  |  | 
|  | eval{ | 
|  | $transport->open(); | 
|  |  | 
|  | $client->ping(); | 
|  | print "ping()\n"; | 
|  |  | 
|  |  | 
|  | my $sum = $client->add(1,1); | 
|  | print "1+1=$sum\n"; | 
|  |  | 
|  | my $work = new tutorial::Work(); | 
|  |  | 
|  | $work->op(tutorial::Operation::DIVIDE); | 
|  | $work->num1(1); | 
|  | $work->num2(0); | 
|  |  | 
|  | eval { | 
|  | $client->calculate(1, $work); | 
|  | print "Whoa! We can divide by zero?\n"; | 
|  | }; if($@) { | 
|  | warn "InvalidOperation: ".Dumper($@); | 
|  | } | 
|  |  | 
|  | $work->op(tutorial::Operation::SUBTRACT); | 
|  | $work->num1(15); | 
|  | $work->num2(10); | 
|  | my $diff = $client->calculate(1, $work); | 
|  | print "15-10=$diff\n"; | 
|  |  | 
|  | my $log = $client->getStruct(1); | 
|  | print "Log: $log->{value}\n"; | 
|  |  | 
|  | $transport->close(); | 
|  |  | 
|  | }; if($@){ | 
|  | warn(Dumper($@)); | 
|  | } |