User: pkendall Date: 01/07/29 15:54:58 Modified: src/main/org/jbossmq/server JMSServer.java ClientConsumer.java Log: receiveNoWait bug fixes (didn't ACK messages) clone only messages sent to more than one subscriber only clone messages on send if transacted or using JVM IL setReadOnlyMode on serverside so apps can still modify message after send Revision Changes Path 1.18 +3 -3 jbossmq/src/main/org/jbossmq/server/JMSServer.java Index: JMSServer.java =================================================================== RCS file: /cvsroot/jboss/jbossmq/src/main/org/jbossmq/server/JMSServer.java,v retrieving revision 1.17 retrieving revision 1.18 diff -u -r1.17 -r1.18 --- JMSServer.java 2001/07/28 16:11:36 1.17 +++ JMSServer.java 2001/07/29 22:54:58 1.18 @@ -42,7 +42,7 @@ * @author Norbert Lataille ([EMAIL PROTECTED]) * @author Hiram Chirino ([EMAIL PROTECTED]) * - * @version $Revision: 1.17 $ + * @version $Revision: 1.18 $ */ public class JMSServer { @@ -215,13 +215,13 @@ //A connection has sent a new message public void addMessage(ConnectionToken dc, SpyMessage val, Long txId) throws JMSException { - cat.debug("INCOMING: (TX="+txId+")"+dc.getClientID()+" => "+val.getJMSDestination()); JMSDestination queue=(JMSDestination)destinations.get(val.getJMSDestination()); if (queue==null) throw new JMSException("This destination does not exist !"); + //Add the message to the queue + val.setReadOnlyMode(); queue.addMessage(val, txId); - } /** 1.11 +16 -2 jbossmq/src/main/org/jbossmq/server/ClientConsumer.java Index: ClientConsumer.java =================================================================== RCS file: /cvsroot/jboss/jbossmq/src/main/org/jbossmq/server/ClientConsumer.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- ClientConsumer.java 2001/07/28 00:30:16 1.10 +++ ClientConsumer.java 2001/07/29 22:54:58 1.11 @@ -31,7 +31,7 @@ * * @author Hiram Chirino ([EMAIL PROTECTED]) * - * @version $Revision: 1.10 $ + * @version $Revision: 1.11 $ */ public class ClientConsumer implements Runnable { @@ -246,7 +246,21 @@ // Is it a receiveNoWait() if( wait == -1 && req.subscription.actsLikeAQueue ) { - return req.dest.receiveNoWait(req.subscription); + SpyMessage message = req.dest.receiveNoWait(req.subscription); + + if( message != null ) { + AcknowledgementRequest ack = new AcknowledgementRequest(); + ack.destination = message.getJMSDestination(); + ack.messageID = message.getJMSMessageID(); + ack.subscriberId = subscriberId; + ack.isAck = false; + + synchronized (unacknowledgedMessages) { + unacknowledgedMessages.put(ack, message); + } + } + + return message; } // Notify the queue. It could be waiting for a consumer _______________________________________________ Jboss-development mailing list [EMAIL PROTECTED] http://lists.sourceforge.net/lists/listinfo/jboss-development