Package org.yamcs.tctm
Class GenericPacketInputStream
- java.lang.Object
-
- org.yamcs.tctm.GenericPacketInputStream
-
- All Implemented Interfaces:
PacketInputStream
public class GenericPacketInputStream extends Object implements PacketInputStream
Generic packet reader that splits the stream into packets based on the length of the packetInspired from Netty's LengthFieldBasedFrameDecoder
The following configuration variables are used
- maxPacketLength - the maximum packet length; if a packet with the length greater than this would be received, the input stream is closed and an exception is raised. The length of the packet considered here is the number of data bytes read from the stream - that is including the length field itself and the bytes to strip at the beginning if set (see below)
- lengthFieldOffset - the offset in the packet where the length is read from
- lengthFieldLength - the size in bytes of the length field
- lengthAdjustment - after reading the length from the configured offset, this variable is added to it to determine the real length
- initialBytesToStrip - after reading the packet, strip this number of bytes from the beginning
All the above configuration parameters have to be set, otherwise a ConfigurationException will be thrown.
-
-
Constructor Summary
Constructors Constructor Description GenericPacketInputStream(InputStream inputStream, Map<String,Object> args)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description byte[]readPacket()read the next packet - blocking if necessary until all the data is available.
-
-
-
Constructor Detail
-
GenericPacketInputStream
public GenericPacketInputStream(InputStream inputStream, Map<String,Object> args)
-
-
Method Detail
-
readPacket
public byte[] readPacket() throws IOException, PacketTooLongExceptionDescription copied from interface:PacketInputStreamread the next packet - blocking if necessary until all the data is available.- Specified by:
readPacketin interfacePacketInputStream- Returns:
- the next packet read from the input stream.
- Throws:
EOFException- if this input stream reaches the end.IOException- an I/O error has occurredPacketTooLongException- if a packet read is longer than a defined limit
-
-