Package org.firebirdsql.gds.impl.wire
Class XdrInputStream
- java.lang.Object
-
- java.io.InputStream
-
- java.io.FilterInputStream
-
- org.firebirdsql.gds.impl.wire.XdrInputStream
-
- All Implemented Interfaces:
java.io.Closeable
,java.lang.AutoCloseable
public final class XdrInputStream extends java.io.FilterInputStream
XdrInputStream
is an input stream for reading in data that is in the XDR format. AnXdrInputStream
instance is wrapped around an underlyingjava.io.InputStream
.This class is not thread-safe.
- Version:
- 1.0
- Author:
- Alejandro Alberola, David Jencks, Mark Rotteveel
-
-
Constructor Summary
Constructors Constructor Description XdrInputStream(java.io.InputStream in)
Create a new instance ofXdrInputStream
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
enableDecompression()
Wraps the underlying stream for zlib decompression.byte[]
readBuffer()
Read in a byte buffer.void
readFully(byte[] b, int off, int len)
Read a given amount of data from the underlying input stream.int
readInt()
Read in anint
.long
readLong()
Read in along
.byte[]
readRawBuffer(int len)
Read in a raw array of bytes.int
readShort()
Read in ashort
.java.lang.String
readString(Encoding encoding)
Read in aString
.void
setCipher(javax.crypto.Cipher cipher)
int
skipFully(int numbytes)
Skips the specified number of bytes.int
skipPadding(int length)
Skips the padding after a buffer of the specified length.-
Methods inherited from class java.io.FilterInputStream
available, close, mark, markSupported, read, read, read, reset, skip
-
-
-
-
Method Detail
-
skipPadding
public int skipPadding(int length) throws java.io.IOException
Skips the padding after a buffer of the specified length. The number of bytes to skip is calculated as(4 - length) & 3
.- Parameters:
length
- Length of the previously read buffer- Returns:
- Actual number of bytes skipped
- Throws:
java.io.IOException
- IOException if an error occurs while reading from the underlying input stream- See Also:
XdrOutputStream.writePadding(int, int)
-
skipFully
public int skipFully(int numbytes) throws java.io.IOException
Skips the specified number of bytes.- Parameters:
numbytes
- Number of bytes to skip.- Returns:
- Actual number of bytes skipped (usually
numbytes
, unless the underlying input stream is closed). - Throws:
java.io.IOException
- IOException if an error occurs while reading from the underlying input stream
-
readBuffer
public byte[] readBuffer() throws java.io.IOException
Read in a byte buffer.- Returns:
- The buffer that was read
- Throws:
java.io.IOException
- if an error occurs while reading from the underlying input stream
-
readRawBuffer
public byte[] readRawBuffer(int len) throws java.io.IOException
Read in a raw array of bytes.- Parameters:
len
- The number of bytes to read- Returns:
- The byte buffer that was read
- Throws:
java.io.IOException
- if an error occurs while reading from the underlying input stream
-
readString
public java.lang.String readString(Encoding encoding) throws java.io.IOException
Read in aString
.- Returns:
- The
String
that was read - Throws:
java.io.IOException
- if an error occurs while reading from the underlying input stream
-
readLong
public long readLong() throws java.io.IOException
Read in along
.- Returns:
- The
long
that was read - Throws:
java.io.IOException
- if an error occurs while reading from the underlying input stream
-
readInt
public int readInt() throws java.io.IOException
Read in anint
.- Returns:
- The
int
that was read - Throws:
java.io.IOException
- if an error occurs while reading from the underlying input stream
-
readShort
public int readShort() throws java.io.IOException
Read in ashort
.- Returns:
- The
short
that was read - Throws:
java.io.IOException
- if an error occurs while reading from the underlying input stream
-
readFully
public void readFully(byte[] b, int off, int len) throws java.io.IOException
Read a given amount of data from the underlying input stream. The data that is read is stored inb
, starting from offsetoff
.- Parameters:
b
- The byte buffer to hold the data that is readoff
- The offset at which to start storing data inb
len
- The number of bytes to be read- Throws:
java.io.IOException
- if an error occurs while reading from the underlying input stream
-
enableDecompression
@InternalApi public void enableDecompression() throws java.io.IOException
Wraps the underlying stream for zlib decompression.- Throws:
java.io.IOException
- If the underlying stream is already set up for decompression
-
setCipher
public void setCipher(javax.crypto.Cipher cipher) throws java.io.IOException
- Throws:
java.io.IOException
-
-