use of org.apache.qpid.server.protocol.v0_10.MessageMetaData_0_10 in project qpid-broker-j by apache.
the class MessageFormat_0_10 method createMessage.
@Override
public MessageTransferMessage createMessage(final QpidByteBuffer payload, final MessageStore store, final Object connectionReference) {
try {
ServerDecoder serverDecoder = new ServerDecoder(payload);
int headerCount = serverDecoder.readInt32();
DeliveryProperties deliveryProperties = null;
MessageProperties messageProperties = null;
List<Struct> nonStandard = null;
for (int i = 0; i < headerCount; i++) {
final Struct struct = serverDecoder.readStruct32();
switch(struct.getStructType()) {
case DeliveryProperties.TYPE:
deliveryProperties = (DeliveryProperties) struct;
break;
case MessageProperties.TYPE:
messageProperties = (MessageProperties) struct;
break;
default:
if (nonStandard == null) {
nonStandard = new ArrayList<>();
}
nonStandard.add(struct);
}
}
Header header = new Header(deliveryProperties, messageProperties, nonStandard);
MessageMetaData_0_10 metaData = new MessageMetaData_0_10(header, payload.remaining(), System.currentTimeMillis());
final MessageHandle<MessageMetaData_0_10> handle = store.addMessage(metaData);
handle.addContent(payload);
final StoredMessage<MessageMetaData_0_10> storedMessage = handle.allContentAdded();
return new MessageTransferMessage(storedMessage, connectionReference);
} catch (BufferUnderflowException e) {
throw new ConnectionScopedRuntimeException("Error parsing AMQP 0-10 message format", e);
}
}
use of org.apache.qpid.server.protocol.v0_10.MessageMetaData_0_10 in project qpid-broker-j by apache.
the class MessageTransferMessageMutator method create.
@Override
public MessageTransferMessage create() {
final Header header = new Header(_deliveryProperties, _messageProperties);
final MessageMetaData_0_10 messageMetaData = new MessageMetaData_0_10(header, (int) _message.getSize(), _message.getArrivalTime());
final QpidByteBuffer content = _message.getContent();
final MessageHandle<MessageMetaData_0_10> addedMessage = _messageStore.addMessage(messageMetaData);
if (content != null) {
addedMessage.addContent(content);
}
return new MessageTransferMessage(addedMessage.allContentAdded(), _message.getConnectionReference());
}
use of org.apache.qpid.server.protocol.v0_10.MessageMetaData_0_10 in project qpid-broker-j by apache.
the class MessageConverter_Internal_to_v0_10 method convertMetaData.
private MessageMetaData_0_10 convertMetaData(final InternalMessage serverMsg, final NamedAddressSpace addressSpace, final String bodyMimeType, final int size) {
DeliveryProperties deliveryProps = new DeliveryProperties();
MessageProperties messageProps = new MessageProperties();
deliveryProps.setDeliveryMode(serverMsg.isPersistent() ? MessageDeliveryMode.PERSISTENT : MessageDeliveryMode.NON_PERSISTENT);
long expiration = serverMsg.getExpiration();
if (expiration > 0) {
deliveryProps.setExpiration(expiration);
deliveryProps.setTtl(Math.max(0, expiration - serverMsg.getArrivalTime()));
}
InternalMessageHeader messageHeader = serverMsg.getMessageHeader();
deliveryProps.setPriority(MessageDeliveryPriority.get(messageHeader.getPriority()));
convertToAndInitialRoutingKey(serverMsg, deliveryProps, addressSpace);
deliveryProps.setTimestamp(messageHeader.getTimestamp());
messageProps.setContentEncoding(ensureStr8("content-encoding", messageHeader.getEncoding()));
messageProps.setContentLength(size);
messageProps.setContentType(bodyMimeType);
if (messageHeader.getCorrelationId() != null) {
messageProps.setCorrelationId(ensureVBin16("correlation-id", messageHeader.getCorrelationId().getBytes(UTF_8)));
}
validateValue(messageHeader.getHeaderMap(), "application-headers");
messageProps.setApplicationHeaders(messageHeader.getHeaderMap());
String messageIdAsString = messageHeader.getMessageId();
if (messageIdAsString != null) {
try {
if (messageIdAsString.startsWith("ID:")) {
messageIdAsString = messageIdAsString.substring(3);
}
messageProps.setMessageId(UUID.fromString(messageIdAsString));
} catch (IllegalArgumentException iae) {
// ignore message id is not a UUID
}
}
String userId = messageHeader.getUserId();
if (userId != null) {
byte[] bytes = userId.getBytes(UTF_8);
if (bytes.length <= MAX_VBIN16_LENGTH) {
messageProps.setUserId(bytes);
}
}
final String origReplyTo = messageHeader.getReplyTo();
if (origReplyTo != null && !origReplyTo.equals("")) {
messageProps.setReplyTo(getReplyTo(addressSpace, origReplyTo));
}
Header header = new Header(deliveryProps, messageProps, null);
return new MessageMetaData_0_10(header, size, serverMsg.getArrivalTime());
}
use of org.apache.qpid.server.protocol.v0_10.MessageMetaData_0_10 in project qpid-broker-j by apache.
the class MessageTransferMessageMutatorTest method createTestMessage.
private MessageTransferMessage createTestMessage() {
final DeliveryProperties deliveryProperties = new DeliveryProperties();
deliveryProperties.setPriority(MessageDeliveryPriority.get(TEST_PRIORITY));
final MessageProperties messageProperties = new MessageProperties();
messageProperties.setContentType(TEST_CONTENT_TYPE);
messageProperties.setApplicationHeaders(Collections.singletonMap(TEST_HEADER_NAME, TEST_HEADER_VALUE));
final Header header = new Header(deliveryProperties, messageProperties);
final QpidByteBuffer content = QpidByteBuffer.wrap(TEST_CONTENT.getBytes(UTF_8));
final MessageMetaData_0_10 messageMetaData = new MessageMetaData_0_10(header, content.remaining(), System.currentTimeMillis());
final MessageHandle<MessageMetaData_0_10> addedMessage = _messageStore.addMessage(messageMetaData);
addedMessage.addContent(content);
return new MessageTransferMessage(addedMessage.allContentAdded(), null);
}
use of org.apache.qpid.server.protocol.v0_10.MessageMetaData_0_10 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());
}
Aggregations