org.apache.thrift.transport
Class TFileTransport

java.lang.Object
  extended by org.apache.thrift.transport.TTransport
      extended by org.apache.thrift.transport.TFileTransport

public class TFileTransport
extends TTransport

FileTransport implementation of the TTransport interface. Currently this is a straightforward port of the cpp implementation It may make better sense to provide a basic stream access on top of the framed file format The FileTransport can then be a user of this framed file format with some additional logic for chunking.


Nested Class Summary
static class TFileTransport.chunkState
           
static class TFileTransport.Event
           
static class TFileTransport.tailPolicy
           
static class TFileTransport.truncableBufferedInputStream
           
 
Field Summary
protected  TSeekableFile inputFile_
          Underlying file being read
protected  java.io.OutputStream outputStream_
          Underlying outputStream
 
Constructor Summary
TFileTransport(java.lang.String path, boolean readOnly)
          File Transport ctor
TFileTransport(TSeekableFile inputFile, boolean readOnly)
          File Transport ctor
 
Method Summary
 void close()
          Closes the transport.
 void flush()
          Flush any pending data out of a transport buffer.
 int getCurChunk()
           
 int getNumChunks()
           
 TFileTransport.tailPolicy getTailPolicy()
          Get File Tailing Policy
 boolean isOpen()
          open if both input/output open unless readonly
static void main(java.lang.String[] args)
          test program
 void open()
          Diverging from the cpp model and sticking to the TSocket model Files are not opened in ctor - but in explicit open call
 int read(byte[] buf, int off, int len)
          Reads up to len bytes into buffer buf, starting at offset off.
 int readAll(byte[] buf, int off, int len)
          Cloned from TTransport.java:readAll().
 void seekToChunk(int chunk)
           
 void seekToEnd()
           
 TFileTransport.tailPolicy setTailPolicy(TFileTransport.tailPolicy policy)
          Set file Tailing Policy
 void write(byte[] buf, int off, int len)
          Writes up to len bytes from the buffer.
 
Methods inherited from class org.apache.thrift.transport.TTransport
consumeBuffer, getBuffer, getBufferPosition, getBytesRemainingInBuffer, peek, write
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

inputFile_

protected TSeekableFile inputFile_
Underlying file being read


outputStream_

protected java.io.OutputStream outputStream_
Underlying outputStream

Constructor Detail

TFileTransport

public TFileTransport(java.lang.String path,
                      boolean readOnly)
               throws java.io.IOException
File Transport ctor

Parameters:
path - File path to read and write from
readOnly - Whether this is a read-only transport
Throws:
java.io.IOException

TFileTransport

public TFileTransport(TSeekableFile inputFile,
                      boolean readOnly)
File Transport ctor

Parameters:
inputFile - open TSeekableFile to read/write from
readOnly - Whether this is a read-only transport
Method Detail

getTailPolicy

public TFileTransport.tailPolicy getTailPolicy()
Get File Tailing Policy

Returns:
current read policy

setTailPolicy

public TFileTransport.tailPolicy setTailPolicy(TFileTransport.tailPolicy policy)
Set file Tailing Policy

Parameters:
policy - New policy to set
Returns:
Old policy

isOpen

public boolean isOpen()
open if both input/output open unless readonly

Specified by:
isOpen in class TTransport
Returns:
true

open

public void open()
          throws TTransportException
Diverging from the cpp model and sticking to the TSocket model Files are not opened in ctor - but in explicit open call

Specified by:
open in class TTransport
Throws:
TTransportException - if the transport could not be opened

close

public void close()
Closes the transport.

Specified by:
close in class TTransport

readAll

public int readAll(byte[] buf,
                   int off,
                   int len)
            throws TTransportException
Cloned from TTransport.java:readAll(). Only difference is throwing an EOF exception where one is detected.

Overrides:
readAll in class TTransport
Parameters:
buf - Array to read into
off - Index to start reading at
len - Maximum number of bytes to read
Returns:
The number of bytes actually read, which must be equal to len
Throws:
TTransportException - if there was an error reading data

read

public int read(byte[] buf,
                int off,
                int len)
         throws TTransportException
Reads up to len bytes into buffer buf, starting at offset off.

Specified by:
read in class TTransport
Parameters:
buf - Array to read into
off - Index to start reading at
len - Maximum number of bytes to read
Returns:
The number of bytes actually read
Throws:
TTransportException - if there was an error reading data

getNumChunks

public int getNumChunks()
                 throws TTransportException
Throws:
TTransportException

getCurChunk

public int getCurChunk()
                throws TTransportException
Throws:
TTransportException

seekToChunk

public void seekToChunk(int chunk)
                 throws TTransportException
Throws:
TTransportException

seekToEnd

public void seekToEnd()
               throws TTransportException
Throws:
TTransportException

write

public void write(byte[] buf,
                  int off,
                  int len)
           throws TTransportException
Writes up to len bytes from the buffer.

Specified by:
write in class TTransport
Parameters:
buf - The output data buffer
off - The offset to start writing from
len - The number of bytes to write
Throws:
TTransportException - if there was an error writing data

flush

public void flush()
           throws TTransportException
Flush any pending data out of a transport buffer.

Overrides:
flush in class TTransport
Throws:
TTransportException - if there was an error writing out data.

main

public static void main(java.lang.String[] args)
                 throws java.lang.Exception
test program

Throws:
java.lang.Exception