Here is a patch to add an option (--framed) to the cassandra-cli to
use framed transport.  It's pretty simple and should prove useful for
anyone using a the framed transport option server side.

-- 
Dan Di Spaltro
diff --git a/src/java/org/apache/cassandra/cli/CliMain.java 
b/src/java/org/apache/cassandra/cli/CliMain.java
index abb97d2..a4bd4c5 100644
--- a/src/java/org/apache/cassandra/cli/CliMain.java
+++ b/src/java/org/apache/cassandra/cli/CliMain.java
@@ -21,6 +21,7 @@ package org.apache.cassandra.cli;
 import org.apache.thrift.protocol.TBinaryProtocol;
 import org.apache.thrift.transport.TSocket;
 import org.apache.thrift.transport.TTransport;
+import org.apache.thrift.transport.TFramedTransport;
 
 import jline.*;
 import java.io.*;
@@ -48,7 +49,11 @@ public class CliMain
         if (transport_ != null)
             transport_.close();
 
-        transport_ = socket;
+        if (css_.framed) {
+            transport_ = new TFramedTransport(socket);
+        } else {
+            transport_ = socket;
+        }
 
         TBinaryProtocol binaryProtocol = new TBinaryProtocol(transport_, 
false, false);
         Cassandra.Client cassandraClient = new 
Cassandra.Client(binaryProtocol);
diff --git a/src/java/org/apache/cassandra/cli/CliOptions.java 
b/src/java/org/apache/cassandra/cli/CliOptions.java
index c24bd0b..3f2cbdf 100644
--- a/src/java/org/apache/cassandra/cli/CliOptions.java
+++ b/src/java/org/apache/cassandra/cli/CliOptions.java
@@ -27,6 +27,7 @@ public class CliOptions {
     // Command line options
     private static final String HOST_OPTION = "host";
     private static final String PORT_OPTION = "port";
+    private static final String FRAME_OPTION = "framed";
 
     // Default values for optional command line arguments
     private static final int    DEFAULT_THRIFT_PORT = 9160;
@@ -38,12 +39,13 @@ public class CliOptions {
         options = new Options();
         options.addOption(HOST_OPTION, true, "cassandra server's host name");
         options.addOption(PORT_OPTION, true, "cassandra server's thrift 
port");  
+        options.addOption(FRAME_OPTION, false, "cassandra server's framed 
transport");  
     }
 
     private static void printUsage()
     {
         System.err.println("");
-        System.err.println("Usage: cassandra-cli --host hostname [--port 
<portname>]");
+        System.err.println("Usage: cassandra-cli --host hostname [--port 
<portname>] [--framed]");
         System.err.println("");
     }
 
@@ -78,6 +80,11 @@ public class CliOptions {
             css.hostName = cmd.getOptionValue(HOST_OPTION);
         }
 
+        // Look to see if frame has been specified
+        if (cmd.hasOption(FRAME_OPTION)) {
+            css.framed = true;
+        }
+
         // Look for optional args.
         if (cmd.hasOption(PORT_OPTION))
         {
diff --git a/src/java/org/apache/cassandra/cli/CliSessionState.java 
b/src/java/org/apache/cassandra/cli/CliSessionState.java
index 50bf9ec..2f0ff4e 100644
--- a/src/java/org/apache/cassandra/cli/CliSessionState.java
+++ b/src/java/org/apache/cassandra/cli/CliSessionState.java
@@ -26,6 +26,7 @@ public class CliSessionState {
     public boolean timingOn = false;
     public String  hostName;       // cassandra server name
     public int     thriftPort;     // cassandra server's thrift port
+    public boolean framed = false; // cassandra server's framed transport 
 
     /*
      * Streams to read/write from

Reply via email to