Search in sources :

Example 6 with Data

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();
    }
}
Also used : Data(com.swiftmq.amqp.v100.generated.messaging.message_format.Data) Properties(com.swiftmq.amqp.v100.generated.messaging.message_format.Properties) AMQPMessage(com.swiftmq.amqp.v100.messaging.AMQPMessage)

Example 7 with Data

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();
    }
}
Also used : Data(com.swiftmq.amqp.v100.generated.messaging.message_format.Data) AMQPMessage(com.swiftmq.amqp.v100.messaging.AMQPMessage) Dumpable(com.swiftmq.tools.dump.Dumpable)

Example 8 with Data

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;
}
Also used : MessageFormat(com.swiftmq.amqp.v100.generated.transport.definitions.MessageFormat) DataByteArrayInputStream(com.swiftmq.tools.util.DataByteArrayInputStream)

Example 9 with Data

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;
}
Also used : AMQPFrame(com.swiftmq.amqp.v100.transport.AMQPFrame) HeartbeatFrame(com.swiftmq.amqp.v100.transport.HeartbeatFrame) IOException(java.io.IOException) IOException(java.io.IOException)

Example 10 with Data

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;
}
Also used : AMQPFrame(com.swiftmq.amqp.v100.transport.AMQPFrame) HeartbeatFrame(com.swiftmq.amqp.v100.transport.HeartbeatFrame) IOException(java.io.IOException) IOException(java.io.IOException)

Aggregations

Data (com.swiftmq.amqp.v100.generated.messaging.message_format.Data)8 AMQPMessage (com.swiftmq.amqp.v100.messaging.AMQPMessage)8 IOException (java.io.IOException)5 StreamException (com.rabbitmq.stream.StreamException)2 AmqpSequence (com.swiftmq.amqp.v100.generated.messaging.message_format.AmqpSequence)2 AmqpValue (com.swiftmq.amqp.v100.generated.messaging.message_format.AmqpValue)2 Properties (com.swiftmq.amqp.v100.generated.messaging.message_format.Properties)2 AMQPFrame (com.swiftmq.amqp.v100.transport.AMQPFrame)2 HeartbeatFrame (com.swiftmq.amqp.v100.transport.HeartbeatFrame)2 Dumpable (com.swiftmq.tools.dump.Dumpable)2 List (java.util.List)2 Map (java.util.Map)2 com.rabbitmq.stream.amqp (com.rabbitmq.stream.amqp)1 AMQPException (com.swiftmq.amqp.v100.client.AMQPException)1 com.swiftmq.amqp.v100.generated.messaging.message_format (com.swiftmq.amqp.v100.generated.messaging.message_format)1 MessageFormat (com.swiftmq.amqp.v100.generated.transport.definitions.MessageFormat)1 SequenceNo (com.swiftmq.amqp.v100.generated.transport.definitions.SequenceNo)1 AMQPBinary (com.swiftmq.amqp.v100.types.AMQPBinary)1 AMQPMap (com.swiftmq.amqp.v100.types.AMQPMap)1 AMQPString (com.swiftmq.amqp.v100.types.AMQPString)1