use of com.sun.messaging.jmq.jmsserver.data.handlers.AckHandler in project openmq by eclipse-ee4j.
the class CoreLifecycleImpl method initHandlers.
@Override
public void initHandlers(PacketRouter pktrtr, ConnectionManager cmgr, PacketRouter admin_pktrtr, AdminDataHandler admin_datahdrl) throws BrokerException {
this.pktr = pktrtr;
HelloHandler hello = new HelloHandler(cmgr);
hello.setCoreLifecycle(this);
GetLicenseHandler getLicense = new GetLicenseHandler();
getLicense.setCoreLifecycle(this);
GoodbyeHandler goodbye = new GoodbyeHandler();
goodbye.setCoreLifecycle(this);
StartStopHandler startstop = new StartStopHandler();
startstop.setCoreLifecycle(this);
ConsumerHandler conhdlr = new ConsumerHandler();
conhdlr.setCoreLifecycle(this);
ProducerHandler prodhandler = new ProducerHandler();
prodhandler.setCoreLifecycle(this);
DestinationHandler desthandler = new DestinationHandler();
desthandler.setCoreLifecycle(this);
QBrowseHandler qbrowserhdlr = new QBrowseHandler();
qbrowserhdlr.setCoreLifecycle(this);
AuthHandler authenticate = new AuthHandler();
authenticate.setCoreLifecycle(this);
SessionHandler sessionhdlr = new SessionHandler();
sessionhdlr.setCoreLifecycle(this);
PingHandler pinghandler = new PingHandler();
pinghandler.setCoreLifecycle(this);
DataHandler datahdrl = new DataHandler();
datahdrl.setCoreLifecycle(this);
AckHandler ackhandler = new AckHandler();
ackhandler.setCoreLifecycle(this);
RedeliverHandler redeliverhdlr = new RedeliverHandler();
redeliverhdlr.setCoreLifecycle(this);
DeliverHandler deliverhdlr = new DeliverHandler();
deliverhdlr.setCoreLifecycle(this);
TransactionHandler thandler = new TransactionHandler();
thandler.setCoreLifecycle(this);
VerifyDestinationHandler vdhandler = new VerifyDestinationHandler();
vdhandler.setCoreLifecycle(this);
ClientIDHandler clienthandler = new ClientIDHandler();
clienthandler.setCoreLifecycle(this);
FlowHandler flowhdlr = new FlowHandler();
flowhdlr.setCoreLifecycle(this);
FlowPausedHandler fphandler = new FlowPausedHandler();
fphandler.setCoreLifecycle(this);
GenerateUIDHandler genUIDhandler = new GenerateUIDHandler();
genUIDhandler.setCoreLifecycle(this);
InfoRequestHandler infohandler = new InfoRequestHandler();
infohandler.setCoreLifecycle(this);
VerifyTransactionHandler vthandler = new VerifyTransactionHandler();
vthandler.setCoreLifecycle(this);
pktrtr.addHandler(PacketType.HELLO, hello);
pktrtr.addHandler(PacketType.AUTHENTICATE, authenticate);
pktrtr.addHandler(PacketType.GET_LICENSE, getLicense);
pktrtr.addHandler(PacketType.ADD_CONSUMER, conhdlr);
pktrtr.addHandler(PacketType.DELETE_CONSUMER, conhdlr);
pktrtr.addHandler(PacketType.ADD_PRODUCER, prodhandler);
pktrtr.addHandler(PacketType.START, startstop);
pktrtr.addHandler(PacketType.STOP, startstop);
pktrtr.addHandler(PacketType.ACKNOWLEDGE, ackhandler);
pktrtr.addHandler(PacketType.BROWSE, qbrowserhdlr);
pktrtr.addHandler(PacketType.GOODBYE, goodbye);
pktrtr.addHandler(PacketType.REDELIVER, redeliverhdlr);
pktrtr.addHandler(PacketType.CREATE_DESTINATION, desthandler);
pktrtr.addHandler(PacketType.DESTROY_DESTINATION, desthandler);
pktrtr.addHandler(PacketType.VERIFY_DESTINATION, vdhandler);
pktrtr.addHandler(PacketType.DELIVER, deliverhdlr);
pktrtr.addHandler(PacketType.START_TRANSACTION, thandler);
pktrtr.addHandler(PacketType.COMMIT_TRANSACTION, thandler);
pktrtr.addHandler(PacketType.ROLLBACK_TRANSACTION, thandler);
pktrtr.addHandler(PacketType.PREPARE_TRANSACTION, thandler);
pktrtr.addHandler(PacketType.END_TRANSACTION, thandler);
pktrtr.addHandler(PacketType.RECOVER_TRANSACTION, thandler);
pktrtr.addHandler(PacketType.SET_CLIENTID, clienthandler);
pktrtr.addHandler(PacketType.GENERATE_UID, genUIDhandler);
pktrtr.addHandler(PacketType.MAP_MESSAGE, datahdrl);
pktrtr.addHandler(PacketType.BYTES_MESSAGE, datahdrl);
pktrtr.addHandler(PacketType.MESSAGE, datahdrl);
pktrtr.addHandler(PacketType.MESSAGE_SET, datahdrl);
pktrtr.addHandler(PacketType.OBJECT_MESSAGE, datahdrl);
pktrtr.addHandler(PacketType.STREAM_MESSAGE, datahdrl);
pktrtr.addHandler(PacketType.TEXT_MESSAGE, datahdrl);
pktrtr.addHandler(PacketType.RESUME_FLOW, flowhdlr);
pktrtr.addHandler(PacketType.FLOW_PAUSED, fphandler);
pktrtr.addHandler(PacketType.CREATE_SESSION, sessionhdlr);
pktrtr.addHandler(PacketType.DELETE_PRODUCER, prodhandler);
pktrtr.addHandler(PacketType.DESTROY_SESSION, sessionhdlr);
pktrtr.addHandler(PacketType.PING, pinghandler);
pktrtr.addHandler(PacketType.INFO_REQUEST, infohandler);
pktrtr.addHandler(PacketType.VERIFY_TRANSACTION, vthandler);
// Map message handles -> messages. For the admin service this
// is just like the regular JMS service except we have a specialized
// data handler
admin_pktrtr.addHandler(PacketType.HELLO, hello);
admin_pktrtr.addHandler(PacketType.AUTHENTICATE, authenticate);
admin_pktrtr.addHandler(PacketType.GET_LICENSE, getLicense);
admin_pktrtr.addHandler(PacketType.ADD_CONSUMER, conhdlr);
admin_pktrtr.addHandler(PacketType.DELETE_CONSUMER, conhdlr);
admin_pktrtr.addHandler(PacketType.ADD_PRODUCER, prodhandler);
admin_pktrtr.addHandler(PacketType.START, startstop);
admin_pktrtr.addHandler(PacketType.STOP, startstop);
admin_pktrtr.addHandler(PacketType.ACKNOWLEDGE, ackhandler);
admin_pktrtr.addHandler(PacketType.BROWSE, qbrowserhdlr);
admin_pktrtr.addHandler(PacketType.GOODBYE, goodbye);
admin_pktrtr.addHandler(PacketType.REDELIVER, redeliverhdlr);
admin_pktrtr.addHandler(PacketType.CREATE_DESTINATION, desthandler);
admin_pktrtr.addHandler(PacketType.DESTROY_DESTINATION, desthandler);
admin_pktrtr.addHandler(PacketType.VERIFY_DESTINATION, vdhandler);
admin_pktrtr.addHandler(PacketType.DELIVER, deliverhdlr);
admin_pktrtr.addHandler(PacketType.START_TRANSACTION, thandler);
admin_pktrtr.addHandler(PacketType.COMMIT_TRANSACTION, thandler);
admin_pktrtr.addHandler(PacketType.ROLLBACK_TRANSACTION, thandler);
admin_pktrtr.addHandler(PacketType.PREPARE_TRANSACTION, thandler);
admin_pktrtr.addHandler(PacketType.END_TRANSACTION, thandler);
admin_pktrtr.addHandler(PacketType.RECOVER_TRANSACTION, thandler);
admin_pktrtr.addHandler(PacketType.SET_CLIENTID, clienthandler);
admin_pktrtr.addHandler(PacketType.GENERATE_UID, genUIDhandler);
admin_pktrtr.addHandler(PacketType.MAP_MESSAGE, admin_datahdrl);
admin_pktrtr.addHandler(PacketType.BYTES_MESSAGE, admin_datahdrl);
admin_pktrtr.addHandler(PacketType.MESSAGE, admin_datahdrl);
admin_pktrtr.addHandler(PacketType.MESSAGE_SET, admin_datahdrl);
admin_pktrtr.addHandler(PacketType.OBJECT_MESSAGE, admin_datahdrl);
admin_pktrtr.addHandler(PacketType.STREAM_MESSAGE, admin_datahdrl);
admin_pktrtr.addHandler(PacketType.TEXT_MESSAGE, admin_datahdrl);
admin_pktrtr.addHandler(PacketType.RESUME_FLOW, flowhdlr);
admin_pktrtr.addHandler(PacketType.FLOW_PAUSED, fphandler);
admin_pktrtr.addHandler(PacketType.CREATE_SESSION, sessionhdlr);
admin_pktrtr.addHandler(PacketType.DELETE_PRODUCER, prodhandler);
admin_pktrtr.addHandler(PacketType.DESTROY_SESSION, sessionhdlr);
}
use of com.sun.messaging.jmq.jmsserver.data.handlers.AckHandler in project openmq by eclipse-ee4j.
the class ProtocolImpl method acknowledge.
/**
* Processes acknowledgements.
* <P>
* Packet:<B>ACKNOWLEDGE</b>
* </p>
*
* @param tid transaction id (or null if no transaction) associated with the acknowledgement.
* @param validate should the acks just be validated (normally false)
* @param ackType acknowledge type of the request. One of
* <UL>
* <LI>ACKNOWLEDGE == 0</LI>
* <LI>UNDELIVERABLE==1</LI>
* <LI>DEAD</LI>
* </UL>
* @param exception exception associated with a dead message (should be null if ackType != DEAD)
* @param deadComment the explaination why a message was marked dead (should be null if ackType != DEAD)
* @param deliverCnt number of times a dead message was delivered (should be 0 if ackType != DEAD)
* @param ids list of message ids to process
* @param cids list of consumerIDs associated with a message, should directly correspond to the same index in ids
*/
@Override
public void acknowledge(IMQConnection con, TransactionUID tid, boolean validate, int ackType, Throwable exception, String deadComment, int deliverCnt, SysMessageID[] ids, ConsumerUID[] cids) throws BrokerException, IOException {
if (DEBUG) {
logger.log(Logger.INFO, "ProtocolImpl.ACKNOWLEDGE:TID=" + tid + ", ackType=" + ackType + ", ids=" + Arrays.toString(ids) + ", cids=" + Arrays.toString(cids) + ", validate=" + validate + ", deadComment=" + deadComment + ", deliverCnt=" + deliverCnt + ", exception=" + exception);
}
TransactionList[] tls = DL.getTransactionList(con.getPartitionedStore());
TransactionList tl = tls[0];
AckHandler handler = (AckHandler) pr.getHandler(PacketType.ACKNOWLEDGE);
ArrayList<PacketReference> cleanList = new ArrayList<>();
try {
if (validate) {
if (ackType == handler.DEAD_REQUEST || ackType == handler.UNDELIVERABLE_REQUEST) {
throw new BrokerException("Can not use JMQValidate with" + " an ackType of " + ackType, null, Status.BAD_REQUEST);
} else if (tid == null) {
throw new BrokerException("Can not use JMQValidate with" + " no tid", null, Status.BAD_REQUEST);
} else if (!handler.validateMessages(tl, tid, ids, cids)) {
throw new BrokerException("Acknowledgement could not be found", null, Status.NOT_FOUND);
}
} else if (ackType == handler.DEAD_REQUEST) {
handler.handleDeadMsgs(con, ids, cids, handler.DEAD_REASON_UNDELIVERABLE, exception, deadComment, deliverCnt, cleanList);
} else if (ackType == handler.UNDELIVERABLE_REQUEST) {
handler.handleUndeliverableMsgs(con, ids, cids, cleanList, deliverCnt, false);
} else if (tid != null) {
handler.handleTransaction(tl, con, tid, ids, cids, deliverCnt);
} else {
// XXX ackack flag
handler.handleAcks(con, ids, cids, true, cleanList);
}
} finally {
handler.cleanUp(cleanList);
}
}
Aggregations