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