Mitsuba Renderer  0.5.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
mitsuba::SSHStream Class Reference

Stream implementation based on an encrypted SSH tunnel. More...

#include <mitsuba/core/sshstream.h>

+ Inheritance diagram for mitsuba::SSHStream:

Public Member Functions

std::string toString () const
 Return a string representation. More...
 
virtual const ClassgetClass () const
 Retrieve this object's class. More...
 
Constructors
 SSHStream (const std::string &userName, const std::string &hostName, const std::vector< std::string > &cmdLine, int port=22, int timeout=10)
 Create a new SSH stream. More...
 
SSH stream-specific features
const std::string & getHostName () const
 Return the destination machine's host name. More...
 
const std::string & getUserName () const
 Return the user name used for authentication. More...
 
size_t getReceivedBytes () const
 Return the number of received bytes. More...
 
size_t getSentBytes () const
 Return the number of sent bytes. More...
 
Implementation of the Stream interface
void read (void *ptr, size_t size)
 Read a specified amount of data from the stream. More...
 
void write (const void *ptr, size_t size)
 Write a specified amount of data into the stream. More...
 
void seek (size_t pos)
 Seek to a position inside the stream. More...
 
size_t getPos () const
 Get the current position inside the stream. More...
 
size_t getSize () const
 Return the size of the stream. More...
 
void truncate (size_t size)
 Truncate the stream to a given size. More...
 
void flush ()
 Flush the stream's buffers. More...
 
bool canWrite () const
 Can we write to the stream? More...
 
bool canRead () const
 Can we read from the stream? More...
 
- Public Member Functions inherited from mitsuba::Stream
 Stream ()
 Create a new stream. More...
 
void skip (size_t amount)
 Skip the given number of bytes. More...
 
void writeString (const std::string &value)
 Write a null-terminated string to the stream. More...
 
void writeLine (const std::string &value)
 Write a string followed by a newline. More...
 
void writeShort (short value)
 Write a signed short (16 bit) to the stream. More...
 
void writeShortArray (const short *values, size_t size)
 Write an array of signed shorts (16 bit) to the stream. More...
 
template<size_t N>
void writeShortArray (const short(&values)[N])
 Write an array of known size of signed shorts (16 bit) to the stream. More...
 
void writeUShort (unsigned short value)
 Write an unsigned short (16 bit) to the stream. More...
 
void writeUShortArray (const unsigned short *values, size_t size)
 Write an array of unsigned shorts (16 bit) to the stream. More...
 
template<size_t N>
void writeUShortArray (const unsigned short(&values)[N])
 Write an array of known size of unsigned shorts (16 bit) to the stream. More...
 
void writeInt (int value)
 Write a signed int (32 bit) to the stream. More...
 
void writeIntArray (const int *values, size_t size)
 Write an array of signed ints (32 bit) to the stream. More...
 
template<size_t N>
void writeIntArray (const int(&values)[N])
 Write an array of known size of signed ints (32 bit) to the stream. More...
 
void writeUInt (unsigned int value)
 Write an unsigned int (32 bit) to the stream. More...
 
void writeUIntArray (const unsigned int *values, size_t size)
 Write an array of unsigned ints (32 bit) to the stream. More...
 
template<size_t N>
void writeUIntArray (const unsigned int(&values)[N])
 Write an array of known size of unsigned ints (32 bit) to the stream. More...
 
void writeLong (int64_t value)
 Write a signed int (64 bit) to the stream. More...
 
void writeLongArray (const int64_t *values, size_t size)
 Write an array of signed ints (64 bit) to the stream. More...
 
template<size_t N>
void writeLongArray (const int64_t(&values)[N])
 Write an array of known size of signed ints (64 bit) to the stream. More...
 
void writeULong (uint64_t value)
 Write an unsigned int (64 bit) to the stream. More...
 
void writeSize (size_t value)
 Write a size value to the stream. More...
 
void writeULongArray (const uint64_t *values, size_t size)
 Write an array of unsigned ints (64 bit) to the stream. More...
 
