[Ubermq-commits] jms/src/com/ubermq/jms/client/impl LocalMessage.java,1.13,1.14 TopicSession.java,1.
Brought to you by:
jimmyp
From: <ji...@us...> - 2002-10-22 20:32:25
|
Update of /cvsroot/ubermq/jms/src/com/ubermq/jms/client/impl In directory usw-pr-cvs1:/tmp/cvs-serv21195/src/com/ubermq/jms/client/impl Modified Files: LocalMessage.java TopicSession.java Log Message: Add a new delivery mode, GUARANTEED_PROCESSING, that indicates a publish() call should fail if a registered durable subscription is disconnected. Allows the creation of fail-fast, guaranteed messaging in addition to the normal JMS modus operandi. Index: LocalMessage.java =================================================================== RCS file: /cvsroot/ubermq/jms/src/com/ubermq/jms/client/impl/LocalMessage.java,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** LocalMessage.java 18 Oct 2002 16:59:26 -0000 1.13 --- LocalMessage.java 22 Oct 2002 20:32:22 -0000 1.14 *************** *** 504,508 **** sz.append("<tr><td>Delivery Mode</td><td>"); ! sz.append((getJMSDeliveryMode() == DeliveryMode.PERSISTENT) ? "Persistent" : "Non-persistent"); sz.append("</td></tr><br>"); --- 504,508 ---- sz.append("<tr><td>Delivery Mode</td><td>"); ! sz.append((getJMSDeliveryMode() == javax.jms.DeliveryMode.PERSISTENT) ? "Persistent" : "Non-persistent"); sz.append("</td></tr><br>"); Index: TopicSession.java =================================================================== RCS file: /cvsroot/ubermq/jms/src/com/ubermq/jms/client/impl/TopicSession.java,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** TopicSession.java 18 Oct 2002 16:59:26 -0000 1.19 --- TopicSession.java 22 Oct 2002 20:32:22 -0000 1.20 *************** *** 213,217 **** --- 213,219 ---- private int nextSequence; private long senderId; + private MessageId waitingFor; + private IAckDatagram acknowledgement; private int defaultMode = Message.DEFAULT_DELIVERY_MODE, *************** *** 385,393 **** switch(deliveryMode) { ! case DeliveryMode.PERSISTENT: handler = persistentHandler; break; ! case DeliveryMode.NON_PERSISTENT: ! default: handler = nonPersistentHandler; break; --- 387,395 ---- switch(deliveryMode) { ! case javax.jms.DeliveryMode.PERSISTENT: ! default: handler = persistentHandler; break; ! case javax.jms.DeliveryMode.NON_PERSISTENT: handler = nonPersistentHandler; break; *************** *** 404,410 **** synchronized(this) { try { - outputMessageDatagram(md, handler); waitingFor = md.getMessageId(); this.wait(MAX_ACK_WAIT_TIMEOUT); } catch(InterruptedException ie) { throw new JMSInterruptedException(ie); --- 406,424 ---- synchronized(this) { try { waitingFor = md.getMessageId(); + acknowledgement = null; + + // output it + outputMessageDatagram(md, handler); + + // wait for it this.wait(MAX_ACK_WAIT_TIMEOUT); + + // ok got the notification. + // check that it is valid, and that it is not a NACK + if (acknowledgement == null || + acknowledgement.isNegativeAck()) + throw new JMSUndeliverableException("Message was not successfully delivered."); + } catch(InterruptedException ie) { throw new JMSInterruptedException(ie); *************** *** 516,519 **** --- 530,534 ---- synchronized(this) { if (ad.getAckMessageId().equals(waitingFor)) { + acknowledgement = ad; notify(); } |