User: norbert 
  Date: 00/05/23 19:52:16

  Added:       src/java/org/spyderMQ SpyQueueReceiver.java
  Log:
  adding SpyQueueReciever
  
  Revision  Changes    Path
  1.1                  spyderMQ/src/java/org/spyderMQ/SpyQueueReceiver.java
  
  Index: SpyQueueReceiver.java
  ===================================================================
  /*
   * spyderMQ, the OpenSource JMS implementation
   *
   * Distributable under GPL license.
   * See terms of license at gnu.org.
   */
  package org.spydermq;
  
  import javax.jms.QueueReceiver;
  import javax.jms.JMSException;
  import javax.jms.Queue;
  import javax.jms.Message;
  import javax.jms.MessageListener;
  
  /**
   *    This class implements javax.jms.QueueReceiver
   *      
   *    @author Norbert Lataille ([EMAIL PROTECTED])
   * 
   *    @version $Revision: 1.1 $
   */
  public class SpyQueueReceiver 
        extends SpyMessageConsumer 
        implements QueueReceiver
  {
        // Attributes ----------------------------------------------------
  
        //The queue I registered
        private Queue queue;
        //Mode of this QueueReceiver
        boolean modeStop;
        
        // Constructor ---------------------------------------------------
           
      SpyQueueReceiver(SpyQueueSession s,SessionQueue sq,Queue q,boolean stop) 
        {
                super(s,sq);
                queue=q;
                modeStop=stop;
        }
  
        // Public --------------------------------------------------------
  
        public Queue getQueue() throws JMSException
        {
                if (closed) throw new IllegalStateException("The MessageConsumer is 
closed");   
                                
                return queue;
        }
  
        void setModeStop(boolean mode)
        {
                if (modeStop==mode) return;
                modeStop=mode;
                ((SpyQueueSession)session).notifyReceiverStopped(this,mode);
        }
        
        public void close() throws JMSException
        {       
                if (closed) return;
                closed=true;
  
                setModeStop(true);
        }
  
        //Overrides MessageConsumer
        
      public Message receive() throws JMSException
        {
                if (closed) throw new IllegalStateException("The MessageConsumer is 
closed");
                        
                //Not implemented yet
                return null;
        }
  
      public Message receive(long timeOut) throws JMSException
        {
                if (closed) throw new IllegalStateException("The MessageConsumer is 
closed");
                
                //Not implemented yet
                return null;
        }
  
      public Message receiveNoWait() throws JMSException
        {
                if (closed) throw new IllegalStateException("The MessageConsumer is 
closed");
                if (session.modeStop) return null;
                        
                return session.connection.queueReceiveNoWait(queue);
        }       
  
      public void setMessageListener(MessageListener listener) throws JMSException
        {       
                if (closed) throw new IllegalStateException("The MessageConsumer is 
closed");                   
                
                if (listener==null) {
                        mySessionQueue.notifyReceiverStopped(false);
                } else {
                        mySessionQueue.notifyReceiverStopped(true);
                }
  
                messageListener=listener;
                
        }
  
  }
  
  
  

Reply via email to