template<size_t N>
void writeULongArray (const uint64_t(&values)[N])
 Write an array of known size of unsigned ints (64 bit) to the stream. More...
 
void writeChar (char value)
 Write a signed character (8 bit) to the stream. More...
 
void writeUChar (unsigned char value)
 Write an unsigned character (8 bit) to the stream. More...
 
void writeBool (bool value)
 Write a boolean (8 bit) to the stream. More...
 
void writeHalf (half value)
 Write a half-precision floating point number (16 bit) to the stream. More...
 
void writeHalfArray (const half *data, size_t size)
 Write a half-precision floating point array (16 bit) to the stream. More...
 
template<size_t N>
void writeHalfArray (const half(&values)[N])
 Write a known size half-precision floating point array (16 bit) to the stream. More...
 
void writeSingle (float value)
 Write a single-precision floating point number (32 bit) to the stream. More...
 
void writeSingleArray (const float *data, size_t size)
 Write a single-precision floating point array (32 bit) to the stream. More...
 
template<size_t N>
void writeSingleArray (const float(&values)[N])
 Write a known size single-precision floating point array (32 bit) to the stream. More...
 
void writeDouble (double value)
 Write a double-precision floating point number (64 bit) to the stream. More...
 
void writeDoubleArray (const double *data, size_t size)
 Write a double-precision floating point array (64 bit) to the stream. More...
 
template<size_t N>
void writeDoubleArray (const double(&values)[N])
 Write a known size double-precision floating point array (64 bit) to the stream. More...
 
void writeFloat (Float value)
 Write a floating point number (configured precision) to the stream. More...
 
void writeFloatArray (const Float *data, size_t size)
 Write an array of floating point values (configured precision) to the stream. More...
 
template<size_t N>
void writeFloatArray (const Float(&values)[N])
 Write a known size array of floating point values (configured precision) to the stream. More...
 
bool isEOF () const
 Return whether we are at the end of the stream. More...
 
std::string readLine ()
 Read a line from the stream and return it as a string. More...
 
std::string readString ()
 Read a null-terminated string from the stream. More...
 
short readShort ()
 Read a signed short (16 bit) from the stream. More...
 
void readShortArray (short *dest, size_t size)
 Read an array of signed shorts (16 bit) from the stream. More...
 
template<size_t N>
void readShortArray (short(&values)[N])
 Read an array of known size of signed shorts (16 bit) from the stream. More...
 
unsigned short readUShort ()
 Read an unsigned short (16 bit) from the stream. More...
 
void readUShortArray (unsigned short *dest, size_t size)
 Read an array of unsigned shorts (16 bit) from the stream. More...
 
template<size_t N>
void readUShortArray (short(&values)[N])
 Read an array of known size of unsigned shorts (16 bit) from the stream. More...
 
int readInt ()
 Read a signed int (32 bit) from the stream. More...
 
void readIntArray (int *dst, size_t size)
 Read an array of signed ints (32 bit) from the stream. More...
 
template<size_t N>
void readIntArray (int(&values)[N])
 Read an array of known size of signed ints (32 bit) from the stream. More...
 
unsigned int readUInt ()
 Read an unsigned int (32 bit) from the stream. More...
 
void readUIntArray (unsigned int *dest, size_t size)
 Read an array of unsigned ints (32 bit) from the stream. More...
 
template<size_t N>
void readUIntArray (int(&values)[N])
 Read an array of known size of unsigned ints (32 bit) from the stream. More...
 
int64_t readLong ()
 Read a signed int (64 bit) from the stream. More...
 
void readLongArray (int64_t *dst, size_t size)
 Read an array of signed ints (64 bit) from the stream. More...
 
template<size_t N>
void readLongArray (int64_t(&values)[N])
 Read an array of known size of signed ints (64 bit) from the stream. More...
 
uint64_t readULong ()
 Read an unsigned int (64 bit) from the stream. More...
 
size_t readSize ()
 Read a size value from the stream. More...
 
void readULongArray (uint64_t *dst, size_t size)
 Read an array of unsigned ints (64 bit) from the stream. More...
 
