Package org.apache.thrift.transport
Class TFileTransport
- java.lang.Object
-
- org.apache.thrift.transport.TTransport
-
- 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
Nested Classes Modifier and Type Class Description static class
TFileTransport.chunkState
static class
TFileTransport.Event
static class
TFileTransport.tailPolicy
static class
TFileTransport.truncableBufferedInputStream
-
Field Summary
Fields Modifier and Type Field Description protected TSeekableFile
inputFile_
Underlying file being readprotected java.io.OutputStream
outputStream_
Underlying outputStream
-
Constructor Summary
Constructors Constructor Description TFileTransport(java.lang.String path, boolean readOnly)
File Transport ctorTFileTransport(TSeekableFile inputFile, boolean readOnly)
File Transport ctor
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description 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 Policyboolean
isOpen()
open if both input/output open unless readonlystatic void
main(java.lang.String[] args)
test programvoid
open()
Diverging from the cpp model and sticking to the TSocket model Files are not opened in ctor - but in explicit open callint
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 Policyvoid
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
-
-
-
-
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 fromreadOnly
- 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 fromreadOnly
- 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 classTTransport
- 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 classTTransport
- Throws:
TTransportException
- if the transport could not be opened
-
close
public void close()
Closes the transport.- Specified by:
close
in classTTransport
-
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 classTTransport
- Parameters:
buf
- Array to read intooff
- Index to start reading atlen
- 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 classTTransport
- Parameters:
buf
- Array to read intooff
- Index to start reading atlen
- 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 classTTransport
- Parameters:
buf
- The output data bufferoff
- The offset to start writing fromlen
- 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 classTTransport
- 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
-
-