Impala
Impalaistheopensource,nativeanalyticdatabaseforApacheHadoop.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
apache::thrift::transport::TSaslClientTransport Class Reference

#include <TSaslClientTransport.h>

Inheritance diagram for apache::thrift::transport::TSaslClientTransport:
Collaboration diagram for apache::thrift::transport::TSaslClientTransport:

Public Member Functions

 TSaslClientTransport (boost::shared_ptr< sasl::TSasl > saslClient, boost::shared_ptr< TTransport > transport)
 
virtual bool isOpen ()
 
virtual bool peek ()
 
virtual void open ()
 
virtual void close ()
 
uint32_t read (uint8_t *buf, uint32_t len)
 
void write (const uint8_t *buf, uint32_t len)
 
virtual void flush ()
 
boost::shared_ptr< TTransport > getUnderlyingTransport ()
 
std::string getUsername ()
 

Protected Member Functions

virtual void handleSaslStartMessage ()
 Handle any startup messages. More...
 
void encodeInt (uint32_t x, uint8_t *buf, uint32_t offset)
 
uint32_t decodeInt (uint8_t *buf, uint32_t offset)
 
uint8_t * receiveSaslMessage (NegotiationStatus *status, uint32_t *length)
 
void sendSaslMessage (const NegotiationStatus status, const uint8_t *payload, const uint32_t length, bool flush=true)
 
uint32_t readLength ()
 
void writeLength (uint32_t length)
 
void shrinkBuffer ()
 

Protected Attributes

boost::shared_ptr< TTransport > transport_
 Underlying transport. More...
 
TMemoryBuffer * memBuf_
 Buffer for reading and writing. More...
 
boost::shared_ptr< sasl::TSaslsasl_
 
bool shouldWrap_
 IF true we wrap data in encryption. More...
 
bool isClient_
 True if this is a client. More...
 
boost::scoped_array< uint8_t > protoBuf_
 Buffer to hold protocol info. More...
 

Detailed Description

This transport implements the Simple Authentication and Security Layer (SASL). see: http://www.ietf.org/rfc/rfc2222.txt. It is based on and depends on the presence of the cyrus-sasl library. This is the client side.

Definition at line 39 of file TSaslClientTransport.h.

Constructor & Destructor Documentation

apache::thrift::transport::TSaslClientTransport::TSaslClientTransport ( boost::shared_ptr< sasl::TSasl saslClient,
boost::shared_ptr< TTransport >  transport 
)

Constructs a new TSaslTransport to act as a client. saslClient: the sasl object implimenting the underlying authentication handshake transport: the transport to read and write data.

Definition at line 35 of file TSaslClientTransport.cpp.

Member Function Documentation

void apache::thrift::transport::TSaslTransport::close ( )
virtualinherited

Closes the transport.

Definition at line 134 of file TSaslTransport.cpp.

References apache::thrift::transport::TSaslTransport::transport_.

uint32_t apache::thrift::transport::TSaslTransport::decodeInt ( uint8_t *  buf,
uint32_t  offset 
)
inlineprotectedinherited
void apache::thrift::transport::TSaslTransport::encodeInt ( uint32_t  x,
uint8_t *  buf,
uint32_t  offset 
)
inlineprotectedinherited
void apache::thrift::transport::TSaslTransport::flush ( )
virtualinherited

Flushes any pending data to be written. Typically used with buffered transport mechanisms.

Exceptions
TTransportExceptionif an error occurs

Definition at line 228 of file TSaslTransport.cpp.

References apache::thrift::transport::TSaslTransport::transport_.

boost::shared_ptr<TTransport> apache::thrift::transport::TSaslTransport::getUnderlyingTransport ( )
inlineinherited

Returns the transport underlying this one

Definition at line 136 of file TSaslTransport.h.

References apache::thrift::transport::TSaslTransport::transport_.

Referenced by impala::ThriftServer::ThriftServerEventProcessor::createContext().

string apache::thrift::transport::TSaslTransport::getUsername ( )
inherited

Returns the username associated with the underlying sasl connection.

Exceptions
TTransportExceptionif an error occurs

Definition at line 67 of file TSaslTransport.cpp.

References apache::thrift::transport::TSaslTransport::sasl_.

Referenced by impala::ThriftServer::ThriftServerEventProcessor::createContext().

bool apache::thrift::transport::TSaslTransport::isOpen ( )
virtualinherited

Whether this transport is open.

Definition at line 59 of file TSaslTransport.cpp.

References apache::thrift::transport::TSaslTransport::transport_.

bool apache::thrift::transport::TSaslTransport::peek ( )
virtualinherited

Tests whether there is more data to read or if the remote side is still open.

Definition at line 63 of file TSaslTransport.cpp.

References apache::thrift::transport::TSaslTransport::transport_.

uint32_t apache::thrift::transport::TSaslTransport::read ( uint8_t *  buf,
uint32_t  len 
)
inherited

Attempt to read up to the specified number of bytes into the string.

