incubator-blur-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From amccu...@apache.org
Subject [16/39] Massive changes to the thrift RPC defs, see mail list for details subject (Rows, Records, Session oh my).
Date Thu, 28 Feb 2013 03:07:38 GMT
http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/11f5141c/src/distribution/src/main/scripts/interface/gen-perl/Blur/Constants.pm
----------------------------------------------------------------------
diff --git a/src/distribution/src/main/scripts/interface/gen-perl/Blur/Constants.pm b/src/distribution/src/main/scripts/interface/gen-perl/Blur/Constants.pm
new file mode 100644
index 0000000..c8e01e3
--- /dev/null
+++ b/src/distribution/src/main/scripts/interface/gen-perl/Blur/Constants.pm
@@ -0,0 +1,13 @@
+#
+# Autogenerated by Thrift Compiler (0.9.0)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+package Blur::Constants;
+require 5.6.0;
+use strict;
+use warnings;
+use Thrift;
+
+
+1;

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/11f5141c/src/distribution/src/main/scripts/interface/gen-perl/Blur/DocumentGroupService.pm
----------------------------------------------------------------------
diff --git a/src/distribution/src/main/scripts/interface/gen-perl/Blur/DocumentGroupService.pm b/src/distribution/src/main/scripts/interface/gen-perl/Blur/DocumentGroupService.pm
new file mode 100644
index 0000000..28c1bd9
--- /dev/null
+++ b/src/distribution/src/main/scripts/interface/gen-perl/Blur/DocumentGroupService.pm
@@ -0,0 +1,753 @@
+#
+# Autogenerated by Thrift Compiler (0.9.0)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+require 5.6.0;
+use strict;
+use warnings;
+use Thrift;
+
+use Blur::Types;
+use Blur::DocumentService;
+
+# HELPER FUNCTIONS AND STRUCTURES
+
+package Blur::DocumentGroupService_searchGroups_args;
+use base qw(Class::Accessor);
+Blur::DocumentGroupService_searchGroups_args->mk_accessors( qw( table query ) );
+
+sub new {
+    my $classname = shift;
+    my $self      = {};
+    my $vals      = shift || {};
+    $self->{table} = undef;
+    $self->{query} = undef;
+    if (UNIVERSAL::isa($vals,'HASH')) {
+      if (defined $vals->{table}) {
+        $self->{table} = $vals->{table};
+      }
+      if (defined $vals->{query}) {
+        $self->{query} = $vals->{query};
+      }
+    }
+    return bless ($self, $classname);
+}
+
+sub getName {
+    return 'DocumentGroupService_searchGroups_args';
+  }
+
+sub read {
+    my ($self, $input) = @_;
+    my $xfer  = 0;
+    my $fname;
+    my $ftype = 0;
+    my $fid   = 0;
+    $xfer += $input->readStructBegin(\$fname);
+    while (1) 
+    {
+      $xfer += $input->readFieldBegin(\$fname, \$ftype, \$fid);
+      if ($ftype == TType::STOP) {
+        last;
+      }
+      SWITCH: for($fid)
+      {
+        /^1$/ && do{        if ($ftype == TType::STRING) {
+          $xfer += $input->readString(\$self->{table});
+        } else {
+          $xfer += $input->skip($ftype);
+        }
+        last; };
+        /^2$/ && do{        if ($ftype == TType::STRING) {
+          $xfer += $input->readString(\$self->{query});
+        } else {
+          $xfer += $input->skip($ftype);
+        }
+        last; };
+          $xfer += $input->skip($ftype);
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+sub write {
+    my ($self, $output) = @_;
+    my $xfer   = 0;
+    $xfer += $output->writeStructBegin('DocumentGroupService_searchGroups_args');
+    if (defined $self->{table}) {
+      $xfer += $output->writeFieldBegin('table', TType::STRING, 1);
+      $xfer += $output->writeString($self->{table});
+      $xfer += $output->writeFieldEnd();
+    }
+    if (defined $self->{query}) {
+      $xfer += $output->writeFieldBegin('query', TType::STRING, 2);
+      $xfer += $output->writeString($self->{query});
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+package Blur::DocumentGroupService_searchGroups_result;
+use base qw(Class::Accessor);
+Blur::DocumentGroupService_searchGroups_result->mk_accessors( qw( success ) );
+
+sub new {
+    my $classname = shift;
+    my $self      = {};
+    my $vals      = shift || {};
+    $self->{success} = undef;
+    $self->{ex} = undef;
+    if (UNIVERSAL::isa($vals,'HASH')) {
+      if (defined $vals->{success}) {
+        $self->{success} = $vals->{success};
+      }
+      if (defined $vals->{ex}) {
+        $self->{ex} = $vals->{ex};
+      }
+    }
+    return bless ($self, $classname);
+}
+
+sub getName {
+    return 'DocumentGroupService_searchGroups_result';
+  }
+
+sub read {
+    my ($self, $input) = @_;
+    my $xfer  = 0;
+    my $fname;
+    my $ftype = 0;
+    my $fid   = 0;
+    $xfer += $input->readStructBegin(\$fname);
+    while (1) 
+    {
+      $xfer += $input->readFieldBegin(\$fname, \$ftype, \$fid);
+      if ($ftype == TType::STOP) {
+        last;
+      }
+      SWITCH: for($fid)
+      {
+        /^0$/ && do{        if ($ftype == TType::STRUCT) {
+          $self->{success} = new Blur::DocumentGroupResult();
+          $xfer += $self->{success}->read($input);
+        } else {
+          $xfer += $input->skip($ftype);
+        }
+        last; };
+        /^1$/ && do{        if ($ftype == TType::STRUCT) {
+          $self->{ex} = new Blur::BlurException();
+          $xfer += $self->{ex}->read($input);
+        } else {
+          $xfer += $input->skip($ftype);
+        }
+        last; };
+          $xfer += $input->skip($ftype);
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+sub write {
+    my ($self, $output) = @_;
+    my $xfer   = 0;
+    $xfer += $output->writeStructBegin('DocumentGroupService_searchGroups_result');
+    if (defined $self->{success}) {
+      $xfer += $output->writeFieldBegin('success', TType::STRUCT, 0);
+      $xfer += $self->{success}->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if (defined $self->{ex}) {
+      $xfer += $output->writeFieldBegin('ex', TType::STRUCT, 1);
+      $xfer += $self->{ex}->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+package Blur::DocumentGroupService_updateGroup_args;
+use base qw(Class::Accessor);
+Blur::DocumentGroupService_updateGroup_args->mk_accessors( qw( table group ) );
+
+sub new {
+    my $classname = shift;
+    my $self      = {};
+    my $vals      = shift || {};
+    $self->{table} = undef;
+    $self->{group} = undef;
+    if (UNIVERSAL::isa($vals,'HASH')) {
+      if (defined $vals->{table}) {
+        $self->{table} = $vals->{table};
+      }
+      if (defined $vals->{group}) {
+        $self->{group} = $vals->{group};
+      }
+    }
+    return bless ($self, $classname);
+}
+
+sub getName {
+    return 'DocumentGroupService_updateGroup_args';
+  }
+
+sub read {
+    my ($self, $input) = @_;
+    my $xfer  = 0;
+    my $fname;
+    my $ftype = 0;
+    my $fid   = 0;
+    $xfer += $input->readStructBegin(\$fname);
+    while (1) 
+    {
+      $xfer += $input->readFieldBegin(\$fname, \$ftype, \$fid);
+      if ($ftype == TType::STOP) {
+        last;
+      }
+      SWITCH: for($fid)
+      {
+        /^1$/ && do{        if ($ftype == TType::STRING) {
+          $xfer += $input->readString(\$self->{table});
+        } else {
+          $xfer += $input->skip($ftype);
+        }
+        last; };
+        /^2$/ && do{        if ($ftype == TType::STRUCT) {
+          $self->{group} = new Blur::DocumentGroup();
+          $xfer += $self->{group}->read($input);
+        } else {
+          $xfer += $input->skip($ftype);
+        }
+        last; };
+          $xfer += $input->skip($ftype);
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+sub write {
+    my ($self, $output) = @_;
+    my $xfer   = 0;
+    $xfer += $output->writeStructBegin('DocumentGroupService_updateGroup_args');
+    if (defined $self->{table}) {
+      $xfer += $output->writeFieldBegin('table', TType::STRING, 1);
+      $xfer += $output->writeString($self->{table});
+      $xfer += $output->writeFieldEnd();
+    }
+    if (defined $self->{group}) {
+      $xfer += $output->writeFieldBegin('group', TType::STRUCT, 2);
+      $xfer += $self->{group}->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+package Blur::DocumentGroupService_updateGroup_result;
+use base qw(Class::Accessor);
+Blur::DocumentGroupService_updateGroup_result->mk_accessors( qw( ) );
+
+sub new {
+    my $classname = shift;
+    my $self      = {};
+    my $vals      = shift || {};
+    $self->{ex} = undef;
+    if (UNIVERSAL::isa($vals,'HASH')) {
+      if (defined $vals->{ex}) {
+        $self->{ex} = $vals->{ex};
+      }
+    }
+    return bless ($self, $classname);
+}
+
+sub getName {
+    return 'DocumentGroupService_updateGroup_result';
+  }
+
+sub read {
+    my ($self, $input) = @_;
+    my $xfer  = 0;
+    my $fname;
+    my $ftype = 0;
+    my $fid   = 0;
+    $xfer += $input->readStructBegin(\$fname);
+    while (1) 
+    {
+      $xfer += $input->readFieldBegin(\$fname, \$ftype, \$fid);
+      if ($ftype == TType::STOP) {
+        last;
+      }
+      SWITCH: for($fid)
+      {
+        /^1$/ && do{        if ($ftype == TType::STRUCT) {
+          $self->{ex} = new Blur::BlurException();
+          $xfer += $self->{ex}->read($input);
+        } else {
+          $xfer += $input->skip($ftype);
+        }
+        last; };
+          $xfer += $input->skip($ftype);
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+sub write {
+    my ($self, $output) = @_;
+    my $xfer   = 0;
+    $xfer += $output->writeStructBegin('DocumentGroupService_updateGroup_result');
+    if (defined $self->{ex}) {
+      $xfer += $output->writeFieldBegin('ex', TType::STRUCT, 1);
+      $xfer += $self->{ex}->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+package Blur::DocumentGroupService_deleteGroup_args;
+use base qw(Class::Accessor);
+Blur::DocumentGroupService_deleteGroup_args->mk_accessors( qw( table id ) );
+
+sub new {
+    my $classname = shift;
+    my $self      = {};
+    my $vals      = shift || {};
+    $self->{table} = undef;
+    $self->{id} = undef;
+    if (UNIVERSAL::isa($vals,'HASH')) {
+      if (defined $vals->{table}) {
+        $self->{table} = $vals->{table};
+      }
+      if (defined $vals->{id}) {
+        $self->{id} = $vals->{id};
+      }
+    }
+    return bless ($self, $classname);
+}
+
+sub getName {
+    return 'DocumentGroupService_deleteGroup_args';
+  }
+
+sub read {
+    my ($self, $input) = @_;
+    my $xfer  = 0;
+    my $fname;
+    my $ftype = 0;
+    my $fid   = 0;
+    $xfer += $input->readStructBegin(\$fname);
+    while (1) 
+    {
+      $xfer += $input->readFieldBegin(\$fname, \$ftype, \$fid);
+      if ($ftype == TType::STOP) {
+        last;
+      }
+      SWITCH: for($fid)
+      {
+        /^1$/ && do{        if ($ftype == TType::STRING) {
+          $xfer += $input->readString(\$self->{table});
+        } else {
+          $xfer += $input->skip($ftype);
+        }
+        last; };
+        /^2$/ && do{        if ($ftype == TType::STRING) {
+          $xfer += $input->readString(\$self->{id});
+        } else {
+          $xfer += $input->skip($ftype);
+        }
+        last; };
+          $xfer += $input->skip($ftype);
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+sub write {
+    my ($self, $output) = @_;
+    my $xfer   = 0;
+    $xfer += $output->writeStructBegin('DocumentGroupService_deleteGroup_args');
+    if (defined $self->{table}) {
+      $xfer += $output->writeFieldBegin('table', TType::STRING, 1);
+      $xfer += $output->writeString($self->{table});
+      $xfer += $output->writeFieldEnd();
+    }
+    if (defined $self->{id}) {
+      $xfer += $output->writeFieldBegin('id', TType::STRING, 2);
+      $xfer += $output->writeString($self->{id});
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+package Blur::DocumentGroupService_deleteGroup_result;
+use base qw(Class::Accessor);
+Blur::DocumentGroupService_deleteGroup_result->mk_accessors( qw( ) );
+
+sub new {
+    my $classname = shift;
+    my $self      = {};
+    my $vals      = shift || {};
+    $self->{ex} = undef;
+    if (UNIVERSAL::isa($vals,'HASH')) {
+      if (defined $vals->{ex}) {
+        $self->{ex} = $vals->{ex};
+      }
+    }
+    return bless ($self, $classname);
+}
+
+sub getName {
+    return 'DocumentGroupService_deleteGroup_result';
+  }
+
+sub read {
+    my ($self, $input) = @_;
+    my $xfer  = 0;
+    my $fname;
+    my $ftype = 0;
+    my $fid   = 0;
+    $xfer += $input->readStructBegin(\$fname);
+    while (1) 
+    {
+      $xfer += $input->readFieldBegin(\$fname, \$ftype, \$fid);
+      if ($ftype == TType::STOP) {
+        last;
+      }
+      SWITCH: for($fid)
+      {
+        /^1$/ && do{        if ($ftype == TType::STRUCT) {
+          $self->{ex} = new Blur::BlurException();
+          $xfer += $self->{ex}->read($input);
+        } else {
+          $xfer += $input->skip($ftype);
+        }
+        last; };
+          $xfer += $input->skip($ftype);
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+sub write {
+    my ($self, $output) = @_;
+    my $xfer   = 0;
+    $xfer += $output->writeStructBegin('DocumentGroupService_deleteGroup_result');
+    if (defined $self->{ex}) {
+      $xfer += $output->writeFieldBegin('ex', TType::STRUCT, 1);
+      $xfer += $self->{ex}->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+package Blur::DocumentGroupServiceIf;
+
+use strict;
+use base qw(Blur::DocumentServiceIf);
+
+sub searchGroups{
+  my $self = shift;
+  my $table = shift;
+  my $query = shift;
+
+  die 'implement interface';
+}
+
+sub updateGroup{
+  my $self = shift;
+  my $table = shift;
+  my $group = shift;
+
+  die 'implement interface';
+}
+
+sub deleteGroup{
+  my $self = shift;
+  my $table = shift;
+  my $id = shift;
+
+  die 'implement interface';
+}
+
+package Blur::DocumentGroupServiceRest;
+
+use strict;
+use base qw(Blur::DocumentServiceRest);
+
+sub searchGroups{
+    my ($self, $request) = @_;
+
+    my $table = ($request->{'table'}) ? $request->{'table'} : undef;
+    my $query = ($request->{'query'}) ? $request->{'query'} : undef;
+    return $self->{impl}->searchGroups($table, $query);
+  }
+
+sub updateGroup{
+    my ($self, $request) = @_;
+
+    my $table = ($request->{'table'}) ? $request->{'table'} : undef;
+    my $group = ($request->{'group'}) ? $request->{'group'} : undef;
+    return $self->{impl}->updateGroup($table, $group);
+  }
+
+sub deleteGroup{
+    my ($self, $request) = @_;
+
+    my $table = ($request->{'table'}) ? $request->{'table'} : undef;
+    my $id = ($request->{'id'}) ? $request->{'id'} : undef;
+    return $self->{impl}->deleteGroup($table, $id);
+  }
+
+package Blur::DocumentGroupServiceClient;
+
+use base qw(Blur::DocumentServiceClient);
+use base qw(Blur::DocumentGroupServiceIf);
+sub new {
+    my ($classname, $input, $output) = @_;
+    my $self      = {};
+    $self = $classname->SUPER::new($input, $output);
+    return bless($self,$classname);
+}
+
+sub searchGroups{
+  my $self = shift;
+  my $table = shift;
+  my $query = shift;
+
+        $self->send_searchGroups($table, $query);
+    return $self->recv_searchGroups();
+}
+
+sub send_searchGroups{
+  my $self = shift;
+  my $table = shift;
+  my $query = shift;
+
+    $self->{output}->writeMessageBegin('searchGroups', TMessageType::CALL, $self->{seqid});
+    my $args = new Blur::DocumentGroupService_searchGroups_args();
+    $args->{table} = $table;
+    $args->{query} = $query;
+    $args->write($self->{output});
+    $self->{output}->writeMessageEnd();
+    $self->{output}->getTransport()->flush();
+}
+
+sub recv_searchGroups{
+  my $self = shift;
+
+    my $rseqid = 0;
+    my $fname;
+    my $mtype = 0;
+
+    $self->{input}->readMessageBegin(\$fname, \$mtype, \$rseqid);
+    if ($mtype == TMessageType::EXCEPTION) {
+      my $x = new TApplicationException();
+      $x->read($self->{input});
+      $self->{input}->readMessageEnd();
+      die $x;
+    }
+    my $result = new Blur::DocumentGroupService_searchGroups_result();
+    $result->read($self->{input});
+    $self->{input}->readMessageEnd();
+
+    if (defined $result->{success} ) {
+      return $result->{success};
+    }
+    if (defined $result->{ex}) {
+      die $result->{ex};
+    }
+    die "searchGroups failed: unknown result";
+}
+sub updateGroup{
+  my $self = shift;
+  my $table = shift;
+  my $group = shift;
+
+        $self->send_updateGroup($table, $group);
+    $self->recv_updateGroup();
+}
+
+sub send_updateGroup{
+  my $self = shift;
+  my $table = shift;
+  my $group = shift;
+
+    $self->{output}->writeMessageBegin('updateGroup', TMessageType::CALL, $self->{seqid});
+    my $args = new Blur::DocumentGroupService_updateGroup_args();
+    $args->{table} = $table;
+    $args->{group} = $group;
+    $args->write($self->{output});
+    $self->{output}->writeMessageEnd();
+    $self->{output}->getTransport()->flush();
+}
+
+sub recv_updateGroup{
+  my $self = shift;
+
+    my $rseqid = 0;
+    my $fname;
+    my $mtype = 0;
+
+    $self->{input}->readMessageBegin(\$fname, \$mtype, \$rseqid);
+    if ($mtype == TMessageType::EXCEPTION) {
+      my $x = new TApplicationException();
+      $x->read($self->{input});
+      $self->{input}->readMessageEnd();
+      die $x;
+    }
+    my $result = new Blur::DocumentGroupService_updateGroup_result();
+    $result->read($self->{input});
+    $self->{input}->readMessageEnd();
+
+    if (defined $result->{ex}) {
+      die $result->{ex};
+    }
+    return;
+}
+sub deleteGroup{
+  my $self = shift;
+  my $table = shift;
+  my $id = shift;
+
+        $self->send_deleteGroup($table, $id);
+    $self->recv_deleteGroup();
+}
+
+sub send_deleteGroup{
+  my $self = shift;
+  my $table = shift;
+  my $id = shift;
+
+    $self->{output}->writeMessageBegin('deleteGroup', TMessageType::CALL, $self->{seqid});
+    my $args = new Blur::DocumentGroupService_deleteGroup_args();
+    $args->{table} = $table;
+    $args->{id} = $id;
+    $args->write($self->{output});
+    $self->{output}->writeMessageEnd();
+    $self->{output}->getTransport()->flush();
+}
+
+sub recv_deleteGroup{
+  my $self = shift;
+
+    my $rseqid = 0;
+    my $fname;
+    my $mtype = 0;
+
+    $self->{input}->readMessageBegin(\$fname, \$mtype, \$rseqid);
+    if ($mtype == TMessageType::EXCEPTION) {
+      my $x = new TApplicationException();
+      $x->read($self->{input});
+      $self->{input}->readMessageEnd();
+      die $x;
+    }
+    my $result = new Blur::DocumentGroupService_deleteGroup_result();
+    $result->read($self->{input});
+    $self->{input}->readMessageEnd();
+
+    if (defined $result->{ex}) {
+      die $result->{ex};
+    }
+    return;
+}
+package Blur::DocumentGroupServiceProcessor;
+
+use strict;
+use base qw(Blur::DocumentServiceProcessor);
+
+sub process {
+      my ($self, $input, $output) = @_;
+      my $rseqid = 0;
+      my $fname  = undef;
+      my $mtype  = 0;
+
+      $input->readMessageBegin(\$fname, \$mtype, \$rseqid);
+      my $methodname = 'process_'.$fname;
+      if (!$self->can($methodname)) {
+        $input->skip(TType::STRUCT);
+        $input->readMessageEnd();
+        my $x = new TApplicationException('Function '.$fname.' not implemented.', TApplicationException::UNKNOWN_METHOD);
+        $output->writeMessageBegin($fname, TMessageType::EXCEPTION, $rseqid);
+        $x->write($output);
+        $output->writeMessageEnd();
+        $output->getTransport()->flush();
+        return;
+      }
+      $self->$methodname($rseqid, $input, $output);
+      return 1;
+}
+
+sub process_searchGroups {
+      my ($self, $seqid, $input, $output) = @_;
+      my $args = new Blur::DocumentGroupService_searchGroups_args();
+      $args->read($input);
+      $input->readMessageEnd();
+      my $result = new Blur::DocumentGroupService_searchGroups_result();
+      eval {
+        $result->{success} = $self->{handler}->searchGroups($args->table, $args->query);
+      }; if( UNIVERSAL::isa($@,'Blur::BlurException') ){ 
+        $result->{ex} = $@;
+      }
+      $output->writeMessageBegin('searchGroups', TMessageType::REPLY, $seqid);
+      $result->write($output);
+      $output->writeMessageEnd();
+      $output->getTransport()->flush();
+}
+
+sub process_updateGroup {
+      my ($self, $seqid, $input, $output) = @_;
+      my $args = new Blur::DocumentGroupService_updateGroup_args();
+      $args->read($input);
+      $input->readMessageEnd();
+      my $result = new Blur::DocumentGroupService_updateGroup_result();
+      eval {
+        $self->{handler}->updateGroup($args->table, $args->group);
+      }; if( UNIVERSAL::isa($@,'Blur::BlurException') ){ 
+        $result->{ex} = $@;
+      }
+      $output->writeMessageBegin('updateGroup', TMessageType::REPLY, $seqid);
+      $result->write($output);
+      $output->writeMessageEnd();
+      $output->getTransport()->flush();
+}
+
+sub process_deleteGroup {
+      my ($self, $seqid, $input, $output) = @_;
+      my $args = new Blur::DocumentGroupService_deleteGroup_args();
+      $args->read($input);
+      $input->readMessageEnd();
+      my $result = new Blur::DocumentGroupService_deleteGroup_result();
+      eval {
+        $self->{handler}->deleteGroup($args->table, $args->id);
+      }; if( UNIVERSAL::isa($@,'Blur::BlurException') ){ 
+        $result->{ex} = $@;
+      }
+      $output->writeMessageBegin('deleteGroup', TMessageType::REPLY, $seqid);
+      $result->write($output);
+      $output->writeMessageEnd();
+      $output->getTransport()->flush();
+}
+
+1;

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/11f5141c/src/distribution/src/main/scripts/interface/gen-perl/Blur/DocumentService.pm
----------------------------------------------------------------------
diff --git a/src/distribution/src/main/scripts/interface/gen-perl/Blur/DocumentService.pm b/src/distribution/src/main/scripts/interface/gen-perl/Blur/DocumentService.pm
new file mode 100644
index 0000000..e3f753b
--- /dev/null
+++ b/src/distribution/src/main/scripts/interface/gen-perl/Blur/DocumentService.pm
@@ -0,0 +1,768 @@
+#
+# Autogenerated by Thrift Compiler (0.9.0)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+require 5.6.0;
+use strict;
+use warnings;
+use Thrift;
+
+use Blur::Types;
+
+# HELPER FUNCTIONS AND STRUCTURES
+
+package Blur::DocumentService_searchRecords_args;
+use base qw(Class::Accessor);
+Blur::DocumentService_searchRecords_args->mk_accessors( qw( table query ) );
+
+sub new {
+  my $classname = shift;
+  my $self      = {};
+  my $vals      = shift || {};
+  $self->{table} = undef;
+  $self->{query} = undef;
+  if (UNIVERSAL::isa($vals,'HASH')) {
+    if (defined $vals->{table}) {
+      $self->{table} = $vals->{table};
+    }
+    if (defined $vals->{query}) {
+      $self->{query} = $vals->{query};
+    }
+  }
+  return bless ($self, $classname);
+}
+
+sub getName {
+  return 'DocumentService_searchRecords_args';
+}
+
+sub read {
+  my ($self, $input) = @_;
+  my $xfer  = 0;
+  my $fname;
+  my $ftype = 0;
+  my $fid   = 0;
+  $xfer += $input->readStructBegin(\$fname);
+  while (1) 
+  {
+    $xfer += $input->readFieldBegin(\$fname, \$ftype, \$fid);
+    if ($ftype == TType::STOP) {
+      last;
+    }
+    SWITCH: for($fid)
+    {
+      /^1$/ && do{      if ($ftype == TType::STRING) {
+        $xfer += $input->readString(\$self->{table});
+      } else {
+        $xfer += $input->skip($ftype);
+      }
+      last; };
+      /^2$/ && do{      if ($ftype == TType::STRING) {
+        $xfer += $input->readString(\$self->{query});
+      } else {
+        $xfer += $input->skip($ftype);
+      }
+      last; };
+        $xfer += $input->skip($ftype);
+    }
+    $xfer += $input->readFieldEnd();
+  }
+  $xfer += $input->readStructEnd();
+  return $xfer;
+}
+
+sub write {
+  my ($self, $output) = @_;
+  my $xfer   = 0;
+  $xfer += $output->writeStructBegin('DocumentService_searchRecords_args');
+  if (defined $self->{table}) {
+    $xfer += $output->writeFieldBegin('table', TType::STRING, 1);
+    $xfer += $output->writeString($self->{table});
+    $xfer += $output->writeFieldEnd();
+  }
+  if (defined $self->{query}) {
+    $xfer += $output->writeFieldBegin('query', TType::STRING, 2);
+    $xfer += $output->writeString($self->{query});
+    $xfer += $output->writeFieldEnd();
+  }
+  $xfer += $output->writeFieldStop();
+  $xfer += $output->writeStructEnd();
+  return $xfer;
+}
+
+package Blur::DocumentService_searchRecords_result;
+use base qw(Class::Accessor);
+Blur::DocumentService_searchRecords_result->mk_accessors( qw( success ) );
+
+sub new {
+  my $classname = shift;
+  my $self      = {};
+  my $vals      = shift || {};
+  $self->{success} = undef;
+  $self->{ex} = undef;
+  if (UNIVERSAL::isa($vals,'HASH')) {
+    if (defined $vals->{success}) {
+      $self->{success} = $vals->{success};
+    }
+    if (defined $vals->{ex}) {
+      $self->{ex} = $vals->{ex};
+    }
+  }
+  return bless ($self, $classname);
+}
+
+sub getName {
+  return 'DocumentService_searchRecords_result';
+}
+
+sub read {
+  my ($self, $input) = @_;
+  my $xfer  = 0;
+  my $fname;
+  my $ftype = 0;
+  my $fid   = 0;
+  $xfer += $input->readStructBegin(\$fname);
+  while (1) 
+  {
+    $xfer += $input->readFieldBegin(\$fname, \$ftype, \$fid);
+    if ($ftype == TType::STOP) {
+      last;
+    }
+    SWITCH: for($fid)
+    {
+      /^0$/ && do{      if ($ftype == TType::STRUCT) {
+        $self->{success} = new Blur::DocumentResult();
+        $xfer += $self->{success}->read($input);
+      } else {
+        $xfer += $input->skip($ftype);
+      }
+      last; };
+      /^1$/ && do{      if ($ftype == TType::STRUCT) {
+        $self->{ex} = new Blur::BlurException();
+        $xfer += $self->{ex}->read($input);
+      } else {
+        $xfer += $input->skip($ftype);
+      }
+      last; };
+        $xfer += $input->skip($ftype);
+    }
+    $xfer += $input->readFieldEnd();
+  }
+  $xfer += $input->readStructEnd();
+  return $xfer;
+}
+
+sub write {
+  my ($self, $output) = @_;
+  my $xfer   = 0;
+  $xfer += $output->writeStructBegin('DocumentService_searchRecords_result');
+  if (defined $self->{success}) {
+    $xfer += $output->writeFieldBegin('success', TType::STRUCT, 0);
+    $xfer += $self->{success}->write($output);
+    $xfer += $output->writeFieldEnd();
+  }
+  if (defined $self->{ex}) {
+    $xfer += $output->writeFieldBegin('ex', TType::STRUCT, 1);
+    $xfer += $self->{ex}->write($output);
+    $xfer += $output->writeFieldEnd();
+  }
+  $xfer += $output->writeFieldStop();
+  $xfer += $output->writeStructEnd();
+  return $xfer;
+}
+
+package Blur::DocumentService_updateRecord_args;
+use base qw(Class::Accessor);
+Blur::DocumentService_updateRecord_args->mk_accessors( qw( table record ) );
+
+sub new {
+  my $classname = shift;
+  my $self      = {};
+  my $vals      = shift || {};
+  $self->{table} = undef;
+  $self->{record} = undef;
+  if (UNIVERSAL::isa($vals,'HASH')) {
+    if (defined $vals->{table}) {
+      $self->{table} = $vals->{table};
+    }
+    if (defined $vals->{record}) {
+      $self->{record} = $vals->{record};
+    }
+  }
+  return bless ($self, $classname);
+}
+
+sub getName {
+  return 'DocumentService_updateRecord_args';
+}
+
+sub read {
+  my ($self, $input) = @_;
+  my $xfer  = 0;
+  my $fname;
+  my $ftype = 0;
+  my $fid   = 0;
+  $xfer += $input->readStructBegin(\$fname);
+  while (1) 
+  {
+    $xfer += $input->readFieldBegin(\$fname, \$ftype, \$fid);
+    if ($ftype == TType::STOP) {
+      last;
+    }
+    SWITCH: for($fid)
+    {
+      /^1$/ && do{      if ($ftype == TType::STRING) {
+        $xfer += $input->readString(\$self->{table});
+      } else {
+        $xfer += $input->skip($ftype);
+      }
+      last; };
+      /^2$/ && do{      if ($ftype == TType::STRUCT) {
+        $self->{record} = new Blur::DocumentRecord();
+        $xfer += $self->{record}->read($input);
+      } else {
+        $xfer += $input->skip($ftype);
+      }
+      last; };
+        $xfer += $input->skip($ftype);
+    }
+    $xfer += $input->readFieldEnd();
+  }
+  $xfer += $input->readStructEnd();
+  return $xfer;
+}
+
+sub write {
+  my ($self, $output) = @_;
+  my $xfer   = 0;
+  $xfer += $output->writeStructBegin('DocumentService_updateRecord_args');
+  if (defined $self->{table}) {
+    $xfer += $output->writeFieldBegin('table', TType::STRING, 1);
+    $xfer += $output->writeString($self->{table});
+    $xfer += $output->writeFieldEnd();
+  }
+  if (defined $self->{record}) {
+    $xfer += $output->writeFieldBegin('record', TType::STRUCT, 2);
+    $xfer += $self->{record}->write($output);
+    $xfer += $output->writeFieldEnd();
+  }
+  $xfer += $output->writeFieldStop();
+  $xfer += $output->writeStructEnd();
+  return $xfer;
+}
+
+package Blur::DocumentService_updateRecord_result;
+use base qw(Class::Accessor);
+Blur::DocumentService_updateRecord_result->mk_accessors( qw( ) );
+
+sub new {
+  my $classname = shift;
+  my $self      = {};
+  my $vals      = shift || {};
+  $self->{ex} = undef;
+  if (UNIVERSAL::isa($vals,'HASH')) {
+    if (defined $vals->{ex}) {
+      $self->{ex} = $vals->{ex};
+    }
+  }
+  return bless ($self, $classname);
+}
+
+sub getName {
+  return 'DocumentService_updateRecord_result';
+}
+
+sub read {
+  my ($self, $input) = @_;
+  my $xfer  = 0;
+  my $fname;
+  my $ftype = 0;
+  my $fid   = 0;
+  $xfer += $input->readStructBegin(\$fname);
+  while (1) 
+  {
+    $xfer += $input->readFieldBegin(\$fname, \$ftype, \$fid);
+    if ($ftype == TType::STOP) {
+      last;
+    }
+    SWITCH: for($fid)
+    {
+      /^1$/ && do{      if ($ftype == TType::STRUCT) {
+        $self->{ex} = new Blur::BlurException();
+        $xfer += $self->{ex}->read($input);
+      } else {
+        $xfer += $input->skip($ftype);
+      }
+      last; };
+        $xfer += $input->skip($ftype);
+    }
+    $xfer += $input->readFieldEnd();
+  }
+  $xfer += $input->readStructEnd();
+  return $xfer;
+}
+
+sub write {
+  my ($self, $output) = @_;
+  my $xfer   = 0;
+  $xfer += $output->writeStructBegin('DocumentService_updateRecord_result');
+  if (defined $self->{ex}) {
+    $xfer += $output->writeFieldBegin('ex', TType::STRUCT, 1);
+    $xfer += $self->{ex}->write($output);
+    $xfer += $output->writeFieldEnd();
+  }
+  $xfer += $output->writeFieldStop();
+  $xfer += $output->writeStructEnd();
+  return $xfer;
+}
+
+package Blur::DocumentService_deleteRecord_args;
+use base qw(Class::Accessor);
+Blur::DocumentService_deleteRecord_args->mk_accessors( qw( table id ) );
+
+sub new {
+  my $classname = shift;
+  my $self      = {};
+  my $vals      = shift || {};
+  $self->{table} = undef;
+  $self->{id} = undef;
+  if (UNIVERSAL::isa($vals,'HASH')) {
+    if (defined $vals->{table}) {
+      $self->{table} = $vals->{table};
+    }
+    if (defined $vals->{id}) {
+      $self->{id} = $vals->{id};
+    }
+  }
+  return bless ($self, $classname);
+}
+
+sub getName {
+  return 'DocumentService_deleteRecord_args';
+}
+
+sub read {
+  my ($self, $input) = @_;
+  my $xfer  = 0;
+  my $fname;
+  my $ftype = 0;
+  my $fid   = 0;
+  $xfer += $input->readStructBegin(\$fname);
+  while (1) 
+  {
+    $xfer += $input->readFieldBegin(\$fname, \$ftype, \$fid);
+    if ($ftype == TType::STOP) {
+      last;
+    }
+    SWITCH: for($fid)
+    {
+      /^1$/ && do{      if ($ftype == TType::STRING) {
+        $xfer += $input->readString(\$self->{table});
+      } else {
+        $xfer += $input->skip($ftype);
+      }
+      last; };
+      /^2$/ && do{      if ($ftype == TType::STRING) {
+        $xfer += $input->readString(\$self->{id});
+      } else {
+        $xfer += $input->skip($ftype);
+      }
+      last; };
+        $xfer += $input->skip($ftype);
+    }
+    $xfer += $input->readFieldEnd();
+  }
+  $xfer += $input->readStructEnd();
+  return $xfer;
+}
+
+sub write {
+  my ($self, $output) = @_;
+  my $xfer   = 0;
+  $xfer += $output->writeStructBegin('DocumentService_deleteRecord_args');
+  if (defined $self->{table}) {
+    $xfer += $output->writeFieldBegin('table', TType::STRING, 1);
+    $xfer += $output->writeString($self->{table});
+    $xfer += $output->writeFieldEnd();
+  }
+  if (defined $self->{id}) {
+    $xfer += $output->writeFieldBegin('id', TType::STRING, 2);
+    $xfer += $output->writeString($self->{id});
+    $xfer += $output->writeFieldEnd();
+  }
+  $xfer += $output->writeFieldStop();
+  $xfer += $output->writeStructEnd();
+  return $xfer;
+}
+
+package Blur::DocumentService_deleteRecord_result;
+use base qw(Class::Accessor);
+Blur::DocumentService_deleteRecord_result->mk_accessors( qw( ) );
+
+sub new {
+  my $classname = shift;
+  my $self      = {};
+  my $vals      = shift || {};
+  $self->{ex} = undef;
+  if (UNIVERSAL::isa($vals,'HASH')) {
+    if (defined $vals->{ex}) {
+      $self->{ex} = $vals->{ex};
+    }
+  }
+  return bless ($self, $classname);
+}
+
+sub getName {
+  return 'DocumentService_deleteRecord_result';
+}
+
+sub read {
+  my ($self, $input) = @_;
+  my $xfer  = 0;
+  my $fname;
+  my $ftype = 0;
+  my $fid   = 0;
+  $xfer += $input->readStructBegin(\$fname);
+  while (1) 
+  {
+    $xfer += $input->readFieldBegin(\$fname, \$ftype, \$fid);
+    if ($ftype == TType::STOP) {
+      last;
+    }
+    SWITCH: for($fid)
+    {
+      /^1$/ && do{      if ($ftype == TType::STRUCT) {
+        $self->{ex} = new Blur::BlurException();
+        $xfer += $self->{ex}->read($input);
+      } else {
+        $xfer += $input->skip($ftype);
+      }
+      last; };
+        $xfer += $input->skip($ftype);
+    }
+    $xfer += $input->readFieldEnd();
+  }
+  $xfer += $input->readStructEnd();
+  return $xfer;
+}
+
+sub write {
+  my ($self, $output) = @_;
+  my $xfer   = 0;
+  $xfer += $output->writeStructBegin('DocumentService_deleteRecord_result');
+  if (defined $self->{ex}) {
+    $xfer += $output->writeFieldBegin('ex', TType::STRUCT, 1);
+    $xfer += $self->{ex}->write($output);
+    $xfer += $output->writeFieldEnd();
+  }
+  $xfer += $output->writeFieldStop();
+  $xfer += $output->writeStructEnd();
+  return $xfer;
+}
+
+package Blur::DocumentServiceIf;
+
+use strict;
+
+
+sub searchRecords{
+  my $self = shift;
+  my $table = shift;
+  my $query = shift;
+
+  die 'implement interface';
+}
+
+sub updateRecord{
+  my $self = shift;
+  my $table = shift;
+  my $record = shift;
+
+  die 'implement interface';
+}
+
+sub deleteRecord{
+  my $self = shift;
+  my $table = shift;
+  my $id = shift;
+
+  die 'implement interface';
+}
+
+package Blur::DocumentServiceRest;
+
+use strict;
+
+
+sub new {
+  my ($classname, $impl) = @_;
+  my $self     ={ impl => $impl };
+
+  return bless($self,$classname);
+}
+
+sub searchRecords{
+  my ($self, $request) = @_;
+
+  my $table = ($request->{'table'}) ? $request->{'table'} : undef;
+  my $query = ($request->{'query'}) ? $request->{'query'} : undef;
+  return $self->{impl}->searchRecords($table, $query);
+}
+
+sub updateRecord{
+  my ($self, $request) = @_;
+
+  my $table = ($request->{'table'}) ? $request->{'table'} : undef;
+  my $record = ($request->{'record'}) ? $request->{'record'} : undef;
+  return $self->{impl}->updateRecord($table, $record);
+}
+
+sub deleteRecord{
+  my ($self, $request) = @_;
+
+  my $table = ($request->{'table'}) ? $request->{'table'} : undef;
+  my $id = ($request->{'id'}) ? $request->{'id'} : undef;
+  return $self->{impl}->deleteRecord($table, $id);
+}
+
+package Blur::DocumentServiceClient;
+
+
+use base qw(Blur::DocumentServiceIf);
+sub new {
+  my ($classname, $input, $output) = @_;
+  my $self      = {};
+  $self->{input}  = $input;
+  $self->{output} = defined $output ? $output : $input;
+  $self->{seqid}  = 0;
+  return bless($self,$classname);
+}
+
+sub searchRecords{
+  my $self = shift;
+  my $table = shift;
+  my $query = shift;
+
+    $self->send_searchRecords($table, $query);
+  return $self->recv_searchRecords();
+}
+
+sub send_searchRecords{
+  my $self = shift;
+  my $table = shift;
+  my $query = shift;
+
+  $self->{output}->writeMessageBegin('searchRecords', TMessageType::CALL, $self->{seqid});
+  my $args = new Blur::DocumentService_searchRecords_args();
+  $args->{table} = $table;
+  $args->{query} = $query;
+  $args->write($self->{output});
+  $self->{output}->writeMessageEnd();
+  $self->{output}->getTransport()->flush();
+}
+
+sub recv_searchRecords{
+  my $self = shift;
+
+  my $rseqid = 0;
+  my $fname;
+  my $mtype = 0;
+
+  $self->{input}->readMessageBegin(\$fname, \$mtype, \$rseqid);
+  if ($mtype == TMessageType::EXCEPTION) {
+    my $x = new TApplicationException();
+    $x->read($self->{input});
+    $self->{input}->readMessageEnd();
+    die $x;
+  }
+  my $result = new Blur::DocumentService_searchRecords_result();
+  $result->read($self->{input});
+  $self->{input}->readMessageEnd();
+
+  if (defined $result->{success} ) {
+    return $result->{success};
+  }
+  if (defined $result->{ex}) {
+    die $result->{ex};
+  }
+  die "searchRecords failed: unknown result";
+}
+sub updateRecord{
+  my $self = shift;
+  my $table = shift;
+  my $record = shift;
+
+    $self->send_updateRecord($table, $record);
+  $self->recv_updateRecord();
+}
+
+sub send_updateRecord{
+  my $self = shift;
+  my $table = shift;
+  my $record = shift;
+
+  $self->{output}->writeMessageBegin('updateRecord', TMessageType::CALL, $self->{seqid});
+  my $args = new Blur::DocumentService_updateRecord_args();
+  $args->{table} = $table;
+  $args->{record} = $record;
+  $args->write($self->{output});
+  $self->{output}->writeMessageEnd();
+  $self->{output}->getTransport()->flush();
+}
+
+sub recv_updateRecord{
+  my $self = shift;
+
+  my $rseqid = 0;
+  my $fname;
+  my $mtype = 0;
+
+  $self->{input}->readMessageBegin(\$fname, \$mtype, \$rseqid);
+  if ($mtype == TMessageType::EXCEPTION) {
+    my $x = new TApplicationException();
+    $x->read($self->{input});
+    $self->{input}->readMessageEnd();
+    die $x;
+  }
+  my $result = new Blur::DocumentService_updateRecord_result();
+  $result->read($self->{input});
+  $self->{input}->readMessageEnd();
+
+  if (defined $result->{ex}) {
+    die $result->{ex};
+  }
+  return;
+}
+sub deleteRecord{
+  my $self = shift;
+  my $table = shift;
+  my $id = shift;
+
+    $self->send_deleteRecord($table, $id);
+  $self->recv_deleteRecord();
+}
+
+sub send_deleteRecord{
+  my $self = shift;
+  my $table = shift;
+  my $id = shift;
+
+  $self->{output}->writeMessageBegin('deleteRecord', TMessageType::CALL, $self->{seqid});
+  my $args = new Blur::DocumentService_deleteRecord_args();
+  $args->{table} = $table;
+  $args->{id} = $id;
+  $args->write($self->{output});
+  $self->{output}->writeMessageEnd();
+  $self->{output}->getTransport()->flush();
+}
+
+sub recv_deleteRecord{
+  my $self = shift;
+
+  my $rseqid = 0;
+  my $fname;
+  my $mtype = 0;
+
+  $self->{input}->readMessageBegin(\$fname, \$mtype, \$rseqid);
+  if ($mtype == TMessageType::EXCEPTION) {
+    my $x = new TApplicationException();
+    $x->read($self->{input});
+    $self->{input}->readMessageEnd();
+    die $x;
+  }
+  my $result = new Blur::DocumentService_deleteRecord_result();
+  $result->read($self->{input});
+  $self->{input}->readMessageEnd();
+
+  if (defined $result->{ex}) {
+    die $result->{ex};
+  }
+  return;
+}
+package Blur::DocumentServiceProcessor;
+
+use strict;
+
+
+sub new {
+    my ($classname, $handler) = @_;
+    my $self      = {};
+    $self->{handler} = $handler;
+    return bless ($self, $classname);
+}
+
+sub process {
+    my ($self, $input, $output) = @_;
+    my $rseqid = 0;
+    my $fname  = undef;
+    my $mtype  = 0;
+
+    $input->readMessageBegin(\$fname, \$mtype, \$rseqid);
+    my $methodname = 'process_'.$fname;
+    if (!$self->can($methodname)) {
+      $input->skip(TType::STRUCT);
+      $input->readMessageEnd();
+      my $x = new TApplicationException('Function '.$fname.' not implemented.', TApplicationException::UNKNOWN_METHOD);
+      $output->writeMessageBegin($fname, TMessageType::EXCEPTION, $rseqid);
+      $x->write($output);
+      $output->writeMessageEnd();
+      $output->getTransport()->flush();
+      return;
+    }
+    $self->$methodname($rseqid, $input, $output);
+    return 1;
+}
+
+sub process_searchRecords {
+    my ($self, $seqid, $input, $output) = @_;
+    my $args = new Blur::DocumentService_searchRecords_args();
+    $args->read($input);
+    $input->readMessageEnd();
+    my $result = new Blur::DocumentService_searchRecords_result();
+    eval {
+      $result->{success} = $self->{handler}->searchRecords($args->table, $args->query);
+    }; if( UNIVERSAL::isa($@,'Blur::BlurException') ){ 
+      $result->{ex} = $@;
+    }
+    $output->writeMessageBegin('searchRecords', TMessageType::REPLY, $seqid);
+    $result->write($output);
+    $output->writeMessageEnd();
+    $output->getTransport()->flush();
+}
+
+sub process_updateRecord {
+    my ($self, $seqid, $input, $output) = @_;
+    my $args = new Blur::DocumentService_updateRecord_args();
+    $args->read($input);
+    $input->readMessageEnd();
+    my $result = new Blur::DocumentService_updateRecord_result();
+    eval {
+      $self->{handler}->updateRecord($args->table, $args->record);
+    }; if( UNIVERSAL::isa($@,'Blur::BlurException') ){ 
+      $result->{ex} = $@;
+    }
+    $output->writeMessageBegin('updateRecord', TMessageType::REPLY, $seqid);
+    $result->write($output);
+    $output->writeMessageEnd();
+    $output->getTransport()->flush();
+}
+
+sub process_deleteRecord {
+    my ($self, $seqid, $input, $output) = @_;
+    my $args = new Blur::DocumentService_deleteRecord_args();
+    $args->read($input);
+    $input->readMessageEnd();
+    my $result = new Blur::DocumentService_deleteRecord_result();
+    eval {
+      $self->{handler}->deleteRecord($args->table, $args->id);
+    }; if( UNIVERSAL::isa($@,'Blur::BlurException') ){ 
+      $result->{ex} = $@;
+    }
+    $output->writeMessageBegin('deleteRecord', TMessageType::REPLY, $seqid);
+    $result->write($output);
+    $output->writeMessageEnd();
+    $output->getTransport()->flush();
+}
+
+1;

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/11f5141c/src/distribution/src/main/scripts/interface/gen-perl/Blur/Types.pm
----------------------------------------------------------------------
diff --git a/src/distribution/src/main/scripts/interface/gen-perl/Blur/Types.pm b/src/distribution/src/main/scripts/interface/gen-perl/Blur/Types.pm
new file mode 100644
index 0000000..cc1fdac
--- /dev/null
+++ b/src/distribution/src/main/scripts/interface/gen-perl/Blur/Types.pm
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.0)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+require 5.6.0;
+use strict;
+use warnings;
+use Thrift;
+
+1;

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/11f5141c/src/distribution/src/main/scripts/interface/gen-rb/blur.rb
----------------------------------------------------------------------
diff --git a/src/distribution/src/main/scripts/interface/gen-rb/blur.rb b/src/distribution/src/main/scripts/interface/gen-rb/blur.rb
new file mode 100644
index 0000000..d18e0df
--- /dev/null
+++ b/src/distribution/src/main/scripts/interface/gen-rb/blur.rb
@@ -0,0 +1,1497 @@
+#
+# Autogenerated by Thrift Compiler (0.9.0)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+
+require 'thrift'
+require 'document_group_service'
+require 'blur_r_p_c_service_types'
+
+module Blur
+  module Blur
+    class Client < ::Blur::DocumentGroupService::Client 
+      include ::Thrift::Client
+
+      def openReadSession(table)
+        send_openReadSession(table)
+        return recv_openReadSession()
+      end
+
+      def send_openReadSession(table)
+        send_message('openReadSession', OpenReadSession_args, :table => table)
+      end
+
+      def recv_openReadSession()
+        result = receive_message(OpenReadSession_result)
+        return result.success unless result.success.nil?
+        raise result.e unless result.e.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'openReadSession failed: unknown result')
+      end
+
+      def search(session, queryArgs)
+        send_search(session, queryArgs)
+        return recv_search()
+      end
+
+      def send_search(session, queryArgs)
+        send_message('search', Search_args, :session => session, :queryArgs => queryArgs)
+      end
+
+      def recv_search()
+        result = receive_message(Search_result)
+        return result.success unless result.success.nil?
+        raise result.e unless result.e.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'search failed: unknown result')
+      end
+
+      def doc(session, docLocations, fields)
+        send_doc(session, docLocations, fields)
+        return recv_doc()
+      end
+
+      def send_doc(session, docLocations, fields)
+        send_message('doc', Doc_args, :session => session, :docLocations => docLocations, :fields => fields)
+      end
+
+      def recv_doc()
+        result = receive_message(Doc_result)
+        return result.success unless result.success.nil?
+        raise result.e unless result.e.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'doc failed: unknown result')
+      end
+
+      def closeReadSession(session)
+        send_closeReadSession(session)
+        recv_closeReadSession()
+      end
+
+      def send_closeReadSession(session)
+        send_message('closeReadSession', CloseReadSession_args, :session => session)
+      end
+
+      def recv_closeReadSession()
+        result = receive_message(CloseReadSession_result)
+        raise result.e unless result.e.nil?
+        return
+      end
+
+      def addDocuments(options, documents)
+        send_addDocuments(options, documents)
+        return recv_addDocuments()
+      end
+
+      def send_addDocuments(options, documents)
+        send_message('addDocuments', AddDocuments_args, :options => options, :documents => documents)
+      end
+
+      def recv_addDocuments()
+        result = receive_message(AddDocuments_result)
+        return result.success unless result.success.nil?
+        raise result.e unless result.e.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'addDocuments failed: unknown result')
+      end
+
+      def deleteDocumentsByQueries(options, queries)
+        send_deleteDocumentsByQueries(options, queries)
+        return recv_deleteDocumentsByQueries()
+      end
+
+      def send_deleteDocumentsByQueries(options, queries)
+        send_message('deleteDocumentsByQueries', DeleteDocumentsByQueries_args, :options => options, :queries => queries)
+      end
+
+      def recv_deleteDocumentsByQueries()
+        result = receive_message(DeleteDocumentsByQueries_result)
+        return result.success unless result.success.nil?
+        raise result.e unless result.e.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'deleteDocumentsByQueries failed: unknown result')
+      end
+
+      def deleteDocuments(options, terms)
+        send_deleteDocuments(options, terms)
+        return recv_deleteDocuments()
+      end
+
+      def send_deleteDocuments(options, terms)
+        send_message('deleteDocuments', DeleteDocuments_args, :options => options, :terms => terms)
+      end
+
+      def recv_deleteDocuments()
+        result = receive_message(DeleteDocuments_result)
+        return result.success unless result.success.nil?
+        raise result.e unless result.e.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'deleteDocuments failed: unknown result')
+      end
+
+      def updateDocuments(options, updatePackages)
+        send_updateDocuments(options, updatePackages)
+        return recv_updateDocuments()
+      end
+
+      def send_updateDocuments(options, updatePackages)
+        send_message('updateDocuments', UpdateDocuments_args, :options => options, :updatePackages => updatePackages)
+      end
+
+      def recv_updateDocuments()
+        result = receive_message(UpdateDocuments_result)
+        return result.success unless result.success.nil?
+        raise result.e unless result.e.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'updateDocuments failed: unknown result')
+      end
+
+      def blockUntilGenerationIsVisible(generations, forceRefresh)
+        send_blockUntilGenerationIsVisible(generations, forceRefresh)
+        recv_blockUntilGenerationIsVisible()
+      end
+
+      def send_blockUntilGenerationIsVisible(generations, forceRefresh)
+        send_message('blockUntilGenerationIsVisible', BlockUntilGenerationIsVisible_args, :generations => generations, :forceRefresh => forceRefresh)
+      end
+
+      def recv_blockUntilGenerationIsVisible()
+        result = receive_message(BlockUntilGenerationIsVisible_result)
+        raise result.e unless result.e.nil?
+        return
+      end
+
+      def serverList()
+        send_serverList()
+        return recv_serverList()
+      end
+
+      def send_serverList()
+        send_message('serverList', ServerList_args)
+      end
+
+      def recv_serverList()
+        result = receive_message(ServerList_result)
+        return result.success unless result.success.nil?
+        raise result.ex unless result.ex.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'serverList failed: unknown result')
+      end
+
+      def serverLayout(table, server)
+        send_serverLayout(table, server)
+        return recv_serverLayout()
+      end
+
+      def send_serverLayout(table, server)
+        send_message('serverLayout', ServerLayout_args, :table => table, :server => server)
+      end
+
+      def recv_serverLayout()
+        result = receive_message(ServerLayout_result)
+        return result.success unless result.success.nil?
+        raise result.ex unless result.ex.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'serverLayout failed: unknown result')
+      end
+
+      def shardLayout(table)
+        send_shardLayout(table)
+        return recv_shardLayout()
+      end
+
+      def send_shardLayout(table)
+        send_message('shardLayout', ShardLayout_args, :table => table)
+      end
+
+      def recv_shardLayout()
+        result = receive_message(ShardLayout_result)
+        return result.success unless result.success.nil?
+        raise result.ex unless result.ex.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'shardLayout failed: unknown result')
+      end
+
+      def tableList()
+        send_tableList()
+        return recv_tableList()
+      end
+
+      def send_tableList()
+        send_message('tableList', TableList_args)
+      end
+
+      def recv_tableList()
+        result = receive_message(TableList_result)
+        return result.success unless result.success.nil?
+        raise result.ex unless result.ex.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'tableList failed: unknown result')
+      end
+
+      def isInSafeMode()
+        send_isInSafeMode()
+        return recv_isInSafeMode()
+      end
+
+      def send_isInSafeMode()
+        send_message('isInSafeMode', IsInSafeMode_args)
+      end
+
+      def recv_isInSafeMode()
+        result = receive_message(IsInSafeMode_result)
+        return result.success unless result.success.nil?
+        raise result.ex unless result.ex.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'isInSafeMode failed: unknown result')
+      end
+
+      def createTable(tableDescriptor)
+        send_createTable(tableDescriptor)
+        recv_createTable()
+      end
+
+      def send_createTable(tableDescriptor)
+        send_message('createTable', CreateTable_args, :tableDescriptor => tableDescriptor)
+      end
+
+      def recv_createTable()
+        result = receive_message(CreateTable_result)
+        raise result.ex unless result.ex.nil?
+        return
+      end
+
+      def enableTable(table)
+        send_enableTable(table)
+        recv_enableTable()
+      end
+
+      def send_enableTable(table)
+        send_message('enableTable', EnableTable_args, :table => table)
+      end
+
+      def recv_enableTable()
+        result = receive_message(EnableTable_result)
+        raise result.ex unless result.ex.nil?
+        return
+      end
+
+      def disableTable(table)
+        send_disableTable(table)
+        recv_disableTable()
+      end
+
+      def send_disableTable(table)
+        send_message('disableTable', DisableTable_args, :table => table)
+      end
+
+      def recv_disableTable()
+        result = receive_message(DisableTable_result)
+        raise result.ex unless result.ex.nil?
+        return
+      end
+
+      def removeTable(table, deleteIndexFiles)
+        send_removeTable(table, deleteIndexFiles)
+        recv_removeTable()
+      end
+
+      def send_removeTable(table, deleteIndexFiles)
+        send_message('removeTable', RemoveTable_args, :table => table, :deleteIndexFiles => deleteIndexFiles)
+      end
+
+      def recv_removeTable()
+        result = receive_message(RemoveTable_result)
+        raise result.ex unless result.ex.nil?
+        return
+      end
+
+      def describe(table)
+        send_describe(table)
+        return recv_describe()
+      end
+
+      def send_describe(table)
+        send_message('describe', Describe_args, :table => table)
+      end
+
+      def recv_describe()
+        result = receive_message(Describe_result)
+        return result.success unless result.success.nil?
+        raise result.ex unless result.ex.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'describe failed: unknown result')
+      end
+
+      def cancelQuery(session, server, id)
+        send_cancelQuery(session, server, id)
+        recv_cancelQuery()
+      end
+
+      def send_cancelQuery(session, server, id)
+        send_message('cancelQuery', CancelQuery_args, :session => session, :server => server, :id => id)
+      end
+
+      def recv_cancelQuery()
+        result = receive_message(CancelQuery_result)
+        raise result.ex unless result.ex.nil?
+        return
+      end
+
+      def queryStatusIdList(session, server)
+        send_queryStatusIdList(session, server)
+        return recv_queryStatusIdList()
+      end
+
+      def send_queryStatusIdList(session, server)
+        send_message('queryStatusIdList', QueryStatusIdList_args, :session => session, :server => server)
+      end
+
+      def recv_queryStatusIdList()
+        result = receive_message(QueryStatusIdList_result)
+        return result.success unless result.success.nil?
+        raise result.ex unless result.ex.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'queryStatusIdList failed: unknown result')
+      end
+
+      def queryStatus(session, server, id)
+        send_queryStatus(session, server, id)
+        return recv_queryStatus()
+      end
+
+      def send_queryStatus(session, server, id)
+        send_message('queryStatus', QueryStatus_args, :session => session, :server => server, :id => id)
+      end
+
+      def recv_queryStatus()
+        result = receive_message(QueryStatus_result)
+        return result.success unless result.success.nil?
+        raise result.ex unless result.ex.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'queryStatus failed: unknown result')
+      end
+
+      def schema(session)
+        send_schema(session)
+        return recv_schema()
+      end
+
+      def send_schema(session)
+        send_message('schema', Schema_args, :session => session)
+      end
+
+      def recv_schema()
+        result = receive_message(Schema_result)
+        return result.success unless result.success.nil?
+        raise result.ex unless result.ex.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'schema failed: unknown result')
+      end
+
+      def tableStats(table)
+        send_tableStats(table)
+        return recv_tableStats()
+      end
+
+      def send_tableStats(table)
+        send_message('tableStats', TableStats_args, :table => table)
+      end
+
+      def recv_tableStats()
+        result = receive_message(TableStats_result)
+        return result.success unless result.success.nil?
+        raise result.ex unless result.ex.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'tableStats failed: unknown result')
+      end
+
+    end
+
+    class Processor < ::Blur::DocumentGroupService::Processor 
+      include ::Thrift::Processor
+
+      def process_openReadSession(seqid, iprot, oprot)
+        args = read_args(iprot, OpenReadSession_args)
+        result = OpenReadSession_result.new()
+        begin
+          result.success = @handler.openReadSession(args.table)
+        rescue ::Blur::BlurException => e
+          result.e = e
+        end
+        write_result(result, oprot, 'openReadSession', seqid)
+      end
+
+      def process_search(seqid, iprot, oprot)
+        args = read_args(iprot, Search_args)
+        result = Search_result.new()
+        begin
+          result.success = @handler.search(args.session, args.queryArgs)
+        rescue ::Blur::BlurException => e
+          result.e = e
+        end
+        write_result(result, oprot, 'search', seqid)
+      end
+
+      def process_doc(seqid, iprot, oprot)
+        args = read_args(iprot, Doc_args)
+        result = Doc_result.new()
+        begin
+          result.success = @handler.doc(args.session, args.docLocations, args.fields)
+        rescue ::Blur::BlurException => e
+          result.e = e
+        end
+        write_result(result, oprot, 'doc', seqid)
+      end
+
+      def process_closeReadSession(seqid, iprot, oprot)
+        args = read_args(iprot, CloseReadSession_args)
+        result = CloseReadSession_result.new()
+        begin
+          @handler.closeReadSession(args.session)
+        rescue ::Blur::BlurException => e
+          result.e = e
+        end
+        write_result(result, oprot, 'closeReadSession', seqid)
+      end
+
+      def process_addDocuments(seqid, iprot, oprot)
+        args = read_args(iprot, AddDocuments_args)
+        result = AddDocuments_result.new()
+        begin
+          result.success = @handler.addDocuments(args.options, args.documents)
+        rescue ::Blur::BlurException => e
+          result.e = e
+        end
+        write_result(result, oprot, 'addDocuments', seqid)
+      end
+
+      def process_deleteDocumentsByQueries(seqid, iprot, oprot)
+        args = read_args(iprot, DeleteDocumentsByQueries_args)
+        result = DeleteDocumentsByQueries_result.new()
+        begin
+          result.success = @handler.deleteDocumentsByQueries(args.options, args.queries)
+        rescue ::Blur::BlurException => e
+          result.e = e
+        end
+        write_result(result, oprot, 'deleteDocumentsByQueries', seqid)
+      end
+
+      def process_deleteDocuments(seqid, iprot, oprot)
+        args = read_args(iprot, DeleteDocuments_args)
+        result = DeleteDocuments_result.new()
+        begin
+          result.success = @handler.deleteDocuments(args.options, args.terms)
+        rescue ::Blur::BlurException => e
+          result.e = e
+        end
+        write_result(result, oprot, 'deleteDocuments', seqid)
+      end
+
+      def process_updateDocuments(seqid, iprot, oprot)
+        args = read_args(iprot, UpdateDocuments_args)
+        result = UpdateDocuments_result.new()
+        begin
+          result.success = @handler.updateDocuments(args.options, args.updatePackages)
+        rescue ::Blur::BlurException => e
+          result.e = e
+        end
+        write_result(result, oprot, 'updateDocuments', seqid)
+      end
+
+      def process_blockUntilGenerationIsVisible(seqid, iprot, oprot)
+        args = read_args(iprot, BlockUntilGenerationIsVisible_args)
+        result = BlockUntilGenerationIsVisible_result.new()
+        begin
+          @handler.blockUntilGenerationIsVisible(args.generations, args.forceRefresh)
+        rescue ::Blur::BlurException => e
+          result.e = e
+        end
+        write_result(result, oprot, 'blockUntilGenerationIsVisible', seqid)
+      end
+
+      def process_serverList(seqid, iprot, oprot)
+        args = read_args(iprot, ServerList_args)
+        result = ServerList_result.new()
+        begin
+          result.success = @handler.serverList()
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'serverList', seqid)
+      end
+
+      def process_serverLayout(seqid, iprot, oprot)
+        args = read_args(iprot, ServerLayout_args)
+        result = ServerLayout_result.new()
+        begin
+          result.success = @handler.serverLayout(args.table, args.server)
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'serverLayout', seqid)
+      end
+
+      def process_shardLayout(seqid, iprot, oprot)
+        args = read_args(iprot, ShardLayout_args)
+        result = ShardLayout_result.new()
+        begin
+          result.success = @handler.shardLayout(args.table)
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'shardLayout', seqid)
+      end
+
+      def process_tableList(seqid, iprot, oprot)
+        args = read_args(iprot, TableList_args)
+        result = TableList_result.new()
+        begin
+          result.success = @handler.tableList()
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'tableList', seqid)
+      end
+
+      def process_isInSafeMode(seqid, iprot, oprot)
+        args = read_args(iprot, IsInSafeMode_args)
+        result = IsInSafeMode_result.new()
+        begin
+          result.success = @handler.isInSafeMode()
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'isInSafeMode', seqid)
+      end
+
+      def process_createTable(seqid, iprot, oprot)
+        args = read_args(iprot, CreateTable_args)
+        result = CreateTable_result.new()
+        begin
+          @handler.createTable(args.tableDescriptor)
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'createTable', seqid)
+      end
+
+      def process_enableTable(seqid, iprot, oprot)
+        args = read_args(iprot, EnableTable_args)
+        result = EnableTable_result.new()
+        begin
+          @handler.enableTable(args.table)
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'enableTable', seqid)
+      end
+
+      def process_disableTable(seqid, iprot, oprot)
+        args = read_args(iprot, DisableTable_args)
+        result = DisableTable_result.new()
+        begin
+          @handler.disableTable(args.table)
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'disableTable', seqid)
+      end
+
+      def process_removeTable(seqid, iprot, oprot)
+        args = read_args(iprot, RemoveTable_args)
+        result = RemoveTable_result.new()
+        begin
+          @handler.removeTable(args.table, args.deleteIndexFiles)
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'removeTable', seqid)
+      end
+
+      def process_describe(seqid, iprot, oprot)
+        args = read_args(iprot, Describe_args)
+        result = Describe_result.new()
+        begin
+          result.success = @handler.describe(args.table)
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'describe', seqid)
+      end
+
+      def process_cancelQuery(seqid, iprot, oprot)
+        args = read_args(iprot, CancelQuery_args)
+        result = CancelQuery_result.new()
+        begin
+          @handler.cancelQuery(args.session, args.server, args.id)
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'cancelQuery', seqid)
+      end
+
+      def process_queryStatusIdList(seqid, iprot, oprot)
+        args = read_args(iprot, QueryStatusIdList_args)
+        result = QueryStatusIdList_result.new()
+        begin
+          result.success = @handler.queryStatusIdList(args.session, args.server)
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'queryStatusIdList', seqid)
+      end
+
+      def process_queryStatus(seqid, iprot, oprot)
+        args = read_args(iprot, QueryStatus_args)
+        result = QueryStatus_result.new()
+        begin
+          result.success = @handler.queryStatus(args.session, args.server, args.id)
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'queryStatus', seqid)
+      end
+
+      def process_schema(seqid, iprot, oprot)
+        args = read_args(iprot, Schema_args)
+        result = Schema_result.new()
+        begin
+          result.success = @handler.schema(args.session)
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'schema', seqid)
+      end
+
+      def process_tableStats(seqid, iprot, oprot)
+        args = read_args(iprot, TableStats_args)
+        result = TableStats_result.new()
+        begin
+          result.success = @handler.tableStats(args.table)
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'tableStats', seqid)
+      end
+
+    end
+
+    # HELPER FUNCTIONS AND STRUCTURES
+
+    class OpenReadSession_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      TABLE = 1
+
+      FIELDS = {
+        TABLE => {:type => ::Thrift::Types::STRING, :name => 'table'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class OpenReadSession_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      E = 1
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::Blur::Session},
+        E => {:type => ::Thrift::Types::STRUCT, :name => 'e', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class Search_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SESSION = 1
+      QUERYARGS = 2
+
+      FIELDS = {
+        SESSION => {:type => ::Thrift::Types::STRUCT, :name => 'session', :class => ::Blur::Session},
+        QUERYARGS => {:type => ::Thrift::Types::STRUCT, :name => 'queryArgs', :class => ::Blur::QueryArgs}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class Search_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      E = 1
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRUCT, :class => ::Blur::TopFieldDocs}},
+        E => {:type => ::Thrift::Types::STRUCT, :name => 'e', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class Doc_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SESSION = 1
+      DOCLOCATIONS = 2
+      FIELDS = 4
+
+      FIELDS = {
+        SESSION => {:type => ::Thrift::Types::STRUCT, :name => 'session', :class => ::Blur::Session},
+        DOCLOCATIONS => {:type => ::Thrift::Types::LIST, :name => 'docLocations', :element => {:type => ::Thrift::Types::I64}},
+        FIELDS => {:type => ::Thrift::Types::SET, :name => 'fields', :element => {:type => ::Thrift::Types::STRING}}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class Doc_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      E = 1
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRUCT, :class => ::Blur::Document}},
+        E => {:type => ::Thrift::Types::STRUCT, :name => 'e', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class CloseReadSession_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SESSION = 1
+
+      FIELDS = {
+        SESSION => {:type => ::Thrift::Types::STRUCT, :name => 'session', :class => ::Blur::Session}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class CloseReadSession_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      E = 1
+
+      FIELDS = {
+        E => {:type => ::Thrift::Types::STRUCT, :name => 'e', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class AddDocuments_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      OPTIONS = 1
+      DOCUMENTS = 2
+
+      FIELDS = {
+        OPTIONS => {:type => ::Thrift::Types::STRUCT, :name => 'options', :class => ::Blur::MutateOptions},
+        DOCUMENTS => {:type => ::Thrift::Types::LIST, :name => 'documents', :element => {:type => ::Thrift::Types::STRUCT, :class => ::Blur::Document}}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class AddDocuments_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      E = 1
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRUCT, :class => ::Blur::Generation}},
+        E => {:type => ::Thrift::Types::STRUCT, :name => 'e', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class DeleteDocumentsByQueries_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      OPTIONS = 1
+      QUERIES = 2
+
+      FIELDS = {
+        OPTIONS => {:type => ::Thrift::Types::STRUCT, :name => 'options', :class => ::Blur::MutateOptions},
+        QUERIES => {:type => ::Thrift::Types::LIST, :name => 'queries', :element => {:type => ::Thrift::Types::STRUCT, :class => ::Blur::Query}}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class DeleteDocumentsByQueries_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      E = 1
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRUCT, :class => ::Blur::Generation}},
+        E => {:type => ::Thrift::Types::STRUCT, :name => 'e', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class DeleteDocuments_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      OPTIONS = 1
+      TERMS = 2
+
+      FIELDS = {
+        OPTIONS => {:type => ::Thrift::Types::STRUCT, :name => 'options', :class => ::Blur::MutateOptions},
+        TERMS => {:type => ::Thrift::Types::LIST, :name => 'terms', :element => {:type => ::Thrift::Types::STRUCT, :class => ::Blur::Term}}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class DeleteDocuments_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      E = 1
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRUCT, :class => ::Blur::Generation}},
+        E => {:type => ::Thrift::Types::STRUCT, :name => 'e', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class UpdateDocuments_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      OPTIONS = 1
+      UPDATEPACKAGES = 2
+
+      FIELDS = {
+        OPTIONS => {:type => ::Thrift::Types::STRUCT, :name => 'options', :class => ::Blur::MutateOptions},
+        UPDATEPACKAGES => {:type => ::Thrift::Types::LIST, :name => 'updatePackages', :element => {:type => ::Thrift::Types::STRUCT, :class => ::Blur::UpdatePackage}}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class UpdateDocuments_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      E = 1
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRUCT, :class => ::Blur::Generation}},
+        E => {:type => ::Thrift::Types::STRUCT, :name => 'e', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class BlockUntilGenerationIsVisible_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      GENERATIONS = 1
+      FORCEREFRESH = 2
+
+      FIELDS = {
+        GENERATIONS => {:type => ::Thrift::Types::LIST, :name => 'generations', :element => {:type => ::Thrift::Types::STRUCT, :class => ::Blur::Generation}},
+        FORCEREFRESH => {:type => ::Thrift::Types::BOOL, :name => 'forceRefresh'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class BlockUntilGenerationIsVisible_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      E = 1
+
+      FIELDS = {
+        E => {:type => ::Thrift::Types::STRUCT, :name => 'e', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class ServerList_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+
+      FIELDS = {
+
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class ServerList_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      EX = 1
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRING}},
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class ServerLayout_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      TABLE = 1
+      SERVER = 2
+
+      FIELDS = {
+        TABLE => {:type => ::Thrift::Types::STRING, :name => 'table'},
+        SERVER => {:type => ::Thrift::Types::STRING, :name => 'server'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class ServerLayout_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      EX = 1
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::I32}},
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class ShardLayout_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      TABLE = 1
+
+      FIELDS = {
+        TABLE => {:type => ::Thrift::Types::STRING, :name => 'table'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class ShardLayout_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      EX = 1
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::MAP, :name => 'success', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::STRUCT, :class => ::Blur::ShardLayout}},
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class TableList_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+
+      FIELDS = {
+
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class TableList_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      EX = 1
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRING}},
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class IsInSafeMode_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+
+      FIELDS = {
+
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class IsInSafeMode_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      EX = 1
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::BOOL, :name => 'success'},
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class CreateTable_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      TABLEDESCRIPTOR = 1
+
+      FIELDS = {
+        TABLEDESCRIPTOR => {:type => ::Thrift::Types::STRUCT, :name => 'tableDescriptor', :class => ::Blur::TableDescriptor}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class CreateTable_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      EX = 1
+
+      FIELDS = {
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class EnableTable_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      TABLE = 1
+
+      FIELDS = {
+        TABLE => {:type => ::Thrift::Types::STRING, :name => 'table'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class EnableTable_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      EX = 1
+
+      FIELDS = {
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class DisableTable_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      TABLE = 1
+
+      FIELDS = {
+        TABLE => {:type => ::Thrift::Types::STRING, :name => 'table'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class DisableTable_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      EX = 1
+
+      FIELDS = {
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class RemoveTable_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      TABLE = 1
+      DELETEINDEXFILES = 2
+
+      FIELDS = {
+        TABLE => {:type => ::Thrift::Types::STRING, :name => 'table'},
+        DELETEINDEXFILES => {:type => ::Thrift::Types::BOOL, :name => 'deleteIndexFiles'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class RemoveTable_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      EX = 1
+
+      FIELDS = {
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class Describe_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      TABLE = 1
+
+      FIELDS = {
+        TABLE => {:type => ::Thrift::Types::STRING, :name => 'table'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class Describe_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      EX = 1
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::Blur::TableDescriptor},
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class CancelQuery_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SESSION = 1
+      SERVER = 2
+      ID = 3
+
+      FIELDS = {
+        SESSION => {:type => ::Thrift::Types::STRUCT, :name => 'session', :class => ::Blur::Session},
+        SERVER => {:type => ::Thrift::Types::STRING, :name => 'server'},
+        ID => {:type => ::Thrift::Types::STRING, :name => 'id'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class CancelQuery_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      EX = 1
+
+      FIELDS = {
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class QueryStatusIdList_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SESSION = 1
+      SERVER = 2
+
+      FIELDS = {
+        SESSION => {:type => ::Thrift::Types::STRUCT, :name => 'session', :class => ::Blur::Session},
+        SERVER => {:type => ::Thrift::Types::STRING, :name => 'server'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class QueryStatusIdList_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      EX = 1
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::MAP, :name => 'success', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::LIST, :element => {:type => ::Thrift::Types::STRING}}},
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class QueryStatus_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SESSION = 1
+      SERVER = 2
+      ID = 3
+
+      FIELDS = {
+        SESSION => {:type => ::Thrift::Types::STRUCT, :name => 'session', :class => ::Blur::Session},
+        SERVER => {:type => ::Thrift::Types::STRING, :name => 'server'},
+        ID => {:type => ::Thrift::Types::STRING, :name => 'id'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class QueryStatus_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      EX = 1
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::MAP, :name => 'success', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::STRUCT, :class => ::Blur::QueryStatus}},
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class Schema_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SESSION = 1
+
+      FIELDS = {
+        SESSION => {:type => ::Thrift::Types::STRUCT, :name => 'session', :class => ::Blur::Session}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class Schema_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      EX = 1
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::Blur::TableSchema},
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class TableStats_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      TABLE = 1
+
+      FIELDS = {
+        TABLE => {:type => ::Thrift::Types::STRING, :name => 'table'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class TableStats_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      EX = 1
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::Blur::TableStats},
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+  end
+
+end

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/11f5141c/src/distribution/src/main/scripts/interface/gen-rb/blur_r_p_c_constants.rb
----------------------------------------------------------------------
diff --git a/src/distribution/src/main/scripts/interface/gen-rb/blur_r_p_c_constants.rb b/src/distribution/src/main/scripts/interface/gen-rb/blur_r_p_c_constants.rb
new file mode 100644
index 0000000..5a64da6
--- /dev/null
+++ b/src/distribution/src/main/scripts/interface/gen-rb/blur_r_p_c_constants.rb
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.0)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+
+require 'thrift'
+require 'blur_r_p_c_types'
+
+module Blur
+end


Mime
View raw message