/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.cassandra.cli;
import java.io.InputStream;
import java.io.PrintStream;
import org.apache.cassandra.config.EncryptionOptions;
import org.apache.cassandra.config.EncryptionOptions.ClientEncryptionOptions;
import org.apache.cassandra.thrift.ITransportFactory;
import org.apache.cassandra.thrift.TFramedTransportFactory;
import org.apache.cassandra.tools.NodeProbe;
/**
* Used to hold the state for the CLI.
*/
public class CliSessionState
{
public String hostName; // cassandra server name
public int thriftPort; // cassandra server's thrift port
public boolean debug = false; // print stack traces when errors occur in the CLI
public String username; // cassandra login name (if password-based authenticator is used)
public String password; // cassandra login password (if password-based authenticator is used)
public String keyspace; // cassandra keyspace user is authenticating
public boolean batch = false; // enable/disable batch processing mode
public String filename = ""; // file to read commands from
public int jmxPort = 7199;// JMX service port
public String jmxUsername; // JMX service username
public String jmxPassword; // JMX service password
public boolean verbose = false; // verbose output
public ITransportFactory transportFactory = new TFramedTransportFactory();
public EncryptionOptions encOptions = new ClientEncryptionOptions();
/*
* Streams to read/write from
*/
public InputStream in;
public PrintStream out;
public PrintStream err;
public CliSessionState()
{
in = System.in;
out = System.out;
err = System.err;
}
public void setOut(PrintStream newOut)
{
this.out = newOut;
}
public void setErr(PrintStream newErr)
{
this.err = newErr;
}
public boolean inFileMode()
{
return !this.filename.isEmpty();
}
public NodeProbe getNodeProbe()
{
try
{
return jmxUsername != null && jmxPassword != null
? new NodeProbe(hostName, jmxPort, jmxUsername, jmxPassword)
: new NodeProbe(hostName, jmxPort);
}
catch (Exception e)
{
err.printf("WARNING: Could not connect to the JMX on %s:%d - some information won't be shown.%n%n", hostName, jmxPort);
}
return null;
}
}