template<size_t N>
void readULongArray (uint64_t(&values)[N])
 Read an array of known size of unsigned ints (64 bit) from the stream. More...
 
char readChar ()
 Read a signed character (8 bit) from the stream. More...
 
unsigned char readUChar ()
 Read an unsigned character (8 bit) from the stream. More...
 
bool readBool ()
 Read a boolean (8 bit) from the stream. More...
 
half readHalf ()
 Read a half-precision floating point number (16 bit) from the stream. More...
 
void readHalfArray (half *data, size_t size)
 Read a half-precision floating point array (16 bit) from the stream. More...
 
template<size_t N>
void readHalfArray (half(&values)[N])
 Read a known-size half-precision floating point array (16 bit) from the stream. More...
 
float readSingle ()
 Read a single-precision floating point number (32 bit) from the stream. More...
 
void readSingleArray (float *data, size_t size)
 Read a single-precision floating point array (32 bit) from the stream. More...
 
template<size_t N>
void readSingleArray (float(&values)[N])
 Read a known-size single-precision floating point array (32 bit) from the stream. More...
 
double readDouble ()
 Read a double-precision floating point number (64 bit) from the stream. More...
 
void readDoubleArray (double *data, size_t size)
 Read a double-precision floating point array (64 bit) from the stream. More...
 
template<size_t N>
void readDoubleArray (double(&values)[N])
 Read a known-size double-precision floating point array (64 bit) from the stream. More...
 
Float readFloat ()
 Write a floating point number (configured precision) to the stream. More...
 
void readFloatArray (Float *data, size_t size)
 Write an array of floating point values (configured precision) to the stream. More...
 
template<size_t N>
void readFloatArray (Float(&values)[N])
 Read a known-size array of floating point values (configured precision) to the stream. More...
 
void copyTo (Stream *stream, int64_t numBytes=-1)
 Copy content from this stream into another stream. More...
 
template<typename T >
readElement ()
 Read an element from the stream (uses partial template specialization to select a method appropriate to the data type) More...
 
template<typename T >
void writeElement (T value)
 Write an element to the stream (uses partial template specialization to select a method appropriate to the data type) More...
 
template<typename T >
void readArray (T *array, size_t count)
 Read an array from the stream (uses partial template specialization to select a method appropriate to the data type) More...
 
template<typename T , size_t N>
void readArray (T(&arr)[N])
 Read a known-size array from the stream (uses partial template specialization to select a method appropriate to the data type) More...
 
template<typename T >
void writeArray (const T *array, size_t count)
 Write an array to the stream (uses partial template specialization to select a method appropriate to the data type) More...
 
template<typename T , size_t N>
void writeArray (const T(&arr)[N])
 Write a known-size array to the stream (uses partial template specialization to select a method appropriate to the data type) More...
 
void setByteOrder (EByteOrder byteOrder)
 Set the stream byte order. More...
 
EByteOrder getByteOrder () const
 Return the byte order of this stream. More...
 
- Public Member Functions inherited from Object
 Object ()
 Construct a new object. More...
 
int getRefCount () const
 Return the current reference count. More...
 
void incRef () const
 Increase the reference count of the object by one. More...
 
void decRef (bool autoDeallocate=true) const
 Decrease the reference count of the object and possibly deallocate it. More...
 

Static Public Attributes

static Classm_theClass
 
- Static Public Attributes inherited from mitsuba::Stream
static Classm_theClass
 
- Static Public Attributes inherited from Object
static Classm_theClass
 Pointer to the object's class descriptor. More...
 

Protected Member Functions

virtual ~SSHStream ()
 Virtual destructor. More...
 
- Protected Member Functions inherited from mitsuba::Stream
virtual ~Stream ()
 Virtual destructor. More...
 
- Protected Member Functions inherited from Object
virtual ~Object ()
 Virtual private deconstructor. (Will only be called by ref) More...
 

Additional Inherited Members

