use of com.swiftmq.amqp.v100.generated.messaging.message_format.Data in project swiftmq-client by iitsoftware.
the class EndpointImpl method performRequest.
public synchronized void performRequest(Request request) {
try {
dos.rewind();
Dumpalizer.dump(dos, request);
AMQPMessage msg = new AMQPMessage();
byte[] bytes = new byte[dos.getCount()];
System.arraycopy(dos.getBuffer(), 0, bytes, 0, bytes.length);
msg.addData(new Data(bytes));
Properties prop = new Properties();
prop.setReplyTo(replyAddress);
msg.setProperties(prop);
producer.send(msg);
} catch (Exception e) {
close();
}
}
use of com.swiftmq.amqp.v100.generated.messaging.message_format.Data in project swiftmq-client by iitsoftware.
the class EndpointImpl method poll.
public void poll() {
try {
AMQPMessage msg = consumer.receiveNoWait(this);
if (msg != null) {
Data data = msg.getData().get(0);
dis.reset();
dis.setBuffer(data.getValue());
Dumpable d = Dumpalizer.construct(dis, factory);
if (d instanceof Reply)
requestRegistry.setReply((Reply) d);
else
dispatch((Request) d);
pollerService.execute(poller);
}
} catch (Exception e) {
e.printStackTrace();
close();
}
}
use of com.swiftmq.amqp.v100.generated.messaging.message_format.Data in project swiftmq-client by iitsoftware.
the class Packager method getNextPacket.
public void getNextPacket(TransferFrame currentFrame) throws IOException {
currentFrame.setMore(AMQPBoolean.FALSE);
if (messageFormat != -1)
currentFrame.setMessageFormat(new MessageFormat(messageFormat));
currentPacketNumber++;
byte[] b = null;
if (dbis != null) {
int len = Math.min(dbis.available(), maxPacketLength - currentFrame.getPredictedSize());
b = new byte[len];
dbis.readFully(b);
} else {
if (maxPacketLength - currentFrame.getPredictedSize() - size >= 0) {
if (data.length != size) {
b = new byte[size];
System.arraycopy(data, 0, b, 0, size);
data = null;
} else
b = data;
} else {
if (dbis == null) {
dbis = new DataByteArrayInputStream();
dbis.setBuffer(data, 0, size);
}
int len = Math.min(dbis.available(), maxPacketLength - currentFrame.getPredictedSize());
b = new byte[len];
dbis.readFully(b);
}
}
if (hasMore())
currentFrame.setMore(AMQPBoolean.TRUE);
currentFrame.setPayload(b);
if (predictedNumberPackets == -1)
predictedNumberPackets = size / b.length + 1;
}
use of com.swiftmq.amqp.v100.generated.messaging.message_format.Data 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.generated.messaging.message_format.Data 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