Search in sources :

Example 1 with AckHandler

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);
}
Also used : GetLicenseHandler(com.sun.messaging.jmq.jmsserver.common.handlers.GetLicenseHandler) AuthHandler(com.sun.messaging.jmq.jmsserver.common.handlers.AuthHandler) SessionHandler(com.sun.messaging.jmq.jmsserver.common.handlers.SessionHandler) VerifyDestinationHandler(com.sun.messaging.jmq.jmsserver.common.handlers.VerifyDestinationHandler) DestinationHandler(com.sun.messaging.jmq.jmsserver.data.handlers.DestinationHandler) PingHandler(com.sun.messaging.jmq.jmsserver.common.handlers.PingHandler) VerifyTransactionHandler(com.sun.messaging.jmq.jmsserver.data.handlers.VerifyTransactionHandler) GoodbyeHandler(com.sun.messaging.jmq.jmsserver.common.handlers.GoodbyeHandler) ProducerHandler(com.sun.messaging.jmq.jmsserver.data.handlers.ProducerHandler) HelloHandler(com.sun.messaging.jmq.jmsserver.common.handlers.HelloHandler) DataHandler(com.sun.messaging.jmq.jmsserver.data.handlers.DataHandler) AdminDataHandler(com.sun.messaging.jmq.jmsserver.data.handlers.admin.AdminDataHandler) InfoRequestHandler(com.sun.messaging.jmq.jmsserver.common.handlers.InfoRequestHandler) ConsumerHandler(com.sun.messaging.jmq.jmsserver.data.handlers.ConsumerHandler) ClientIDHandler(com.sun.messaging.jmq.jmsserver.common.handlers.ClientIDHandler) VerifyTransactionHandler(com.sun.messaging.jmq.jmsserver.data.handlers.VerifyTransactionHandler) TransactionHandler(com.sun.messaging.jmq.jmsserver.data.handlers.TransactionHandler) VerifyDestinationHandler(com.sun.messaging.jmq.jmsserver.common.handlers.VerifyDestinationHandler) FlowPausedHandler(com.sun.messaging.jmq.jmsserver.common.handlers.FlowPausedHandler) RedeliverHandler(com.sun.messaging.jmq.jmsserver.data.handlers.RedeliverHandler) QBrowseHandler(com.sun.messaging.jmq.jmsserver.data.handlers.QBrowseHandler) GenerateUIDHandler(com.sun.messaging.jmq.jmsserver.common.handlers.GenerateUIDHandler) DeliverHandler(com.sun.messaging.jmq.jmsserver.data.handlers.DeliverHandler) FlowHandler(com.sun.messaging.jmq.jmsserver.common.handlers.FlowHandler) StartStopHandler(com.sun.messaging.jmq.jmsserver.common.handlers.StartStopHandler) AckHandler(com.sun.messaging.jmq.jmsserver.data.handlers.AckHandler)

Example 2 with AckHandler

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);
    }
}
Also used : BrokerException(com.sun.messaging.jmq.jmsserver.util.BrokerException) PacketReference(com.sun.messaging.jmq.jmsserver.core.PacketReference) ArrayList(java.util.ArrayList) TransactionList(com.sun.messaging.jmq.jmsserver.data.TransactionList) AckHandler(com.sun.messaging.jmq.jmsserver.data.handlers.AckHandler)

Aggregations

AckHandler (com.sun.messaging.jmq.jmsserver.data.handlers.AckHandler)2 AuthHandler (com.sun.messaging.jmq.jmsserver.common.handlers.AuthHandler)1 ClientIDHandler (com.sun.messaging.jmq.jmsserver.common.handlers.ClientIDHandler)1 FlowHandler (com.sun.messaging.jmq.jmsserver.common.handlers.FlowHandler)1 FlowPausedHandler (com.sun.messaging.jmq.jmsserver.common.handlers.FlowPausedHandler)1 GenerateUIDHandler (com.sun.messaging.jmq.jmsserver.common.handlers.GenerateUIDHandler)1 GetLicenseHandler (com.sun.messaging.jmq.jmsserver.common.handlers.GetLicenseHandler)1 GoodbyeHandler (com.sun.messaging.jmq.jmsserver.common.handlers.GoodbyeHandler)1 HelloHandler (com.sun.messaging.jmq.jmsserver.common.handlers.HelloHandler)1 InfoRequestHandler (com.sun.messaging.jmq.jmsserver.common.handlers.InfoRequestHandler)1 PingHandler (com.sun.messaging.jmq.jmsserver.common.handlers.PingHandler)1 SessionHandler (com.sun.messaging.jmq.jmsserver.common.handlers.SessionHandler)1 StartStopHandler (com.sun.messaging.jmq.jmsserver.common.handlers.StartStopHandler)1 VerifyDestinationHandler (com.sun.messaging.jmq.jmsserver.common.handlers.VerifyDestinationHandler)1 PacketReference (com.sun.messaging.jmq.jmsserver.core.PacketReference)1 TransactionList (com.sun.messaging.jmq.jmsserver.data.TransactionList)1 ConsumerHandler (com.sun.messaging.jmq.jmsserver.data.handlers.ConsumerHandler)1 DataHandler (com.sun.messaging.jmq.jmsserver.data.handlers.DataHandler)1 DeliverHandler (com.sun.messaging.jmq.jmsserver.data.handlers.DeliverHandler)1 DestinationHandler (com.sun.messaging.jmq.jmsserver.data.handlers.DestinationHandler)1