use of com.swiftmq.jms.BytesMessageImpl in project swiftmq-ce by iitsoftware.
the class AMQPNativeInboundTransformer method transform.
public MessageImpl transform(TransferFrame frame, DestinationFactory destinationFactory) throws AMQPException, JMSException {
BytesMessageImpl msg = null;
if (frame.getMorePayloads() == null) {
byte[] payload = frame.getPayload();
msg = new BytesMessageImpl(payload, payload.length);
} else {
byte[] b = new byte[frame.getPayloadLength()];
byte[] payload = frame.getPayload();
System.arraycopy(payload, 0, b, 0, payload.length);
int pos = payload.length;
List morePayloads = frame.getMorePayloads();
for (int i = 0; i < morePayloads.size(); i++) {
payload = (byte[]) morePayloads.get(i);
System.arraycopy(payload, 0, b, pos, payload.length);
pos += payload.length;
}
msg = new BytesMessageImpl(b, b.length);
}
try {
msg.setLongProperty(messageFormat, frame.getMessageFormat().getValue());
msg.setBooleanProperty(amqpNative, true);
setDefaultHeader(msg);
} catch (Exception e) {
throw new AMQPException(e.toString());
}
msg.reset();
return msg;
}
use of com.swiftmq.jms.BytesMessageImpl in project swiftmq-ce by iitsoftware.
the class DispatcherImpl method send.
private void send(Dumpable dumpable) {
if (ctx.traceSpace.enabled)
ctx.traceSpace.trace(ctx.mgmtSwiftlet.getName(), toString() + "/send, dumpable: " + dumpable);
try {
BytesMessageImpl msg = new BytesMessageImpl();
msg.setJMSDeliveryMode(DeliveryMode.NON_PERSISTENT);
msg.setJMSDestination(replyQueue);
msg.setJMSPriority(MessageImpl.MAX_PRIORITY - 1);
dos.rewind();
Dumpalizer.dump(dos, dumpable);
msg.writeBytes(dos.getBuffer(), 0, dos.getCount());
QueuePushTransaction t = queueSender.createTransaction();
t.putMessage(msg);
t.commit();
} catch (Exception e) {
valid = false;
if (ctx.traceSpace.enabled)
ctx.traceSpace.trace(ctx.mgmtSwiftlet.getName(), toString() + "/send, got exception: " + e);
}
}
use of com.swiftmq.jms.BytesMessageImpl in project swiftmq-ce by iitsoftware.
the class DispatcherImpl method send.
private void send(Dumpable dumpable) {
if (ctx.traceSpace.enabled)
ctx.traceSpace.trace(ctx.mgmtSwiftlet.getName(), toString() + "/send, dumpable: " + dumpable);
try {
BytesMessageImpl msg = new BytesMessageImpl();
msg.setJMSDeliveryMode(DeliveryMode.NON_PERSISTENT);
msg.setJMSDestination(replyQueue);
msg.setJMSPriority(MessageImpl.MAX_PRIORITY - 1);
dos.rewind();
Dumpalizer.dump(dos, dumpable);
msg.writeBytes(dos.getBuffer(), 0, dos.getCount());
QueuePushTransaction t = queueSender.createTransaction();
t.putMessage(msg);
t.commit();
} catch (Exception e) {
valid = false;
if (ctx.traceSpace.enabled)
ctx.traceSpace.trace(ctx.mgmtSwiftlet.getName(), toString() + "/send, got exception: " + e);
}
}
use of com.swiftmq.jms.BytesMessageImpl in project swiftmq-ce by iitsoftware.
the class DispatchQueue method dispatchClientRequest.
private void dispatchClientRequest(ClientRequest event) {
if (ctx.traceSpace.enabled)
ctx.traceSpace.trace(ctx.mgmtSwiftlet.getName(), toString() + "/dispatchClientRequest, event: " + event + " ...");
Dispatcher d = (Dispatcher) dispatchers.get(event.getQueueName());
if (d != null) {
if (d.isInvalid()) {
if (ctx.traceSpace.enabled)
ctx.traceSpace.trace(ctx.mgmtSwiftlet.getName(), toString() + "/dispatchClientRequest, event: " + event + ", dispatcher invalid (1): " + d);
d.close();
dispatchers.remove(event.getQueueName());
} else {
d.process(event);
if (d.isInvalid()) {
if (ctx.traceSpace.enabled)
ctx.traceSpace.trace(ctx.mgmtSwiftlet.getName(), toString() + "/dispatchClientRequest, event: " + event + ", dispatcher invalid (2): " + d);
d.close();
dispatchers.remove(event.getQueueName());
}
}
} else {
try {
if (ctx.traceSpace.enabled)
ctx.traceSpace.trace(ctx.mgmtSwiftlet.getName(), toString() + "/dispatchClientRequest, event: " + event + " try ProtocolRequest ...");
dis.reset();
dis.setBuffer(event.getBuffer());
ProtocolRequest r = null;
try {
r = (ProtocolRequest) Dumpalizer.construct(dis, factory);
} catch (NullPointerException e) {
// Since we can get old LeaseRequests here, we can ignore it.
if (ctx.traceSpace.enabled)
ctx.traceSpace.trace(ctx.mgmtSwiftlet.getName(), toString() + "/dispatchClientRequest, got exception: " + e + ", probably old LeaseRequest, ignore!");
return;
}
if (ctx.traceSpace.enabled)
ctx.traceSpace.trace(ctx.mgmtSwiftlet.getName(), toString() + "/dispatchClientRequest, event: " + event + " got ProtocolRequest: " + r);
ProtocolReply reply = (ProtocolReply) r.createReply();
switch(r.getVersion()) {
case 400:
if (ctx.traceSpace.enabled)
ctx.traceSpace.trace(ctx.mgmtSwiftlet.getName(), toString() + "/dispatchClientRequest, event: " + event + " create v400 Dispatcher");
d = new com.swiftmq.impl.mgmt.standard.v400.DispatcherImpl(ctx, event.getQueueName());
dispatchers.put(event.getQueueName(), d);
reply.setOk(true);
break;
case 750:
if (ctx.traceSpace.enabled)
ctx.traceSpace.trace(ctx.mgmtSwiftlet.getName(), toString() + "/dispatchClientRequest, event: " + event + " create v750 Dispatcher");
d = new com.swiftmq.impl.mgmt.standard.v750.DispatcherImpl(ctx, event.getUserName(), event.getQueueName());
dispatchers.put(event.getQueueName(), d);
reply.setOk(true);
break;
default:
if (ctx.traceSpace.enabled)
ctx.traceSpace.trace(ctx.mgmtSwiftlet.getName(), toString() + "/dispatchClientRequest, event: " + event + " failed: Unsupported protocol version: " + r.getVersion());
reply.setOk(false);
reply.setException(new Exception("Unsupported protocol version: " + r.getVersion()));
}
if (ctx.traceSpace.enabled)
ctx.traceSpace.trace(ctx.mgmtSwiftlet.getName(), toString() + "/dispatchClientRequest, event: " + event + " send reply: " + reply);
QueueSender sender = ctx.queueManager.createQueueSender(event.getQueueName(), null);
BytesMessageImpl msg = new BytesMessageImpl();
msg.setJMSDeliveryMode(DeliveryMode.NON_PERSISTENT);
msg.setJMSDestination(new QueueImpl(event.getQueueName()));
msg.setJMSPriority(MessageImpl.MAX_PRIORITY - 1);
dos.rewind();
Dumpalizer.dump(dos, reply);
msg.writeBytes(dos.getBuffer(), 0, dos.getCount());
QueuePushTransaction t = sender.createTransaction();
t.putMessage(msg);
t.commit();
sender.close();
checkStartLeases();
} catch (Exception e) {
if (ctx.traceSpace.enabled)
ctx.traceSpace.trace(ctx.mgmtSwiftlet.getName(), toString() + "/dispatchClientRequest, event: " + event + " got exception: " + e);
ctx.logSwiftlet.logError(ctx.mgmtSwiftlet.getName(), toString() + "/dispatchClientRequest, event: " + event + " got exception: " + e);
dispatchers.remove(event.getQueueName());
}
}
if (ctx.traceSpace.enabled)
ctx.traceSpace.trace(ctx.mgmtSwiftlet.getName(), toString() + "/dispatchClientRequest, event: " + event + " done");
}
use of com.swiftmq.jms.BytesMessageImpl in project swiftmq-ce by iitsoftware.
the class PreparedLogQueue method preload.
private void preload() throws Exception {
List qiEntries = queueIndex.getEntries();
queueIndex.unloadPages();
for (int i = 0; i < qiEntries.size(); i++) {
QueueIndexEntry entry = (QueueIndexEntry) qiEntries.get(i);
StoreEntry storeEntry = queueIndex.get(entry);
BytesMessageImpl msg = (BytesMessageImpl) storeEntry.message;
byte[] b = new byte[(int) msg.getBodyLength()];
msg.readBytes(b);
inStream.setBuffer(b, 0, b.length);
PrepareLogRecordImpl logRecord = new PrepareLogRecordImpl(0);
logRecord.readContent(inStream);
CacheEntry cacheEntry = new CacheEntry();
cacheEntry.logRecord = logRecord;
long address = (long) ArrayListTool.setFirstFreeOrExpand(cache, cacheEntry);
logRecord.setAddress(address);
cacheEntry.indexEntry = entry;
}
queueIndex.unloadPages();
}
Aggregations