public class Packet
extends java.lang.Object
Modifier and Type | Field and Description |
---|---|
private static java.nio.charset.Charset |
CHARSET |
static int |
DATA_SOURCE_SOCKET_TIMEOUT |
static byte[] |
EMPTY |
(package private) static org.apache.commons.pool.ObjectPool |
packetPool |
private com.serotonin.util.queue.ByteQueue |
payload |
private static byte[] |
PAYLOAD_READ_BUFFER |
private static int |
PAYLOAD_READ_TIMEOUT |
static int |
PUBLISHER_SOCKET_TIMEOUT |
static int |
TEST_PACKET_SEND_DELAY |
private PacketType |
type |
Constructor and Description |
---|
Packet() |
Modifier and Type | Method and Description |
---|---|
static Packet |
borrowPacket(PacketType type,
com.serotonin.util.queue.ByteQueue payload) |
com.serotonin.util.queue.ByteQueue |
getPayload() |
PacketType |
getType() |
double |
popDouble() |
long |
popLong() |
java.lang.String |
popString() |
static void |
pushDouble(com.serotonin.util.queue.ByteQueue queue,
double d) |
static void |
pushLong(com.serotonin.util.queue.ByteQueue queue,
long l) |
static void |
pushString(com.serotonin.util.queue.ByteQueue queue,
java.lang.String s) |
private static int |
read4ByteSigned(java.io.InputStream in) |
static Packet |
readPacket(java.io.InputStream in,
int version) |
static Packet |
readPacketNoBlock(java.io.InputStream in,
int version) |
private static void |
readPayload(java.io.InputStream in,
Packet packet,
int length)
Data may be getting sent very regularly from the publisher, so if there is corruption in the stream an SO timeout
may not get thrown.
|
void |
release() |
private static void |
write4ByteSigned(java.io.OutputStream out,
int i) |
private static void |
writeHeader(java.io.OutputStream out,
int version,
PacketType type,
int length) |
static void |
writePacket(java.io.OutputStream out,
int version,
Packet packet) |
static void |
writePacket(java.io.OutputStream out,
int version,
PacketType type,
byte[] payload) |
static void |
writePacket(java.io.OutputStream out,
int version,
PacketType type,
com.serotonin.util.queue.ByteQueue payload) |
public static final int PUBLISHER_SOCKET_TIMEOUT
public static final int DATA_SOURCE_SOCKET_TIMEOUT
public static final int TEST_PACKET_SEND_DELAY
private static final int PAYLOAD_READ_TIMEOUT
private static final byte[] PAYLOAD_READ_BUFFER
private static final java.nio.charset.Charset CHARSET
public static final byte[] EMPTY
static final org.apache.commons.pool.ObjectPool packetPool
private PacketType type
private final com.serotonin.util.queue.ByteQueue payload
public static Packet borrowPacket(PacketType type, com.serotonin.util.queue.ByteQueue payload)
public static Packet readPacketNoBlock(java.io.InputStream in, int version) throws java.io.IOException, PersistentAbortException, PersistentProtocolException
java.io.IOException
PersistentAbortException
PersistentProtocolException
public static Packet readPacket(java.io.InputStream in, int version) throws java.io.IOException, PersistentAbortException, PersistentProtocolException
java.io.IOException
PersistentAbortException
PersistentProtocolException
private static void readPayload(java.io.InputStream in, Packet packet, int length) throws java.io.IOException, PayloadReadTimeoutException
in
- the socket input streampacket
- the packet we're trying to readlength
- the length of the payload to readjava.io.IOException
- if a read error occurs, including an SO timeoutPayloadReadTimeoutException
- if a payload read timeout occurspublic static void writePacket(java.io.OutputStream out, int version, Packet packet) throws java.io.IOException
java.io.IOException
public static void writePacket(java.io.OutputStream out, int version, PacketType type, byte[] payload) throws java.io.IOException
java.io.IOException
public static void writePacket(java.io.OutputStream out, int version, PacketType type, com.serotonin.util.queue.ByteQueue payload) throws java.io.IOException
java.io.IOException
private static void writeHeader(java.io.OutputStream out, int version, PacketType type, int length) throws java.io.IOException
java.io.IOException
public static void pushString(com.serotonin.util.queue.ByteQueue queue, java.lang.String s)
public static void pushLong(com.serotonin.util.queue.ByteQueue queue, long l)
public static void pushDouble(com.serotonin.util.queue.ByteQueue queue, double d)
private static void write4ByteSigned(java.io.OutputStream out, int i) throws java.io.IOException
java.io.IOException
private static int read4ByteSigned(java.io.InputStream in) throws java.io.IOException
java.io.IOException
public PacketType getType()
public com.serotonin.util.queue.ByteQueue getPayload()
public java.lang.String popString()
public long popLong()
public double popDouble()
public void release()