return result;
}
+ std::string get_namespace_out_dir() {
+ std::string outdir = get_out_dir();
+ std::list<std::string> dirs;
+ perl_namespace_dirs(program_, dirs);
+ std::list<std::string>::iterator it;
+ for (it = dirs.begin(); it != dirs.end(); it++) {
+ outdir += *it + "/";
+ }
+ return outdir;
+ }
+
private:
/**
* @param tenum The enumeration
*/
void t_perl_generator::generate_enum(t_enum* tenum) {
- f_types_ << "package "<<tenum->get_name()<<";"<<endl;
+ f_types_ << "package " << perl_namespace(program_) <<tenum->get_name()<<";"<<endl;
vector<t_enum_value*> constants = tenum->get_constants();
vector<t_enum_value*>::iterator c_iter;
}
//Create simple acessor methods
+ out << "use Class::Accessor;\n";
out << "use base('Class::Accessor');\n";
if (members.size() > 0) {
* @param tservice The service definition
*/
void t_perl_generator::generate_service(t_service* tservice) {
- string f_service_name = get_out_dir()+service_name_+".pm";
+ string f_service_name = get_namespace_out_dir()+service_name_+".pm";
f_service_.open(f_service_name.c_str());
f_service_ <<
f_service_ <<
"use " << perl_namespace(tservice->get_program()) << "Types;" << endl;
- if (tservice->get_extends() != NULL) {
+ t_service* extends_s = tservice->get_extends();
+ if (extends_s != NULL) {
f_service_ <<
- "use " << tservice->get_extends()->get_name() << ";" << endl;
+ "use " << perl_namespace(extends_s->get_program()) << extends_s->get_name() << ";" << endl;
}
f_service_ <<
string extends = "";
string extends_processor = "";
- if (tservice->get_extends() != NULL) {
- extends = tservice->get_extends()->get_name();
+ t_service* extends_s = tservice->get_extends();
+ if (extends_s != NULL) {
+ extends = perl_namespace(extends_s->get_program()) + extends_s->get_name();
extends_processor = "use base('" + extends + "Processor');";
}
// Generate the header portion
f_service_ <<
- "package " << service_name_ << "Processor;" << endl << extends_processor << endl;
+ "package " << perl_namespace(program_) << service_name_ << "Processor;" << endl << extends_processor << endl;
if (extends.empty()) {
* @param tservice The service to generate a header definition for
*/
void t_perl_generator::generate_service_interface(t_service* tservice) {
- string extends = "";
string extends_if = "";
- if (tservice->get_extends() != NULL) {
- extends = "use base('" + tservice->get_extends()->get_name() + "');";
- extends_if = "use base('" + tservice->get_extends()->get_name() + "If');";
+ t_service* extends_s = tservice->get_extends();
+ if (extends_s != NULL) {
+ extends_if = "use base('" + perl_namespace(extends_s->get_program()) + extends_s->get_name() + "If');";
}
f_service_ <<
- "package " << service_name_ << "If;"<<endl<<
+ "package " << perl_namespace(program_) << service_name_ << "If;"<<endl<<
extends_if<<endl;
void t_perl_generator::generate_service_rest(t_service* tservice) {
string extends = "";
string extends_if = "";
- if (tservice->get_extends() != NULL) {
- extends = tservice->get_extends()->get_name();
- extends_if = "use base('" + tservice->get_extends()->get_name() + "Rest');";
+ t_service* extends_s = tservice->get_extends();
+ if (extends_s != NULL) {
+ extends = extends_s->get_name();
+ extends_if = "use base('" + perl_namespace(extends_s->get_program()) + extends_s->get_name() + "Rest');";
}
f_service_ <<
- "package " << service_name_ << "Rest;"<<endl<<
+ "package " << perl_namespace(program_) << service_name_ << "Rest;"<<endl<<
extends_if << endl;
void t_perl_generator::generate_service_client(t_service* tservice) {
string extends = "";
string extends_client = "";
- if (tservice->get_extends() != NULL) {
- extends = tservice->get_extends()->get_name();
+ t_service* extends_s = tservice->get_extends();
+ if (extends_s != NULL) {
+ extends = perl_namespace(extends_s->get_program()) + extends_s->get_name();
extends_client = "use base('" + extends + "Client');";
}
f_service_ <<
- "package " << service_name_ << "Client;"<<endl;
+ "package " << perl_namespace(program_) << service_name_ << "Client;"<<endl;
f_service_ <<
extends_client << endl <<
- "use base('" << service_name_ << "If');" << endl;
+ "use base('" << perl_namespace(program_) << service_name_ << "If');" << endl;
// Constructor function
f_service_ << "sub new {"<<endl;
-#!/usr/bin/perl
+#!/usr/bin/env perl
require 5.6.0;
use strict;
use Time::HiRes qw(gettimeofday);
use lib '../../lib/perl/lib';
-use lib '../gen-perl';
+use lib 'gen-perl';
use Thrift;
use Thrift::BinaryProtocol;
use Thrift::Socket;
use Thrift::BufferedTransport;
-use ThriftTest;
+use ThriftTest::ThriftTest;
use ThriftTest::Types;
$|++;
my $bufferedSocket = new Thrift::BufferedTransport($socket, 1024, 1024);
my $transport = $bufferedSocket;
my $protocol = new Thrift::BinaryProtocol($transport);
-my $testClient = new ThriftTestClient($protocol);
+my $testClient = new ThriftTest::ThriftTestClient($protocol);
eval{
$transport->open();
# ENUM TEST
#
print("testEnum(ONE)");
-my $ret = $testClient->testEnum(Numberz::ONE);
+my $ret = $testClient->testEnum(ThriftTest::Numberz::ONE);
print(" = $ret\n");
print("testEnum(TWO)");
-$ret = $testClient->testEnum(Numberz::TWO);
+$ret = $testClient->testEnum(ThriftTest::Numberz::TWO);
print(" = $ret\n");
print("testEnum(THREE)");
-$ret = $testClient->testEnum(Numberz::THREE);
+$ret = $testClient->testEnum(ThriftTest::Numberz::THREE);
print(" = $ret\n");
print("testEnum(FIVE)");
-$ret = $testClient->testEnum(Numberz::FIVE);
+$ret = $testClient->testEnum(ThriftTest::Numberz::FIVE);
print(" = $ret\n");
print("testEnum(EIGHT)");
-$ret = $testClient->testEnum(Numberz::EIGHT);
+$ret = $testClient->testEnum(ThriftTest::Numberz::EIGHT);
print(" = $ret\n");
#
# INSANITY TEST
#
my $insane = new ThriftTest::Insanity();
-$insane->{userMap}->{Numberz::FIVE} = 5000;
+$insane->{userMap}->{ThriftTest::Numberz::FIVE} = 5000;
my $truck = new ThriftTest::Xtruct();
$truck->string_thing("Truck");
$truck->byte_thing(8);
-#!/usr/bin/perl
+#!/usr/bin/env perl
use strict;
use warnings;
use Thrift::Socket;
use Thrift::BufferedTransport;
-use SharedService;
-use Calculator;
+use shared::SharedService;
+use tutorial::Calculator;
use shared::Types;
use tutorial::Types;
my $socket = new Thrift::Socket('localhost',9090);
my $transport = new Thrift::BufferedTransport($socket,1024,1024);
my $protocol = new Thrift::BinaryProtocol($transport);
-my $client = new CalculatorClient($protocol);
+my $client = new tutorial::CalculatorClient($protocol);
eval{
my $work = new tutorial::Work();
- $work->op(Operation::DIVIDE);
+ $work->op(tutorial::Operation::DIVIDE);
$work->num1(1);
$work->num2(0);
warn "InvalidOperation: ".Dumper($@);
}
- $work->op(Operation::SUBTRACT);
+ $work->op(tutorial::Operation::SUBTRACT);
$work->num1(15);
$work->num2(10);
my $diff = $client->calculate(1, $work);