Parameters
bufReference to the location to write the data
lenHow many bytes to read
Returns
How many bytes were actually read
Exceptions
TTransportExceptionIf an error occurs

Definition at line 170 of file TSaslTransport.cpp.

References apache::thrift::transport::TSaslTransport::memBuf_, apache::thrift::transport::TSaslTransport::readLength(), apache::thrift::transport::TSaslTransport::sasl_, apache::thrift::transport::TSaslTransport::shouldWrap_, apache::thrift::transport::TSaslTransport::shrinkBuffer(), and apache::thrift::transport::TSaslTransport::transport_.

uint32_t apache::thrift::transport::TSaslTransport::readLength ( )
protectedinherited

Opens the transport for communications.

Returns
bool Whether the transport was successfully opened
Exceptions
TTransportExceptionif opening failed

Definition at line 138 of file TSaslTransport.cpp.

References apache::thrift::transport::TSaslTransport::decodeInt(), apache::thrift::transport::PAYLOAD_LENGTH_BYTES, and apache::thrift::transport::TSaslTransport::transport_.

Referenced by apache::thrift::transport::TSaslTransport::read().

uint8_t * apache::thrift::transport::TSaslTransport::receiveSaslMessage ( NegotiationStatus status,
uint32_t *  length 
)
protectedinherited
void apache::thrift::transport::TSaslTransport::sendSaslMessage ( const NegotiationStatus  status,
const uint8_t *  payload,
const uint32_t  length,
bool  flush = true 
)
protectedinherited

send message with SASL transport headers. status is put before the payload. If flush is false we delay flushing the underlying transport so that the following message will be in the same packet if necessary.

Definition at line 71 of file TSaslTransport.cpp.

References apache::thrift::transport::TSaslTransport::encodeInt(), apache::thrift::transport::HEADER_LENGTH, apache::thrift::transport::PAYLOAD_LENGTH_BYTES, apache::thrift::transport::STATUS_BYTES, and apache::thrift::transport::TSaslTransport::transport_.

Referenced by apache::thrift::transport::TSaslServerTransport::handleSaslStartMessage(), handleSaslStartMessage(), and apache::thrift::transport::TSaslTransport::open().

void apache::thrift::transport::TSaslTransport::shrinkBuffer ( )
protectedinherited

If memBuf_ is filled with bytes that are already read, and has crossed a size threshold (see implementation for exact value), resize the buffer to a default value.

Definition at line 149 of file TSaslTransport.cpp.

References DEFAULT_MEM_BUF_SIZE, and apache::thrift::transport::TSaslTransport::memBuf_.

Referenced by apache::thrift::transport::TSaslTransport::read().

void apache::thrift::transport::TSaslTransport::write ( const uint8_t *  buf,
uint32_t  len 
)
inherited

Writes the string in its entirety to the buffer.

Note: You must call flush() to ensure the data is actually written, and available to be read back in the future. Destroying a TTransport object does not automatically flush pending data–if you destroy a TTransport object with written but unflushed data, that data may be discarded.

Parameters
bufThe data to write out
Exceptions
TTransportExceptionif an error occurs

Definition at line 216 of file TSaslTransport.cpp.

References apache::thrift::transport::TSaslTransport::sasl_, apache::thrift::transport::TSaslTransport::shouldWrap_, apache::thrift::transport::TSaslTransport::transport_, and apache::thrift::transport::TSaslTransport::writeLength().

void apache::thrift::transport::TSaslTransport::writeLength ( uint32_t  length)
protectedinherited

Write the given integer as 4 bytes to the underlying transport.

Parameters
lengthThe length prefix of the next SASL message to write.
Exceptions
TTransportExceptionThrown if writing to the underlying transport fails.

Definition at line 209 of file TSaslTransport.cpp.

References apache::thrift::transport::TSaslTransport::encodeInt(), apache::thrift::transport::PAYLOAD_LENGTH_BYTES, and apache::thrift::transport::TSaslTransport::transport_.

Referenced by apache::thrift::transport::TSaslTransport::write().

Member Data Documentation

bool apache::thrift::transport::TSaslTransport::isClient_
protectedinherited
TMemoryBuffer* apache::thrift::transport::TSaslTransport::memBuf_
protectedinherited
boost::scoped_array<uint8_t> apache::thrift::transport::TSaslTransport::protoBuf_
protectedinherited

Buffer to hold protocol info.

Definition at line 165 of file TSaslTransport.h.

Referenced by apache::thrift::transport::TSaslTransport::receiveSaslMessage().

boost::shared_ptr<sasl::TSasl> apache::thrift::transport::TSaslTransport::sasl_
protectedinherited
bool apache::thrift::transport::TSaslTransport::shouldWrap_
protectedinherited

IF true we wrap data in encryption.

Definition at line 159 of file TSaslTransport.h.

Referenced by apache::thrift::transport::TSaslTransport::read(), and apache::thrift::transport::TSaslTransport::write().


The documentation for this class was generated from the following files: