Search in sources :

Example 36 with Header

use of org.apache.qpid.server.protocol.v0_10.transport.Header in project qpid-broker-j by apache.

the class PropertyConverter_0_10_to_InternalTest method testApplicationHeadersConversion.

public void testApplicationHeadersConversion() {
    Map<String, Object> headers = new HashMap<>();
    headers.put("testProperty1", "testProperty1Value");
    headers.put("intProperty", 1);
    headers.put("nullProperty", null);
    final MessageProperties messageProperties = new MessageProperties();
    messageProperties.setApplicationHeaders(headers);
    MessageTransferMessage message = createTestMessage(messageProperties);
    final InternalMessage convertedMessage = _messageConverter.convert(message, _namedAddressSpace);
    Map<String, Object> header = convertedMessage.getMessageHeader().getHeaderMap();
    assertEquals("Unexpected headers", headers, new HashMap<>(header));
}
Also used : InternalMessage(org.apache.qpid.server.message.internal.InternalMessage) HashMap(java.util.HashMap) MessageProperties(org.apache.qpid.server.protocol.v0_10.transport.MessageProperties)

Example 37 with Header

use of org.apache.qpid.server.protocol.v0_10.transport.Header in project qpid-broker-j by apache.

the class PropertyConverter_Internal_to_v0_10Test method testReplyToConversionWhenQueueIsSpecified.

public void testReplyToConversionWhenQueueIsSpecified() throws IOException {
    final AMQMessageHeader header = mock(AMQMessageHeader.class);
    final String replyTo = "myTestQueue";
    final Queue queue = mock(Queue.class);
    when(queue.getName()).thenReturn(replyTo);
    when(_addressSpace.getAttainedMessageDestination(replyTo)).thenReturn(queue);
    when(header.getReplyTo()).thenReturn(replyTo);
    InternalMessage originalMessage = createTestMessage(header);
    MessageTransferMessage convertedMessage = _messageConverter.convert(originalMessage, _addressSpace);
    final ReplyTo convertedReplyTo = convertedMessage.getHeader().getMessageProperties().getReplyTo();
    assertEquals("Unexpected exchange", "", convertedReplyTo.getExchange());
    assertEquals("Unexpected routing key", replyTo, convertedReplyTo.getRoutingKey());
}
Also used : ReplyTo(org.apache.qpid.server.protocol.v0_10.transport.ReplyTo) InternalMessage(org.apache.qpid.server.message.internal.InternalMessage) AMQMessageHeader(org.apache.qpid.server.message.AMQMessageHeader) Matchers.anyString(org.mockito.Matchers.anyString) AMQShortString(org.apache.qpid.server.protocol.v0_8.AMQShortString) Queue(org.apache.qpid.server.model.Queue)

Example 38 with Header

use of org.apache.qpid.server.protocol.v0_10.transport.Header in project qpid-broker-j by apache.

the class MessageConverter_v0_10 method convertMetaData.

private MessageMetaData_0_10 convertMetaData(ServerMessage serverMsg) {
    DeliveryProperties deliveryProps = new DeliveryProperties();
    MessageProperties messageProps = new MessageProperties();
    int size = (int) serverMsg.getSize();
    deliveryProps.setExpiration(serverMsg.getExpiration());
    deliveryProps.setPriority(MessageDeliveryPriority.get(serverMsg.getMessageHeader().getPriority()));
    deliveryProps.setRoutingKey(serverMsg.getInitialRoutingAddress());
    deliveryProps.setTimestamp(serverMsg.getMessageHeader().getTimestamp());
    messageProps.setContentEncoding(serverMsg.getMessageHeader().getEncoding());
    messageProps.setContentLength(size);
    messageProps.setContentType(serverMsg.getMessageHeader().getMimeType());
    if (serverMsg.getMessageHeader().getCorrelationId() != null) {
        messageProps.setCorrelationId(serverMsg.getMessageHeader().getCorrelationId().getBytes(UTF_8));
    }
    Header header = new Header(deliveryProps, messageProps, null);
    return new MessageMetaData_0_10(header, size, serverMsg.getArrivalTime());
}
Also used : Header(org.apache.qpid.server.protocol.v0_10.transport.Header) MessageProperties(org.apache.qpid.server.protocol.v0_10.transport.MessageProperties) DeliveryProperties(org.apache.qpid.server.protocol.v0_10.transport.DeliveryProperties)

Example 39 with Header

use of org.apache.qpid.server.protocol.v0_10.transport.Header in project qpid-broker-j by apache.

the class ServerAssembler method assemble.

