/** * @param storageManager */ public LargeServerMessageInSync(StorageManager storageManager) { mainLM = storageManager.createLargeMessage(); this.storageManager = storageManager; }
@Override public LargeServerMessage createLargeMessage() { return manager.createLargeMessage(); }
@Override public LargeServerMessage createLargeMessage(long id, Message message) throws Exception { return manager.createLargeMessage(id, message); }
private void sendLarge(final Message message) throws Exception { // need to create the LargeMessage before continue long id = storageManager.generateID(); LargeServerMessage largeMsg = storageManager.createLargeMessage(id, message); if (logger.isTraceEnabled()) { logger.trace("sendLarge::" + largeMsg); } if (currentLargeMessage != null) { ActiveMQServerLogger.LOGGER.replacingIncompleteLargeMessage(currentLargeMessage.getMessageID()); } currentLargeMessage = largeMsg; }
private void createLargeMessage(final long id, boolean liveToBackupSync) { ReplicatedLargeMessage msg; if (liveToBackupSync) { msg = new LargeServerMessageInSync(storageManager); } else { msg = storageManager.createLargeMessage(); } msg.setDurable(true); msg.setMessageID(id); largeMessages.put(id, msg); }
@Override public void initMessage(StorageManager storage) { if (largeMessageLazyData != null) { LargeServerMessage lgMessage = storage.createLargeMessage(); ActiveMQBuffer buffer = ActiveMQBuffers.wrappedBuffer(largeMessageLazyData); lgMessage = LargeMessagePersister.getInstance().decode(buffer, lgMessage); lgMessage.incrementDelayDeletionCount(); lgMessage.setPaged(); this.message = lgMessage; largeMessageLazyData = null; } }
private static Message asLargeMessage(Message message, StorageManager storageManager) throws Exception { ICoreMessage coreMessage = message.toCore(); LargeServerMessage lsm = storageManager.createLargeMessage(storageManager.generateID(), coreMessage); ActiveMQBuffer buffer = coreMessage.getReadOnlyBodyBuffer(); final int readableBytes = buffer.readableBytes(); lsm.addBytes(buffer); lsm.releaseResources(); lsm.putLongProperty(Message.HDR_LARGE_BODY_SIZE, readableBytes); return lsm; }
LargeServerMessage msg = storageManager.createLargeMessage(); msg.setMessageID(msgToDelete.getB()); msg.setPendingRecordID(msgToDelete.getA());
public void sendInternalLarge(CoreMessage message, boolean direct) throws Exception { int headerSize = message.getHeadersAndPropertiesEncodeSize(); if (headerSize >= connection.getMinLargeMessageSize()) { throw BUNDLE.headerTooBig(); } StorageManager storageManager = ((ServerSessionImpl) session).getStorageManager(); long id = storageManager.generateID(); LargeServerMessage largeMessage = storageManager.createLargeMessage(id, message); ActiveMQBuffer body = message.getReadOnlyBodyBuffer(); byte[] bytes = new byte[body.readableBytes()]; body.readBytes(bytes); largeMessage.addBytes(bytes); largeMessage.releaseResources(); largeMessage.putLongProperty(Message.HDR_LARGE_BODY_SIZE, bytes.length); session.send(largeMessage, direct); largeMessage = null; }
public void sendInternalLarge(CoreMessage message, boolean direct) throws Exception { int headerSize = message.getHeadersAndPropertiesEncodeSize(); if (headerSize >= connection.getMinLargeMessageSize()) { throw BUNDLE.headerTooBig(); } StorageManager storageManager = ((ServerSessionImpl) session).getStorageManager(); long id = storageManager.generateID(); LargeServerMessage largeMessage = storageManager.createLargeMessage(id, message); ActiveMQBuffer body = message.getReadOnlyBodyBuffer(); byte[] bytes = new byte[body.readableBytes()]; body.readBytes(bytes); largeMessage.addBytes(bytes); largeMessage.releaseResources(); largeMessage.putLongProperty(Message.HDR_LARGE_BODY_SIZE, bytes.length); session.send(largeMessage, direct); largeMessage = null; }
@Override public void decode(final ActiveMQBuffer buffer) { transactionID = buffer.readLong(); boolean isLargeMessage = buffer.readBoolean(); if (isLargeMessage) { int largeMessageHeaderSize = buffer.readInt(); if (storageManager == null) { largeMessageLazyData = new byte[largeMessageHeaderSize]; buffer.readBytes(largeMessageLazyData); } else { this.message = storageManager.createLargeMessage(); LargeMessagePersister.getInstance().decode(buffer, (LargeServerMessage) message); ((LargeServerMessage) message).incrementDelayDeletionCount(); } } else { this.message = MessagePersister.getInstance().decode(buffer, null); } int queueIDsSize = buffer.readInt(); queueIDs = new long[queueIDsSize]; for (int i = 0; i < queueIDsSize; i++) { queueIDs[i] = buffer.readLong(); } }