use of com.swiftmq.amqp.v100.transport.HeartbeatFrame in project swiftmq-client by iitsoftware.
the class FrameReader method createSaslFrame.
/**
* Creates a SaslFrameIF object.
*
* @param in input stream
* @return frame
*/
public static SaslFrameIF createSaslFrame(LengthCaptureDataInput in) throws Exception {
long frameSize = 0;
byte dataOffset = 0;
byte typeCode = 0;
int channel = 0;
byte[] extendedHeader = null;
in.startCaptureLength();
// frame header
frameSize = in.readInt();
dataOffset = in.readByte();
typeCode = in.readByte();
if (!((typeCode == AMQPFrame.TYPE_CODE_AMQP_FRAME) || (typeCode == AMQPFrame.TYPE_CODE_SASL_FRAME)))
throw new IOException("Invalid frame type (" + typeCode + "), not an AMQP or SASL frame!");
channel = in.readUnsignedShort();
// extended header
int doff = dataOffset;
if (doff < 2)
throw new Exception("Malformed frame, data offset is " + doff);
if (doff > 2) {
extendedHeader = new byte[doff * 4 - 8];
in.readFully(extendedHeader);
}
// body
long bodySize = frameSize - doff * 4;
if (bodySize > 0) {
if (bodySize > Integer.MAX_VALUE)
throw new Exception("Frame body size (" + bodySize + ") is greater than Integer.MAX_VALUE (" + Integer.MAX_VALUE + ")");
} else
return new HeartbeatFrame(channel);
AMQPFrame frame = (AMQPFrame) SaslFrameFactory.create(channel, AMQPTypeDecoder.decode(in));
int plLength = (int) (frameSize - in.stopCaptureLength());
if (plLength > 0) {
byte[] b = new byte[plLength];
in.readFully(b);
frame.setPayload(b);
}
return frame;
}
use of com.swiftmq.amqp.v100.transport.HeartbeatFrame in project swiftmq-client by iitsoftware.
the class FrameReader method createFrame.
/**
* Creates a FrameIF object.
*
* @param in input stream
* @return frame
*/
public static FrameIF createFrame(LengthCaptureDataInput in) throws Exception {
long frameSize = 0;
byte dataOffset = 0;
byte typeCode = 0;
int channel = 0;
byte[] extendedHeader = null;
in.startCaptureLength();
// frame header
frameSize = in.readInt();
dataOffset = in.readByte();
typeCode = in.readByte();
if (!((typeCode == AMQPFrame.TYPE_CODE_AMQP_FRAME) || (typeCode == AMQPFrame.TYPE_CODE_SASL_FRAME)))
throw new IOException("Invalid frame type (" + typeCode + "), not an AMQP or SASL frame!");
channel = in.readUnsignedShort();
// extended header
int doff = dataOffset;
if (doff < 2)
throw new Exception("Malformed frame, data offset is " + doff);
if (doff > 2) {
extendedHeader = new byte[doff * 4 - 8];
in.readFully(extendedHeader);
}
// body
long bodySize = frameSize - doff * 4;
if (bodySize > 0) {
if (bodySize > Integer.MAX_VALUE)
throw new Exception("Frame body size (" + bodySize + ") is greater than Integer.MAX_VALUE (" + Integer.MAX_VALUE + ")");
} else
return new HeartbeatFrame(channel);
AMQPFrame frame = (AMQPFrame) FrameFactory.create(channel, AMQPTypeDecoder.decode(in));
int plLength = (int) (frameSize - in.stopCaptureLength());
if (plLength > 0) {
byte[] b = new byte[plLength];
in.readFully(b);
frame.setPayload(b);
}
return frame;
}
Aggregations