private MessageQueue OpenMessageQueue()

in src/main/csharp/MessageProducer.cs [57:94]


        private MessageQueue OpenMessageQueue(Destination dest)
        {
            Queue queue = dest as Queue;

            MessageQueue mq = queue.MSMQMessageQueue;

            if(mq == null)
            {
                try
                {
                    if(!Queue.Exists(dest.Path))
                    {
                        // create the new message queue and make it transactional
                        mq = MessageQueue.Create(dest.Path, session.Transacted);
                        this.destination = new Queue(mq);
                    }
                    else
                    {
                        mq = new MessageQueue(dest.Path);
                        this.destination = new Queue(mq);
                        if(!mq.CanWrite)
                        {
                            throw new NMSSecurityException("Do not have write access to: " + dest);
                        }
                    }
                }
                catch(Exception e)
                {
                    if(mq != null)
                    {
                        mq.Dispose();
                    }
                
                    throw new NMSException(e.Message + ": " + dest, e);
                }
            }
            return mq;
        }