private void assemble(ServerFrame frame, QpidByteBuffer frameBuffer) {
    try {
        ServerDecoder dec = new ServerDecoder(frameBuffer);
        int channel = frame.getChannel();
        Method command;
        switch(frame.getType()) {
            case CONTROL:
                int controlType = dec.readUint16();
                Method control = Method.create(controlType);
                control.read(dec);
                emit(channel, control);
                break;
            case COMMAND:
                int commandType = dec.readUint16();
                // read in the session header, right now we don't use it
                int hdr = dec.readUint16();
                command = Method.create(commandType);
                command.setSync((0x0001 & hdr) != 0);
                command.read(dec);
                if (command.hasPayload() && !frame.isLastSegment()) {
                    setIncompleteCommand(channel, command);
                } else {
                    emit(channel, command);
                }
                break;
            case HEADER:
                command = getIncompleteCommand(channel);
                List<Struct> structs = null;
                DeliveryProperties deliveryProps = null;
                MessageProperties messageProps = null;
                while (dec.hasRemaining()) {
                    Struct struct = dec.readStruct32();
                    if (struct instanceof DeliveryProperties && deliveryProps == null) {
                        deliveryProps = (DeliveryProperties) struct;
                    } else if (struct instanceof MessageProperties && messageProps == null) {
                        messageProps = (MessageProperties) struct;
                    } else {
                        if (structs == null) {
                            structs = new ArrayList<>(2);
                        }
                        structs.add(struct);
                    }
                }
                command.setHeader(new Header(deliveryProps, messageProps, structs));
                if (frame.isLastSegment()) {
                    setIncompleteCommand(channel, null);
                    emit(channel, command);
                }
                break;
            case BODY:
                command = getIncompleteCommand(channel);
                command.setBody(frameBuffer);
                setIncompleteCommand(channel, null);
                emit(channel, command);
                break;
            default:
                throw new IllegalStateException("unknown frame type: " + frame.getType());
        }
    } finally {
        frameBuffer.dispose();
    }
}
Also used : ProtocolHeader(org.apache.qpid.server.protocol.v0_10.transport.ProtocolHeader) Header(org.apache.qpid.server.protocol.v0_10.transport.Header) MessageProperties(org.apache.qpid.server.protocol.v0_10.transport.MessageProperties) ArrayList(java.util.ArrayList) Method(org.apache.qpid.server.protocol.v0_10.transport.Method) DeliveryProperties(org.apache.qpid.server.protocol.v0_10.transport.DeliveryProperties) Struct(org.apache.qpid.server.protocol.v0_10.transport.Struct)

Example 40 with Header

use of org.apache.qpid.server.protocol.v0_10.transport.Header in project qpid-broker-j by apache.

the class ServerDisassembler method method.

private void method(Method method, SegmentType type) {
    ServerEncoder enc = _encoder;
    enc.init();
    enc.writeUint16(method.getEncodedType());
    if (type == SegmentType.COMMAND) {
        if (method.isSync()) {
            enc.writeUint16(0x0101);
        } else {
            enc.writeUint16(0x0100);
        }
    }
    method.write(enc);
    int methodLimit = enc.position();
    byte flags = FIRST_SEG;
    boolean payload = method.hasPayload();
    if (!payload) {
        flags |= LAST_SEG;
    }
    int headerLimit = -1;
    if (payload) {
        final Header hdr = method.getHeader();
        if (hdr != null) {
            if (hdr.getDeliveryProperties() != null) {
                enc.writeStruct32(hdr.getDeliveryProperties());
            }
            if (hdr.getMessageProperties() != null) {
                enc.writeStruct32(hdr.getMessageProperties());
            }
            if (hdr.getNonStandardProperties() != null) {
                for (Struct st : hdr.getNonStandardProperties()) {
                    enc.writeStruct32(st);
                }
            }
        }
        headerLimit = enc.position();
    }
    synchronized (_sendLock) {
        try (QpidByteBuffer buf = enc.getBuffer()) {
            try (QpidByteBuffer duplicate = buf.view(0, methodLimit)) {
                fragment(flags, type, method, duplicate);
            }
            if (payload) {
                QpidByteBuffer body = method.getBody();
                buf.limit(headerLimit);
                buf.position(methodLimit);
                try (QpidByteBuffer slice = buf.slice()) {
                    fragment(body == null ? LAST_SEG : 0x0, SegmentType.HEADER, method, slice);
                }
                if (body != null) {
                    try (QpidByteBuffer dup = body.duplicate()) {
                        fragment(LAST_SEG, SegmentType.BODY, method, dup);
                    }
                }
            }
        }
    }
}
Also used : ProtocolHeader(org.apache.qpid.server.protocol.v0_10.transport.ProtocolHeader) Header(org.apache.qpid.server.protocol.v0_10.transport.Header) QpidByteBuffer(org.apache.qpid.server.bytebuffer.QpidByteBuffer) Struct(org.apache.qpid.server.protocol.v0_10.transport.Struct)

Aggregations

DeliveryProperties (org.apache.qpid.server.protocol.v0_10.transport.DeliveryProperties)28 MessageProperties (org.apache.qpid.server.protocol.v0_10.transport.MessageProperties)22 MessageTransferMessage (org.apache.qpid.server.protocol.v0_10.MessageTransferMessage)19 Header (org.apache.qpid.server.protocol.v1_0.type.messaging.Header)19 Message_1_0 (org.apache.qpid.server.protocol.v1_0.Message_1_0)17 Header (org.apache.qpid.server.protocol.v0_10.transport.Header)12 Properties (org.apache.qpid.server.protocol.v1_0.type.messaging.Properties)10 ReplyTo (org.apache.qpid.server.protocol.v0_10.transport.ReplyTo)8 Struct (org.apache.qpid.server.protocol.v0_10.transport.Struct)8 ApplicationProperties (org.apache.qpid.server.protocol.v1_0.type.messaging.ApplicationProperties)8 MessageAnnotations (org.apache.qpid.server.protocol.v1_0.type.messaging.MessageAnnotations)8 Matchers.anyString (org.mockito.Matchers.anyString)8 DeliveryAnnotations (org.apache.qpid.server.protocol.v1_0.type.messaging.DeliveryAnnotations)7 QpidByteBuffer (org.apache.qpid.server.bytebuffer.QpidByteBuffer)6 ProtocolHeader (org.apache.qpid.server.protocol.v0_10.transport.ProtocolHeader)6 AMQShortString (org.apache.qpid.server.protocol.v0_8.AMQShortString)6 AMQMessageHeader (org.apache.qpid.server.message.AMQMessageHeader)5 InternalMessage (org.apache.qpid.server.message.internal.InternalMessage)5 Date (java.util.Date)4 MessageMetaData_0_10 (org.apache.qpid.server.protocol.v0_10.MessageMetaData_0_10)4