- Public Types inherited from mitsuba::Stream
enum  EByteOrder { EBigEndian = 0, ELittleEndian = 1, ENetworkByteOrder = EBigEndian }
 Defines the byte order to use in this Stream. More...
 
- Static Public Member Functions inherited from mitsuba::Stream
static EByteOrder getHostByteOrder ()
 Return the byte order of the underlying machine. More...
 
- Static Public Member Functions inherited from Object
static void staticInitialization ()
 Initializes the built-in reference count debugger (if enabled) More...
 
static void staticShutdown ()
 Free the memory taken by staticInitialization() More...
 

Detailed Description

Stream implementation based on an encrypted SSH tunnel.

This class remotely starts a program and exposes its stdin/stdout streams through an instance of Stream. To make all of this work, passwordless authentication must be enabled (for example by using public key authentication in addition to a running ssh-agent, which stores the decrypted private key).

On Windows, things are implemented a bit differently: Instead of OpenSSH, plink.exe (from PUTTY) is used and must be available in $PATH. For passwordless authentication, convert your private key to PuTTY's format (with the help of puttygen.exe). Afterwards, pageant.exe is required to load and authenticate the key.

Note: SSH streams are set to use network byte order by default.

Constructor & Destructor Documentation

mitsuba::SSHStream::SSHStream ( const std::string &  userName,
const std::string &  hostName,
const std::vector< std::string > &  cmdLine,
int  port = 22,
int  timeout = 10 
)

Create a new SSH stream.

The timeout parameter specifies specifies the maximum amount of time that can be spent before failing to create the initial connection. This feature is unsupported (and ignored) on Windows.

Parameters
userNameUsername to use for the authentication
hostNameDestination host name
cmdLineCommand (with arguments) to be executed on the remote side
portDestination port
timeoutMaximum time to use for the connection attempt (in seconds)
virtual mitsuba::SSHStream::~SSHStream ( )
protectedvirtual

Virtual destructor.

The destructor frees all resources and closes the socket if it is still open

Member Function Documentation

bool mitsuba::SSHStream::canRead ( ) const
virtual

Can we read from the stream?

Implements mitsuba::Stream.

bool mitsuba::SSHStream::canWrite ( ) const
virtual

Can we write to the stream?

Implements mitsuba::Stream.

void mitsuba::SSHStream::flush ( )
virtual

Flush the stream's buffers.

Implements mitsuba::Stream.

virtual const Class* mitsuba::SSHStream::getClass ( ) const
virtual

Retrieve this object's class.

Reimplemented from mitsuba::Stream.

const std::string& mitsuba::SSHStream::getHostName ( ) const

Return the destination machine's host name.

size_t mitsuba::SSHStream::getPos ( ) const
virtual

Get the current position inside the stream.

Implements mitsuba::Stream.

size_t mitsuba::SSHStream::getReceivedBytes ( ) const

Return the number of received bytes.

size_t mitsuba::SSHStream::getSentBytes ( ) const

Return the number of sent bytes.

size_t mitsuba::SSHStream::getSize ( ) const
virtual

Return the size of the stream.

Implements mitsuba::Stream.

const std::string& mitsuba::SSHStream::getUserName ( ) const

Return the user name used for authentication.

void mitsuba::SSHStream::read ( void *  ptr,
size_t  size 
)
virtual

Read a specified amount of data from the stream.

Throws an exception when the stream ended prematurely

Implements mitsuba::Stream.

void mitsuba::SSHStream::seek ( size_t  pos)
virtual

Seek to a position inside the stream.

Implements mitsuba::Stream.

std::string mitsuba::SSHStream::toString ( ) const
virtual

Return a string representation.

Reimplemented from mitsuba::Stream.

void mitsuba::SSHStream::truncate ( size_t  size)
virtual

Truncate the stream to a given size.

Implements mitsuba::Stream.

void mitsuba::SSHStream::write ( const void *  ptr,
size_t  size 
)
virtual

Write a specified amount of data into the stream.

Throws an exception when not all data could be written

Implements mitsuba::Stream.

Member Data Documentation

Class* mitsuba::SSHStream::m_theClass
static

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