You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ch...@apache.org on 2006/07/06 00:27:47 UTC

svn commit: r419365 [6/25] - in /incubator/activemq/trunk: activemq-core/src/main/java/org/apache/activemq/thread/ activemq-core/src/test/java/org/apache/activemq/openwire/v1/ activemq-cpp/src/main/activemq/concurrent/ activemq-cpp/src/main/activemq/co...

Modified: incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompConnectorException.h
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompConnectorException.h?rev=419365&r1=419364&r2=419365&view=diff
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompConnectorException.h (original)
+++ incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompConnectorException.h Wed Jul  5 15:27:34 2006
@@ -1,65 +1,65 @@
-/*
- * Copyright 2006 The Apache Software Foundation or its licensors, as
- * applicable.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef ACTIVEMQ_CONNECTOR_STOMP_STOMPCONNECTOREXCEPTION_H_
-#define ACTIVEMQ_CONNECTOR_STOMP_STOMPCONNECTOREXCEPTION_H_
-
-#include <activemq/connector/ConnectorException.h>
-
-namespace activemq{
-namespace connector{
-namespace stomp{
-
-    /*
-     * Signals that an Connector exception of some sort has occurred.
-     */
-    class StompConnectorException : public connector::ConnectorException
-    {
-    public:
-   
-      StompConnectorException() {}
-      StompConnectorException( const exceptions::ActiveMQException& ex ){
-        *(ActiveMQException*)this = ex;
-      }
-      StompConnectorException( const StompConnectorException& ex ){
-        *(exceptions::ActiveMQException*)this = ex;
-      }
-      StompConnectorException(const char* file, const int lineNumber, 
-        const char* msg, ...)
-      {
-          va_list vargs ;
-          va_start(vargs, msg) ;
-          buildMessage(msg, vargs) ;
-            
-          // Set the first mark for this exception.
-          setMark( file, lineNumber );
-      }
-      
-      /**
-       * Clones this exception.  This is useful for cases where you need
-       * to preserve the type of the original exception as well as the message.
-       * All subclasses should override.
-       */
-      virtual exceptions::ActiveMQException* clone() const{
-          return new StompConnectorException( *this );
-      }
-      virtual ~StompConnectorException() {}
-
-    };
-
-}}}
-
-#endif /*ACTIVEMQ_CONNECTOR_STOMP_STOMPCONNECTOREXCEPTION_H_*/
+/*
+ * Copyright 2006 The Apache Software Foundation or its licensors, as
+ * applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#ifndef ACTIVEMQ_CONNECTOR_STOMP_STOMPCONNECTOREXCEPTION_H_
+#define ACTIVEMQ_CONNECTOR_STOMP_STOMPCONNECTOREXCEPTION_H_
+
+#include <activemq/connector/ConnectorException.h>
+
+namespace activemq{
+namespace connector{
+namespace stomp{
+
+    /*
+     * Signals that an Connector exception of some sort has occurred.
+     */
+    class StompConnectorException : public connector::ConnectorException
+    {
+    public:
+   
+      StompConnectorException() {}
+      StompConnectorException( const exceptions::ActiveMQException& ex ){
+        *(ActiveMQException*)this = ex;
+      }
+      StompConnectorException( const StompConnectorException& ex ){
+        *(exceptions::ActiveMQException*)this = ex;
+      }
+      StompConnectorException(const char* file, const int lineNumber, 
+        const char* msg, ...)
+      {
+          va_list vargs ;
+          va_start(vargs, msg) ;
+          buildMessage(msg, vargs) ;
+            
+          // Set the first mark for this exception.
+          setMark( file, lineNumber );
+      }
+      
+      /**
+       * Clones this exception.  This is useful for cases where you need
+       * to preserve the type of the original exception as well as the message.
+       * All subclasses should override.
+       */
+      virtual exceptions::ActiveMQException* clone() const{
+          return new StompConnectorException( *this );
+      }
+      virtual ~StompConnectorException() {}
+
+    };
+
+}}}
+
+#endif /*ACTIVEMQ_CONNECTOR_STOMP_STOMPCONNECTOREXCEPTION_H_*/

Propchange: incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompConnectorException.h
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompConnectorFactory.cpp
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompConnectorFactory.cpp?rev=419365&r1=419364&r2=419365&view=diff
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompConnectorFactory.cpp (original)
+++ incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompConnectorFactory.cpp Wed Jul  5 15:27:34 2006
@@ -1,49 +1,49 @@
-/*
- * Copyright 2006 The Apache Software Foundation or its licensors, as
- * applicable.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- 
-#include <activemq/connector/stomp/StompConnectorFactory.h>
-#include <activemq/connector/stomp/StompConnector.h>
-#include <activemq/connector/Connector.h>
-#include <activemq/transport/Transport.h>
-
-using namespace activemq;
-using namespace activemq::util;
-using namespace activemq::transport;
-using namespace activemq::connector;
-using namespace activemq::connector::stomp;
-
-////////////////////////////////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////////////////////////////////
-Connector* StompConnectorFactory::createConnector(
-    const activemq::util::Properties& properties,
-    activemq::transport::Transport* transport)
-{
-    return dynamic_cast<Connector*>(
-        new StompConnector(transport, properties));
-}
-
-////////////////////////////////////////////////////////////////////////////////
-ConnectorFactory& StompConnectorFactory::getInstance(void)
-{
-    // Create a static instance of the registrar and return a reference to
-    // its internal instance of this class.
-    static ConnectorFactoryMapRegistrar registrar(
-        "stomp", new StompConnectorFactory());
-
-    return registrar.getFactory();
-}
+/*
+ * Copyright 2006 The Apache Software Foundation or its licensors, as
+ * applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ 
+#include <activemq/connector/stomp/StompConnectorFactory.h>
+#include <activemq/connector/stomp/StompConnector.h>
+#include <activemq/connector/Connector.h>
+#include <activemq/transport/Transport.h>
+
+using namespace activemq;
+using namespace activemq::util;
+using namespace activemq::transport;
+using namespace activemq::connector;
+using namespace activemq::connector::stomp;
+
+////////////////////////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////////////////////////
+Connector* StompConnectorFactory::createConnector(
+    const activemq::util::Properties& properties,
+    activemq::transport::Transport* transport)
+{
+    return dynamic_cast<Connector*>(
+        new StompConnector(transport, properties));
+}
+
+////////////////////////////////////////////////////////////////////////////////
+ConnectorFactory& StompConnectorFactory::getInstance(void)
+{
+    // Create a static instance of the registrar and return a reference to
+    // its internal instance of this class.
+    static ConnectorFactoryMapRegistrar registrar(
+        "stomp", new StompConnectorFactory());
+
+    return registrar.getFactory();
+}

Propchange: incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompConnectorFactory.cpp
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompConnectorFactory.h
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompConnectorFactory.h?rev=419365&r1=419364&r2=419365&view=diff
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompConnectorFactory.h (original)
+++ incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompConnectorFactory.h Wed Jul  5 15:27:34 2006
@@ -1,54 +1,54 @@
-/*
- * Copyright 2006 The Apache Software Foundation or its licensors, as
- * applicable.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef ACTIVEMQ_CONNECTOR_STOMP_STOMPCONNECTORFACTORY_H_
-#define ACTIVEMQ_CONNECTOR_STOMP_STOMPCONNECTORFACTORY_H_
-
-#include <activemq/connector/ConnectorFactory.h>
-#include <activemq/connector/ConnectorFactoryMapRegistrar.h>
-
-namespace activemq{
-namespace connector{
-namespace stomp{
-
-    class StompConnectorFactory : public connector::ConnectorFactory
-    {
-    private:
-
-
-    public:
-   
-        virtual ~StompConnectorFactory(void) {}
-   
-        /** 
-         * Creates a StompConnector
-         * @param The Properties that the new connector is configured with
-         */
-        virtual Connector* createConnector(
-            const activemq::util::Properties& properties,
-            activemq::transport::Transport* transport);
-
-        /**
-         * Returns an instance of this Factory by reference
-         * @return StompConnectorFactory reference
-         */
-        static ConnectorFactory& getInstance(void);
-
-    };
-
-}}}
-
-#endif /*ACTIVEMQ_CONNECTOR_STOMP_STOMPCONNECTORFACTORY_H_*/
+/*
+ * Copyright 2006 The Apache Software Foundation or its licensors, as
+ * applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#ifndef ACTIVEMQ_CONNECTOR_STOMP_STOMPCONNECTORFACTORY_H_
+#define ACTIVEMQ_CONNECTOR_STOMP_STOMPCONNECTORFACTORY_H_
+
+#include <activemq/connector/ConnectorFactory.h>
+#include <activemq/connector/ConnectorFactoryMapRegistrar.h>
+
+namespace activemq{
+namespace connector{
+namespace stomp{
+
+    class StompConnectorFactory : public connector::ConnectorFactory
+    {
+    private:
+
+
+    public:
+   
+        virtual ~StompConnectorFactory(void) {}
+   
+        /** 
+         * Creates a StompConnector
+         * @param The Properties that the new connector is configured with
+         */
+        virtual Connector* createConnector(
+            const activemq::util::Properties& properties,
+            activemq::transport::Transport* transport);
+
+        /**
+         * Returns an instance of this Factory by reference
+         * @return StompConnectorFactory reference
+         */
+        static ConnectorFactory& getInstance(void);
+
+    };
+
+}}}
+
+#endif /*ACTIVEMQ_CONNECTOR_STOMP_STOMPCONNECTORFACTORY_H_*/

Propchange: incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompConnectorFactory.h
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompConsumerInfo.h
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompConsumerInfo.h?rev=419365&r1=419364&r2=419365&view=diff
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompConsumerInfo.h (original)
+++ incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompConsumerInfo.h Wed Jul  5 15:27:34 2006
@@ -1,118 +1,118 @@
-/*
- * Copyright 2006 The Apache Software Foundation or its licensors, as
- * applicable.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _ACTIVEMQ_CONNECTOR_STOMP_STOMPCONSUMERINFO_H_
-#define _ACTIVEMQ_CONNECTOR_STOMP_STOMPCONSUMERINFO_H_
-
-namespace activemq{
-namespace connector{
-namespace stomp{
-
-    class StompConsumerInfo : public ConsumerInfo
-    {
-    private:
-
-        // Message Selector for this Consumer
-        std::string selector;
-        
-        // Consumer Id
-        unsigned int consumerId;
-        
-        // Destination
-        cms::Destination* destination;
-        
-        // Session Info - We do not own this
-        const SessionInfo* session;
-    
-    public:
-
-    	StompConsumerInfo(void) {
-            selector = "";
-            consumerId = 0;
-            destination = NULL;
-        }
-    	virtual ~StompConsumerInfo(void) { delete destination; }
-
-        /**
-         * Gets this message consumer's message selector expression.
-         * @return This Consumer's selector expression or "".
-         */
-        virtual const std::string& getMessageSelector(void) const {
-            return selector;
-        }
-        
-        /**
-         * Sets this message consumer's message selector expression.
-         * @param This Consumer's selector expression or "".
-         */
-        virtual void setMessageSelector( const std::string& selector ) {
-            this->selector = selector;
-        }
-
-        /**
-         * Gets the ID that is assigned to this consumer
-         * @return value of the Consumer Id.
-         */
-        virtual unsigned int getConsumerId(void) const {
-            return consumerId;
-        }
-        
-        /**
-         * Sets the ID that is assigned to this consumer
-         * @return string value of the Consumer Id.
-         */
-        virtual void setConsumerId( const unsigned int id ) {
-            this->consumerId = id;
-        }
-        
-        /**
-         * Gets the Destination that this Consumer is subscribed on
-         * @return Destination
-         */
-        virtual const cms::Destination& getDestination(void) const {
-            return *destination;
-        }
-        
-        /**
-         * Sets the destination that this Consumer is listening on
-         * @param Destination
-         */
-        virtual void setDestination( const cms::Destination& destination ) {
-            this->destination = destination.clone();
-        }
-        
-        /**
-         * Gets the Session Info that this consumer is attached too
-         * @return SessionnInfo pointer
-         */
-        virtual const SessionInfo* getSessionInfo(void) const {
-            return session;
-        }
-        
-        /**
-         * Gets the Session Info that this consumer is attached too
-         * @return SessionnInfo pointer
-         */
-        virtual void setSessionInfo( const SessionInfo* session ) {
-            this->session = session;
-        }
-
-    };
-
-}}}
-
-#endif /*_ACTIVEMQ_CONNECTOR_STOMP_STOMPCONSUMERINFO_H_*/
+/*
+ * Copyright 2006 The Apache Software Foundation or its licensors, as
+ * applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _ACTIVEMQ_CONNECTOR_STOMP_STOMPCONSUMERINFO_H_
+#define _ACTIVEMQ_CONNECTOR_STOMP_STOMPCONSUMERINFO_H_
+
+namespace activemq{
+namespace connector{
+namespace stomp{
+
+    class StompConsumerInfo : public ConsumerInfo
+    {
+    private:
+
+        // Message Selector for this Consumer
+        std::string selector;
+        
+        // Consumer Id
+        unsigned int consumerId;
+        
+        // Destination
+        cms::Destination* destination;
+        
+        // Session Info - We do not own this
+        const SessionInfo* session;
+    
+    public:
+
+    	StompConsumerInfo(void) {
+            selector = "";
+            consumerId = 0;
+            destination = NULL;
+        }
+    	virtual ~StompConsumerInfo(void) { delete destination; }
+
+        /**
+         * Gets this message consumer's message selector expression.
+         * @return This Consumer's selector expression or "".
+         */
+        virtual const std::string& getMessageSelector(void) const {
+            return selector;
+        }
+        
+        /**
+         * Sets this message consumer's message selector expression.
+         * @param This Consumer's selector expression or "".
+         */
+        virtual void setMessageSelector( const std::string& selector ) {
+            this->selector = selector;
+        }
+
+        /**
+         * Gets the ID that is assigned to this consumer
+         * @return value of the Consumer Id.
+         */
+        virtual unsigned int getConsumerId(void) const {
+            return consumerId;
+        }
+        
+        /**
+         * Sets the ID that is assigned to this consumer
+         * @return string value of the Consumer Id.
+         */
+        virtual void setConsumerId( const unsigned int id ) {
+            this->consumerId = id;
+        }
+        
+        /**
+         * Gets the Destination that this Consumer is subscribed on
+         * @return Destination
+         */
+        virtual const cms::Destination& getDestination(void) const {
+            return *destination;
+        }
+        
+        /**
+         * Sets the destination that this Consumer is listening on
+         * @param Destination
+         */
+        virtual void setDestination( const cms::Destination& destination ) {
+            this->destination = destination.clone();
+        }
+        
+        /**
+         * Gets the Session Info that this consumer is attached too
+         * @return SessionnInfo pointer
+         */
+        virtual const SessionInfo* getSessionInfo(void) const {
+            return session;
+        }
+        
+        /**
+         * Gets the Session Info that this consumer is attached too
+         * @return SessionnInfo pointer
+         */
+        virtual void setSessionInfo( const SessionInfo* session ) {
+            this->session = session;
+        }
+
+    };
+
+}}}
+
+#endif /*_ACTIVEMQ_CONNECTOR_STOMP_STOMPCONSUMERINFO_H_*/

Propchange: incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompConsumerInfo.h
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompDestination.h
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompDestination.h?rev=419365&r1=419364&r2=419365&view=diff
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompDestination.h (original)
+++ incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompDestination.h Wed Jul  5 15:27:34 2006
@@ -1,106 +1,106 @@
-/*
- * Copyright 2006 The Apache Software Foundation or its licensors, as
- * applicable.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _ACTIVEMQ_CONNECTOR_STOMP_STOMPDESTINATION_H_
-#define _ACTIVEMQ_CONNECTOR_STOMP_STOMPDESTINATION_H_
-
-#include <string>
-
-#include <cms/Destination.h>
-
-namespace activemq{
-namespace connector{
-namespace stomp{
-
-    /**
-     * Templatized Destination Class that bundles all the common aspects
-     * of a Stomp Destination into one class.  The template arguement is 
-     * one of Topic, Queue, TemporaryTopic, or TemporaryQueue.
-     */
-    template <typename T>
-    class StompDestination : public T
-    {
-    private:
-    
-        // Destination type
-        cms::Destination::DestinationType destType;
-        
-        // Name of the Destination
-        std::string name;
-        
-    public:
-
-    	StompDestination(void) {}
-        
-    	StompDestination( const std::string& name,
-                          cms::Destination::DestinationType type )
-        {
-            this->name = name;
-            this->destType = type;
-        }
-
-        virtual ~StompDestination(void) {}
-
-        /**
-         * Retrieves the name of this destination, plus the stomp
-         * destination decorator
-         * @return name
-         */
-        virtual std::string toProviderString(void) const {
-            return getPrefix() + name;
-        }
-        
-        /**
-         * Retrieve the Destination Type for this Destination
-         * @return The Destination Type
-         */
-        virtual cms::Destination::DestinationType getDestinationType(void) const {
-            return destType;
-        }
-        
-        /**
-         * Converts the Destination Name into a String minus the 
-         * stomp decorator
-         * @return string name
-         */
-        virtual std::string toString(void) const {
-            return name;
-        }
-
-        /**
-         * Copies the contents of the given Destinastion object to this one.
-         * @param source The source Destination object.
-         */
-        virtual void copy( const cms::Destination& source ) {
-            this->destType = source.getDestinationType();
-            this->name = source.toString();
-        }
-
-    protected:
-    
-        /**
-         * Retrieves the proper Stomp Prefix for the specified type
-         * of Destination
-         * @return string prefix
-         */
-        virtual std::string getPrefix(void) const = 0;
-
-    };
-
-}}}
-
-#endif /*_ACTIVEMQ_CONNECTOR_STOMP_STOMPDESTINATION_H_*/
+/*
+ * Copyright 2006 The Apache Software Foundation or its licensors, as
+ * applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _ACTIVEMQ_CONNECTOR_STOMP_STOMPDESTINATION_H_
+#define _ACTIVEMQ_CONNECTOR_STOMP_STOMPDESTINATION_H_
+
+#include <string>
+
+#include <cms/Destination.h>
+
+namespace activemq{
+namespace connector{
+namespace stomp{
+
+    /**
+     * Templatized Destination Class that bundles all the common aspects
+     * of a Stomp Destination into one class.  The template arguement is 
+     * one of Topic, Queue, TemporaryTopic, or TemporaryQueue.
+     */
+    template <typename T>
+    class StompDestination : public T
+    {
+    private:
+    
+        // Destination type
+        cms::Destination::DestinationType destType;
+        
+        // Name of the Destination
+        std::string name;
+        
+    public:
+
+    	StompDestination(void) {}
+        
+    	StompDestination( const std::string& name,
+                          cms::Destination::DestinationType type )
+        {
+            this->name = name;
+            this->destType = type;
+        }
+
+        virtual ~StompDestination(void) {}
+
+        /**
+         * Retrieves the name of this destination, plus the stomp
+         * destination decorator
+         * @return name
+         */
+        virtual std::string toProviderString(void) const {
+            return getPrefix() + name;
+        }
+        
+        /**
+         * Retrieve the Destination Type for this Destination
+         * @return The Destination Type
+         */
+        virtual cms::Destination::DestinationType getDestinationType(void) const {
+            return destType;
+        }
+        
+        /**
+         * Converts the Destination Name into a String minus the 
+         * stomp decorator
+         * @return string name
+         */
+        virtual std::string toString(void) const {
+            return name;
+        }
+
+        /**
+         * Copies the contents of the given Destinastion object to this one.
+         * @param source The source Destination object.
+         */
+        virtual void copy( const cms::Destination& source ) {
+            this->destType = source.getDestinationType();
+            this->name = source.toString();
+        }
+
+    protected:
+    
+        /**
+         * Retrieves the proper Stomp Prefix for the specified type
+         * of Destination
+         * @return string prefix
+         */
+        virtual std::string getPrefix(void) const = 0;
+
+    };
+
+}}}
+
+#endif /*_ACTIVEMQ_CONNECTOR_STOMP_STOMPDESTINATION_H_*/

Propchange: incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompDestination.h
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompFrame.h
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompFrame.h?rev=419365&r1=419364&r2=419365&view=diff
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompFrame.h (original)
+++ incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompFrame.h Wed Jul  5 15:27:34 2006
@@ -1,127 +1,127 @@
-/*
- * Copyright 2006 The Apache Software Foundation or its licensors, as
- * applicable.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef ACTIVEMQ_CONNECTOR_STOMP_STOMPFRAMEWRAPPER_H_
-#define ACTIVEMQ_CONNECTOR_STOMP_STOMPFRAMEWRAPPER_H_
- 
-#include <string>
-#include <map>
-#include <activemq/util/SimpleProperties.h>
-
-namespace activemq{
-namespace connector{
-namespace stomp{
-
-    /**
-     * A Stomp-level message frame that encloses all messages
-     * to and from the broker.
-     */
-    class StompFrame{           
-    public:
-    
-        /**
-         * Default constructor.
-         */
-        StompFrame(void){
-            body = NULL;
-            bodyLength = 0;
-        }
-        
-        /**
-         * Destruction - frees the memory pool.
-         */
-        virtual ~StompFrame(void) { delete body; }
-        
-        /**
-         * Clonse this message exactly, returns a new instance that the
-         * caller is required to delete.
-         * @return new copy of this message
-         */
-        virtual StompFrame* clone(void) const {
-            StompFrame* frame = new StompFrame();
-            frame->command = command;
-            frame->properties = properties;
-            char* cpyBody = new char[bodyLength];
-            memcpy(cpyBody, body, bodyLength);
-            frame->setBody(cpyBody, bodyLength);
-            return frame;
-        }
-        
-        /**
-         * Sets the command for this stomp frame.
-         * @param command The command to be set.
-         */
-        void setCommand( const std::string& cmd ){
-            this->command = cmd;
-        }
-        
-        /**
-         * Accessor for this frame's command field.
-         */
-        const std::string& getCommand(void) const{
-            return command;
-        }
-        
-        /**
-         * Gets access to the header properties for this frame.
-         */
-        util::Properties& getProperties(void){ return properties; }
-        const util::Properties& getProperties(void) const { 
-            return properties;
-        }
-        
-        /**
-         * Accessor for the body data of this frame.
-         * @return char pointer to body data
-         */
-        const char* getBody(void) const{
-            return body;
-        }
-        
-        /**
-         * Return the number of bytes contained in this frames body
-         * @return Body bytes length.
-         */
-        int getBodyLength(void) const{ return bodyLength; }
-        
-        /**
-         * Sets the body data of this frame as a byte sequence.
-         * @param bytes The byte buffer to be set in the body.
-         * @param numBytes The number of bytes in the buffer.
-         */
-        void setBody( const char* bytes, const int numBytes ){
-            body = bytes;
-            bodyLength = numBytes;
-        }   
-        
-    private:
-
-        // String Name of this command.
-        std::string command;
-
-        // Properties of the Stomp Message
-        util::SimpleProperties properties;
-
-        // Byte data of Body.
-        const char* body;
-        int bodyLength;     
-        
-    };
-    
-}}}
-
-#endif /*ACTIVEMQ_CONNECTOR_STOMP_STOMPFRAMEWRAPPER_H_*/
+/*
+ * Copyright 2006 The Apache Software Foundation or its licensors, as
+ * applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ACTIVEMQ_CONNECTOR_STOMP_STOMPFRAMEWRAPPER_H_
+#define ACTIVEMQ_CONNECTOR_STOMP_STOMPFRAMEWRAPPER_H_
+ 
+#include <string>
+#include <map>
+#include <activemq/util/SimpleProperties.h>
+
+namespace activemq{
+namespace connector{
+namespace stomp{
+
+    /**
+     * A Stomp-level message frame that encloses all messages
+     * to and from the broker.
+     */
+    class StompFrame{           
+    public:
+    
+        /**
+         * Default constructor.
+         */
+        StompFrame(void){
+            body = NULL;
+            bodyLength = 0;
+        }
+        
+        /**
+         * Destruction - frees the memory pool.
+         */
+        virtual ~StompFrame(void) { delete body; }
+        
+        /**
+         * Clonse this message exactly, returns a new instance that the
+         * caller is required to delete.
+         * @return new copy of this message
+         */
+        virtual StompFrame* clone(void) const {
+            StompFrame* frame = new StompFrame();
+            frame->command = command;
+            frame->properties = properties;
+            char* cpyBody = new char[bodyLength];
+            memcpy(cpyBody, body, bodyLength);
+            frame->setBody(cpyBody, bodyLength);
+            return frame;
+        }
+        
+        /**
+         * Sets the command for this stomp frame.
+         * @param command The command to be set.
+         */
+        void setCommand( const std::string& cmd ){
+            this->command = cmd;
+        }
+        
+        /**
+         * Accessor for this frame's command field.
+         */
+        const std::string& getCommand(void) const{
+            return command;
+        }
+        
+        /**
+         * Gets access to the header properties for this frame.
+         */
+        util::Properties& getProperties(void){ return properties; }
+        const util::Properties& getProperties(void) const { 
+            return properties;
+        }
+        
+        /**
+         * Accessor for the body data of this frame.
+         * @return char pointer to body data
+         */
+        const char* getBody(void) const{
+            return body;
+        }
+        
+        /**
+         * Return the number of bytes contained in this frames body
+         * @return Body bytes length.
+         */
+        int getBodyLength(void) const{ return bodyLength; }
+        
+        /**
+         * Sets the body data of this frame as a byte sequence.
+         * @param bytes The byte buffer to be set in the body.
+         * @param numBytes The number of bytes in the buffer.
+         */
+        void setBody( const char* bytes, const int numBytes ){
+            body = bytes;
+            bodyLength = numBytes;
+        }   
+        
+    private:
+
+        // String Name of this command.
+        std::string command;
+
+        // Properties of the Stomp Message
+        util::SimpleProperties properties;
+
+        // Byte data of Body.
+        const char* body;
+        int bodyLength;     
+        
+    };
+    
+}}}
+
+#endif /*ACTIVEMQ_CONNECTOR_STOMP_STOMPFRAMEWRAPPER_H_*/

Propchange: incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompFrame.h
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompProducerInfo.h
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompProducerInfo.h?rev=419365&r1=419364&r2=419365&view=diff
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompProducerInfo.h (original)
+++ incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompProducerInfo.h Wed Jul  5 15:27:34 2006
@@ -1,99 +1,99 @@
-/*
- * Copyright 2006 The Apache Software Foundation or its licensors, as
- * applicable.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _ACTIVEMQ_CONNECTOR_STOMP_STOMPPRODUCERINFO_H_
-#define _ACTIVEMQ_CONNECTOR_STOMP_STOMPPRODUCERINFO_H_
-
-#include <activemq/connector/ProducerInfo.h>
-#include <cms/Destination.h>
-
-namespace activemq{
-namespace connector{
-namespace stomp{
-
-    class StompProducerInfo : public ProducerInfo
-    {
-    private:
-    
-        // Producer Id
-        unsigned int producerId;
-
-        // Default Destination
-        cms::Destination* dest;
-        
-        // Session that this producer is attached to - we do not own this
-        const SessionInfo* session;
-        
-    public:
-
-    	StompProducerInfo(void) { dest = NULL; }
-    	virtual ~StompProducerInfo(void) { delete dest; }
-
-        /**
-         * Retrieves the default destination that this producer
-         * sends its messages to.
-         * @return Destionation, owned by this object
-         */
-        virtual const cms::Destination& getDestination(void) const {
-            return *dest;
-        }
-
-        /**
-         * Sets the Default Destination for this Producer
-         * @param reference to a destination, copied internally
-         */
-        virtual void setDestination( const cms::Destination& dest ) {
-            this->dest = dest.clone();
-        }
-
-        /**
-         * Gets the ID that is assigned to this Producer
-         * @return value of the Producer Id.
-         */
-        virtual unsigned int getProducerId(void) const {
-            return producerId;
-        }
-        
-        /**
-         * Sets the ID that is assigned to this Producer
-         * @return string value of the Producer Id.
-         */
-        virtual void setProducerId( const unsigned int id ) {
-            this->producerId = id;
-        }
-
-        /**
-         * Gets the Session Info that this consumer is attached too
-         * @return SessionnInfo pointer
-         */
-        virtual const SessionInfo* getSessionInfo(void) const {
-            return session;
-        }
-
-        /**
-         * Gets the Session Info that this consumer is attached too
-         * @return SessionnInfo pointer
-         */
-        virtual void setSessionInfo( const SessionInfo* session ) {
-            this->session = session;
-        }
-
-    };
-
-}}}
-
-#endif /*_ACTIVEMQ_CONNECTOR_STOMP_STOMPPRODUCERINFO_H_*/
+/*
+ * Copyright 2006 The Apache Software Foundation or its licensors, as
+ * applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _ACTIVEMQ_CONNECTOR_STOMP_STOMPPRODUCERINFO_H_
+#define _ACTIVEMQ_CONNECTOR_STOMP_STOMPPRODUCERINFO_H_
+
+#include <activemq/connector/ProducerInfo.h>
+#include <cms/Destination.h>
+
+namespace activemq{
+namespace connector{
+namespace stomp{
+
+    class StompProducerInfo : public ProducerInfo
+    {
+    private:
+    
+        // Producer Id
+        unsigned int producerId;
+
+        // Default Destination
+        cms::Destination* dest;
+        
+        // Session that this producer is attached to - we do not own this
+        const SessionInfo* session;
+        
+    public:
+
+    	StompProducerInfo(void) { dest = NULL; }
+    	virtual ~StompProducerInfo(void) { delete dest; }
+
+        /**
+         * Retrieves the default destination that this producer
+         * sends its messages to.
+         * @return Destionation, owned by this object
+         */
+        virtual const cms::Destination& getDestination(void) const {
+            return *dest;
+        }
+
+        /**
+         * Sets the Default Destination for this Producer
+         * @param reference to a destination, copied internally
+         */
+        virtual void setDestination( const cms::Destination& dest ) {
+            this->dest = dest.clone();
+        }
+
+        /**
+         * Gets the ID that is assigned to this Producer
+         * @return value of the Producer Id.
+         */
+        virtual unsigned int getProducerId(void) const {
+            return producerId;
+        }
+        
+        /**
+         * Sets the ID that is assigned to this Producer
+         * @return string value of the Producer Id.
+         */
+        virtual void setProducerId( const unsigned int id ) {
+            this->producerId = id;
+        }
+
+        /**
+         * Gets the Session Info that this consumer is attached too
+         * @return SessionnInfo pointer
+         */
+        virtual const SessionInfo* getSessionInfo(void) const {
+            return session;
+        }
+
+        /**
+         * Gets the Session Info that this consumer is attached too
+         * @return SessionnInfo pointer
+         */
+        virtual void setSessionInfo( const SessionInfo* session ) {
+            this->session = session;
+        }
+
+    };
+
+}}}
+
+#endif /*_ACTIVEMQ_CONNECTOR_STOMP_STOMPPRODUCERINFO_H_*/

Propchange: incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompProducerInfo.h
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompQueue.h
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompQueue.h?rev=419365&r1=419364&r2=419365&view=diff
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompQueue.h (original)
+++ incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompQueue.h Wed Jul  5 15:27:34 2006
@@ -1,74 +1,74 @@
-/*
- * Copyright 2006 The Apache Software Foundation or its licensors, as
- * applicable.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _ACTIVEMQ_CONNECTOR_STOMP_STOMPQUEUE_H_
-#define _ACTIVEMQ_CONNECTOR_STOMP_STOMPQUEUE_H_
-
-#include <activemq/connector/stomp/StompDestination.h>
-#include <activemq/connector/stomp/commands/CommandConstants.h>
-#include <cms/Queue.h>
-
-namespace activemq{
-namespace connector{
-namespace stomp{
-
-    class StompQueue : public StompDestination<cms::Queue>
-    {
-    public:
-
-    	StompQueue(void) : StompDestination< cms::Queue >() {}
-
-        StompQueue(const std::string& name) : 
-            StompDestination< cms::Queue >( name, cms::Destination::QUEUE )
-        {}
-
-    	virtual ~StompQueue(void) {}
-
-        /**
-         * Gets the name of this queue.
-         * @return The queue name.
-         */
-        virtual std::string getQueueName(void) const 
-            throw( cms::CMSException ) {
-                return toString();
-        }
-
-        /**
-         * Creates a new instance of this destination type that is a
-         * copy of this one, and returns it.
-         * @returns cloned copy of this object
-         */
-        virtual cms::Destination* clone(void) const {
-            return new StompQueue( toString() );
-        }
-
-    protected:
-
-        /**
-         * Retrieves the proper Stomp Prefix for the specified type
-         * of Destination
-         * @return string prefix
-         */
-        virtual std::string getPrefix(void) const {
-            return commands::CommandConstants::queuePrefix;
-        }
-        
-    };
-
-}}}
-
-#endif /*_ACTIVEMQ_CONNECTOR_STOMP_STOMPQUEUE_H_*/
+/*
+ * Copyright 2006 The Apache Software Foundation or its licensors, as
+ * applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _ACTIVEMQ_CONNECTOR_STOMP_STOMPQUEUE_H_
+#define _ACTIVEMQ_CONNECTOR_STOMP_STOMPQUEUE_H_
+
+#include <activemq/connector/stomp/StompDestination.h>
+#include <activemq/connector/stomp/commands/CommandConstants.h>
+#include <cms/Queue.h>
+
+namespace activemq{
+namespace connector{
+namespace stomp{
+
+    class StompQueue : public StompDestination<cms::Queue>
+    {
+    public:
+
+    	StompQueue(void) : StompDestination< cms::Queue >() {}
+
+        StompQueue(const std::string& name) : 
+            StompDestination< cms::Queue >( name, cms::Destination::QUEUE )
+        {}
+
+    	virtual ~StompQueue(void) {}
+
+        /**
+         * Gets the name of this queue.
+         * @return The queue name.
+         */
+        virtual std::string getQueueName(void) const 
+            throw( cms::CMSException ) {
+                return toString();
+        }
+
+        /**
+         * Creates a new instance of this destination type that is a
+         * copy of this one, and returns it.
+         * @returns cloned copy of this object
+         */
+        virtual cms::Destination* clone(void) const {
+            return new StompQueue( toString() );
+        }
+
+    protected:
+
+        /**
+         * Retrieves the proper Stomp Prefix for the specified type
+         * of Destination
+         * @return string prefix
+         */
+        virtual std::string getPrefix(void) const {
+            return commands::CommandConstants::queuePrefix;
+        }
+        
+    };
+
+}}}
+
+#endif /*_ACTIVEMQ_CONNECTOR_STOMP_STOMPQUEUE_H_*/

Propchange: incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompQueue.h
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompSelector.h
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompSessionInfo.h
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompSessionInfo.h?rev=419365&r1=419364&r2=419365&view=diff
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompSessionInfo.h (original)
+++ incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompSessionInfo.h Wed Jul  5 15:27:34 2006
@@ -1,134 +1,134 @@
-/*
- * Copyright 2006 The Apache Software Foundation or its licensors, as
- * applicable.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef _ACTIVEMQ_CONNECTOR_STOMP_STOMPSESSIONINFO_H_
-#define _ACTIVEMQ_CONNECTOR_STOMP_STOMPSESSIONINFO_H_
-
-#include <activemq/connector/SessionInfo.h>
-#include <cms/Session.h>
-#include <string>
-
-namespace activemq{
-namespace connector{
-namespace stomp{
-
-    class StompSessionInfo : public connector::SessionInfo
-    {
-    private:
-    
-        // Acknowledge Mode of this Session
-        cms::Session::AcknowledgeMode ackMode;
-        
-        // The id of the connection to the broker 
-        // (given to us by the broker)
-        std::string connectionId;
-        
-        // The unique session id
-        unsigned int sessionId;
-        
-        // Info for this sessions current transaction
-        const TransactionInfo* transaction;
-        
-    public:
-
-        /**
-         * Constructor
-         */
-        StompSessionInfo(void)
-        {
-            sessionId = 0;
-            ackMode = cms::Session::AutoAcknowledge;
-        }
-
-        /**
-         * Destructor
-         */
-        virtual ~StompSessionInfo(void) {}
-
-        /**
-         * Gets the Connection Id of the Connection that this consumer is
-         * using to receive its messages.
-         * @return string value of the connection id
-         */
-        virtual const std::string& getConnectionId(void) const{
-            return connectionId;
-        }
-   
-        /**
-         * Sets the Connection Id of the Connection that this consumer is
-         * using to receive its messages.
-         * @param string value of the connection id
-         */
-        virtual void setConnectionId( const std::string& id ){
-            connectionId = id;
-        }
-        
-        /**
-         * Gets the Sessions Id value
-         * @return id for this session
-         */
-        virtual unsigned int getSessionId(void) const {
-            return sessionId;
-        }
-
-        /**
-         * Sets the Session Id for this Session
-         * @param integral id value for this session
-         */
-        virtual void setSessionId( const unsigned int id ) {
-            this->sessionId = id;
-        }
-
-        /**
-         * Sets the Ack Mode of this Session Info object
-         * @param Ack Mode
-         */
-        virtual void setAckMode(cms::Session::AcknowledgeMode ackMode) {
-            this->ackMode = ackMode;
-        }
-        
-        /**
-         * Gets the Ack Mode of this Session
-         * @return Ack Mode
-         */
-        virtual cms::Session::AcknowledgeMode getAckMode(void) const {
-            return ackMode;
-        }
-        
-        /**
-         * Gets the currently active transaction info, if this session is
-         * transacted, returns NULL when not transacted.  You must call
-         * getAckMode and see if the session is transacted.
-         * @return Transaction Id of current Transaction
-         */
-        virtual const TransactionInfo* getTransactionInfo(void) const {
-            return transaction;
-        }
-        
-        /**
-         * Sets the current transaction info for this session, this is nit
-         * used when the session is not transacted.
-         * @param Transaction Id
-         */        
-        virtual void setTransactionInfo( const TransactionInfo* transaction ) {
-            this->transaction = transaction;
-        }
-
-   };
-
-}}}
-
-#endif /*_ACTIVEMQ_CONNECTOR_STOMP_STOMPSESSIONINFO_H_*/
+/*
+ * Copyright 2006 The Apache Software Foundation or its licensors, as
+ * applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#ifndef _ACTIVEMQ_CONNECTOR_STOMP_STOMPSESSIONINFO_H_
+#define _ACTIVEMQ_CONNECTOR_STOMP_STOMPSESSIONINFO_H_
+
+#include <activemq/connector/SessionInfo.h>
+#include <cms/Session.h>
+#include <string>
+
+namespace activemq{
+namespace connector{
+namespace stomp{
+
+    class StompSessionInfo : public connector::SessionInfo
+    {
+    private:
+    
+        // Acknowledge Mode of this Session
+        cms::Session::AcknowledgeMode ackMode;
+        
+        // The id of the connection to the broker 
+        // (given to us by the broker)
+        std::string connectionId;
+        
+        // The unique session id
+        unsigned int sessionId;
+        
+        // Info for this sessions current transaction
+        const TransactionInfo* transaction;
+        
+    public:
+
+        /**
+         * Constructor
+         */
+        StompSessionInfo(void)
+        {
+            sessionId = 0;
+            ackMode = cms::Session::AutoAcknowledge;
+        }
+
+        /**
+         * Destructor
+         */
+        virtual ~StompSessionInfo(void) {}
+
+        /**
+         * Gets the Connection Id of the Connection that this consumer is
+         * using to receive its messages.
+         * @return string value of the connection id
+         */
+        virtual const std::string& getConnectionId(void) const{
+            return connectionId;
+        }
+   
+        /**
+         * Sets the Connection Id of the Connection that this consumer is
+         * using to receive its messages.
+         * @param string value of the connection id
+         */
+        virtual void setConnectionId( const std::string& id ){
+            connectionId = id;
+        }
+        
+        /**
+         * Gets the Sessions Id value
+         * @return id for this session
+         */
+        virtual unsigned int getSessionId(void) const {
+            return sessionId;
+        }
+
+        /**
+         * Sets the Session Id for this Session
+         * @param integral id value for this session
+         */
+        virtual void setSessionId( const unsigned int id ) {
+            this->sessionId = id;
+        }
+
+        /**
+         * Sets the Ack Mode of this Session Info object
+         * @param Ack Mode
+         */
+        virtual void setAckMode(cms::Session::AcknowledgeMode ackMode) {
+            this->ackMode = ackMode;
+        }
+        
+        /**
+         * Gets the Ack Mode of this Session
+         * @return Ack Mode
+         */
+        virtual cms::Session::AcknowledgeMode getAckMode(void) const {
+            return ackMode;
+        }
+        
+        /**
+         * Gets the currently active transaction info, if this session is
+         * transacted, returns NULL when not transacted.  You must call
+         * getAckMode and see if the session is transacted.
+         * @return Transaction Id of current Transaction
+         */
+        virtual const TransactionInfo* getTransactionInfo(void) const {
+            return transaction;
+        }
+        
+        /**
+         * Sets the current transaction info for this session, this is nit
+         * used when the session is not transacted.
+         * @param Transaction Id
+         */        
+        virtual void setTransactionInfo( const TransactionInfo* transaction ) {
+            this->transaction = transaction;
+        }
+
+   };
+
+}}}
+
+#endif /*_ACTIVEMQ_CONNECTOR_STOMP_STOMPSESSIONINFO_H_*/

Propchange: incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompSessionInfo.h
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompSessionManager.cpp
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompSessionManager.cpp?rev=419365&r1=419364&r2=419365&view=diff
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompSessionManager.cpp (original)
+++ incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompSessionManager.cpp Wed Jul  5 15:27:34 2006
@@ -1,326 +1,326 @@
-/*
- * Copyright 2006 The Apache Software Foundation or its licensors, as
- * applicable.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "StompSessionManager.h"
-
-#include <activemq/core/ActiveMQMessage.h>
-#include <activemq/concurrent/Concurrent.h>
-#include <activemq/connector/stomp/StompSessionInfo.h>
-#include <activemq/connector/stomp/StompConsumerInfo.h>
-#include <activemq/connector/stomp/commands/SubscribeCommand.h>
-#include <activemq/connector/stomp/commands/UnsubscribeCommand.h>
-#include <activemq/connector/stomp/StompSelector.h>
-
-using namespace std;
-using namespace activemq;
-using namespace activemq::core;
-using namespace activemq::exceptions;
-using namespace activemq::transport;
-using namespace activemq::connector;
-using namespace activemq::connector::stomp;
-using namespace activemq::connector::stomp::commands;
-
-////////////////////////////////////////////////////////////////////////////////
-StompSessionManager::StompSessionManager( const std::string& connectionId, 
-                                          Transport* transport )
-{
-    if( transport == NULL )
-    {
-        throw NullPointerException( 
-            __FILE__, __LINE__,
-            "StompSessionManager::StompSessionManager" );
-    }
-
-    this->transport = transport;
-    this->connectionId = connectionId;
-    this->nextSessionId = 0;
-    this->nextConsumerId = 0;
-    this->messageListener = NULL;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-StompSessionManager::~StompSessionManager(void)
-{
-    // NOTE - I am not cleaning out the ConsumerInfo objects in the
-    // map becaise it is really the job of the consumer ot remove itself
-    // when it is destructed.  If it doesn't then we would have problems,
-    // but if it does, but it's deleted after this object then we would
-    // still have problems.  
-}
-
-////////////////////////////////////////////////////////////////////////////////
-unsigned int StompSessionManager::getNextSessionId(void)
-{
-    synchronized(&mutex)
-    {
-        return nextSessionId++;
-    }
-    
-    return 0;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-unsigned int StompSessionManager::getNextConsumerId(void)
-{
-    synchronized(&mutex)
-    {
-        return nextConsumerId++;
-    }
-
-    return 0;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-connector::SessionInfo* StompSessionManager::createSession(
-    cms::Session::AcknowledgeMode ackMode) 
-        throw ( exceptions::ActiveMQException )
-{
-    try
-    {
-        SessionInfo* session = new StompSessionInfo();
-        
-        // Init data
-        session->setAckMode(ackMode);
-        session->setConnectionId( connectionId );
-        session->setSessionId( getNextSessionId() );
-        
-        return session;
-    }
-    AMQ_CATCH_RETHROW( ActiveMQException )
-    AMQ_CATCHALL_THROW( ActiveMQException )
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void StompSessionManager::removeSession( 
-    connector::SessionInfo* session )
-        throw ( exceptions::ActiveMQException )
-{
-    // NO-op
-}
-    
-////////////////////////////////////////////////////////////////////////////////
-connector::ConsumerInfo* StompSessionManager::createConsumer(
-    cms::Destination* destination, 
-    SessionInfo* session,
-    const std::string& selector)
-        throw( ConnectorException )
-{
-    try
-    {
-        // Delegate to the createDurableConsumer method, just pas the
-        // appropriate params so that a regular consumer is created on
-        // the broker side.
-        return createDurableConsumer( 
-            destination, session, "", selector, false );    
-    }
-    AMQ_CATCH_RETHROW( ConnectorException )
-    AMQ_CATCHALL_THROW( ConnectorException )
-}
-
-////////////////////////////////////////////////////////////////////////////////
-connector::ConsumerInfo* StompSessionManager::createDurableConsumer(
-    cms::Destination* destination, 
-    SessionInfo* session,
-    const std::string& name,
-    const std::string& selector,
-    bool noLocal )
-        throw ( ConnectorException )
-{
-    try
-    {
-        synchronized(&mutex)
-        {
-            // Find the right mapping to consumers        
-            ConsumerMap& consumerMap = 
-                destinationMap[ destination->toString() ];
-            
-            // We only need to send a sub request if there are no active 
-            // consumers on this destination.  
-            if( consumerMap.empty() )
-            {
-                // Send the request to the Broker
-                SubscribeCommand cmd;
-                
-                if( session->getAckMode() == cms::Session::ClientAcknowledge )
-                {
-                    cmd.setAckMode( CommandConstants::ACK_CLIENT );
-                }
-                cmd.setDestination( destination->toProviderString() );
-                cmd.setNoLocal( noLocal );
-
-                if( name != "" )
-                {
-                    cmd.setSubscriptionName( name );
-                }
-                
-                // The Selector is set on the first subscribe on this dest,
-                // and if another consumer is created on this destination
-                // that specifies a selector it will be ignored.  While 
-                // this is not ideal, is the only way to handle the fact
-                // that activemq stomp doesn't support multiple sessions.
-                if( selector != "" )
-                {
-                    cmd.setMessageSelector( selector );
-                }
-        
-                // Fire the message        
-                transport->oneway( &cmd );
-            }
-             
-            // Initialize a new Consumer info Message
-            ConsumerInfo* consumer = new StompConsumerInfo();
-            
-            consumer->setConsumerId( getNextConsumerId() );
-            consumer->setDestination( *destination );
-            consumer->setMessageSelector( selector );
-            consumer->setSessionInfo( session );
-    
-            // Store this consumer for later message dispatching.        
-            consumerMap.insert( 
-                make_pair( consumer->getConsumerId(), consumer ) );
-            
-            return consumer;
-        }
-        
-        return NULL;
-    }
-    AMQ_CATCH_RETHROW( ConnectorException )
-    AMQ_CATCHALL_THROW( ConnectorException )
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void StompSessionManager::removeConsumer(
-    connector::ConsumerInfo* consumer)
-        throw( ConnectorException )
-{
-    try
-    {
-        synchronized(&mutex)
-        {
-            DestinationMap::iterator itr = 
-                destinationMap.find( consumer->getDestination().toString() );
-                
-            if( itr == destinationMap.end() )
-            {
-                // Already removed from the map
-                return;
-            }
-            
-            ConsumerMap& consumers = itr->second;
-            
-            // Remove from the map.
-            consumers.erase( consumer->getConsumerId() );
-            
-            // If there are no more on this destination then we unsubscribe
-            if( consumers.empty() )
-            {
-                UnsubscribeCommand cmd;
-                
-                cmd.setDestination( 
-                    consumer->getDestination().toProviderString() );
-                
-                // Send the message
-                transport->oneway( &cmd );
-            }    
-        }
-    }
-    AMQ_CATCH_RETHROW( ConnectorException )
-    AMQ_CATCHALL_THROW( ConnectorException )
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void StompSessionManager::onStompCommand( commands::StompCommand* command ) 
-    throw ( StompConnectorException )
-{
-    try
-    {
-        cms::Message* message = dynamic_cast< cms::Message*>( command );
-
-        if( message == NULL )
-        {
-            throw StompConnectorException(
-                __FILE__, __LINE__,
-                "StompSessionManager::onStompCommand - Invalid Command" );
-        }
-
-        if( messageListener == NULL )
-        {
-            throw StompConnectorException(
-                __FILE__, __LINE__,
-                "StompSessionManager::onStompCommand - "
-                "No Message Listener Registered." );
-        }
-                
-        synchronized(&mutex)
-        {
-            DestinationMap::iterator itr = 
-                destinationMap.find( message->getCMSDestination().toString() );
-
-            if( itr == destinationMap.end() )
-            {
-                throw StompConnectorException(
-                    __FILE__, __LINE__,
-                    "StompSessionManager::onStompCommand - "
-                    "Received a Message that doesn't have a listener" );
-            }
-
-            // If we only have 1 consumer, we don't need to clone the original
-            // message.
-            if(itr->second.size() == 1)
-            {
-                ConsumerInfo* consumerInfo = itr->second.begin()->second;
-                
-                if( StompSelector::isSelected( 
-                        consumerInfo->getMessageSelector(),
-                        message ) )
-                {                    
-                    ActiveMQMessage* msg = 
-                        dynamic_cast< ActiveMQMessage* >( message );
-                    messageListener->onConsumerMessage( consumerInfo, msg );
-                }
-                
-                return;
-            }
-
-            // We have more than one consumer of this message - we have to
-            // clone the message for each consumer so they don't destroy each other's
-            // message.
-            ConsumerMap::iterator c_itr = itr->second.begin();
-            
-            for(; c_itr != itr->second.end(); ++c_itr )
-            {
-                ConsumerInfo* consumerInfo = c_itr->second;
-                
-                if( StompSelector::isSelected( 
-                        consumerInfo->getMessageSelector(),
-                        message ) )
-                {
-                    ActiveMQMessage* msg = 
-                        dynamic_cast< ActiveMQMessage* >( message->clone() );
-                    messageListener->onConsumerMessage( consumerInfo, msg );
-                }
-            }
-            
-            // We got here which means that we sent copies, so remove
-            // the original.
-            delete command;
-        }
-    }
-    AMQ_CATCH_RETHROW( StompConnectorException )
-    AMQ_CATCH_EXCEPTION_CONVERT( ActiveMQException, StompConnectorException )
-    AMQ_CATCHALL_THROW( StompConnectorException )
-}
+/*
+ * Copyright 2006 The Apache Software Foundation or its licensors, as
+ * applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "StompSessionManager.h"
+
+#include <activemq/core/ActiveMQMessage.h>
+#include <activemq/concurrent/Concurrent.h>
+#include <activemq/connector/stomp/StompSessionInfo.h>
+#include <activemq/connector/stomp/StompConsumerInfo.h>
+#include <activemq/connector/stomp/commands/SubscribeCommand.h>
+#include <activemq/connector/stomp/commands/UnsubscribeCommand.h>
+#include <activemq/connector/stomp/StompSelector.h>
+
+using namespace std;
+using namespace activemq;
+using namespace activemq::core;
+using namespace activemq::exceptions;
+using namespace activemq::transport;
+using namespace activemq::connector;
+using namespace activemq::connector::stomp;
+using namespace activemq::connector::stomp::commands;
+
+////////////////////////////////////////////////////////////////////////////////
+StompSessionManager::StompSessionManager( const std::string& connectionId, 
+                                          Transport* transport )
+{
+    if( transport == NULL )
+    {
+        throw NullPointerException( 
+            __FILE__, __LINE__,
+            "StompSessionManager::StompSessionManager" );
+    }
+
+    this->transport = transport;
+    this->connectionId = connectionId;
+    this->nextSessionId = 0;
+    this->nextConsumerId = 0;
+    this->messageListener = NULL;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+StompSessionManager::~StompSessionManager(void)
+{
+    // NOTE - I am not cleaning out the ConsumerInfo objects in the
+    // map becaise it is really the job of the consumer ot remove itself
+    // when it is destructed.  If it doesn't then we would have problems,
+    // but if it does, but it's deleted after this object then we would
+    // still have problems.  
+}
+
+////////////////////////////////////////////////////////////////////////////////
+unsigned int StompSessionManager::getNextSessionId(void)
+{
+    synchronized(&mutex)
+    {
+        return nextSessionId++;
+    }
+    
+    return 0;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+unsigned int StompSessionManager::getNextConsumerId(void)
+{
+    synchronized(&mutex)
+    {
+        return nextConsumerId++;
+    }
+
+    return 0;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+connector::SessionInfo* StompSessionManager::createSession(
+    cms::Session::AcknowledgeMode ackMode) 
+        throw ( exceptions::ActiveMQException )
+{
+    try
+    {
+        SessionInfo* session = new StompSessionInfo();
+        
+        // Init data
+        session->setAckMode(ackMode);
+        session->setConnectionId( connectionId );
+        session->setSessionId( getNextSessionId() );
+        
+        return session;
+    }
+    AMQ_CATCH_RETHROW( ActiveMQException )
+    AMQ_CATCHALL_THROW( ActiveMQException )
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void StompSessionManager::removeSession( 
+    connector::SessionInfo* session )
+        throw ( exceptions::ActiveMQException )
+{
+    // NO-op
+}
+    
+////////////////////////////////////////////////////////////////////////////////
+connector::ConsumerInfo* StompSessionManager::createConsumer(
+    cms::Destination* destination, 
+    SessionInfo* session,
+    const std::string& selector)
+        throw( ConnectorException )
+{
+    try
+    {
+        // Delegate to the createDurableConsumer method, just pas the
+        // appropriate params so that a regular consumer is created on
+        // the broker side.
+        return createDurableConsumer( 
+            destination, session, "", selector, false );    
+    }
+    AMQ_CATCH_RETHROW( ConnectorException )
+    AMQ_CATCHALL_THROW( ConnectorException )
+}
+
+////////////////////////////////////////////////////////////////////////////////
+connector::ConsumerInfo* StompSessionManager::createDurableConsumer(
+    cms::Destination* destination, 
+    SessionInfo* session,
+    const std::string& name,
+    const std::string& selector,
+    bool noLocal )
+        throw ( ConnectorException )
+{
+    try
+    {
+        synchronized(&mutex)
+        {
+            // Find the right mapping to consumers        
+            ConsumerMap& consumerMap = 
+                destinationMap[ destination->toString() ];
+            
+            // We only need to send a sub request if there are no active 
+            // consumers on this destination.  
+            if( consumerMap.empty() )
+            {
+                // Send the request to the Broker
+                SubscribeCommand cmd;
+                
+                if( session->getAckMode() == cms::Session::ClientAcknowledge )
+                {
+                    cmd.setAckMode( CommandConstants::ACK_CLIENT );
+                }
+                cmd.setDestination( destination->toProviderString() );
+                cmd.setNoLocal( noLocal );
+
+                if( name != "" )
+                {
+                    cmd.setSubscriptionName( name );
+                }
+                
+                // The Selector is set on the first subscribe on this dest,
+                // and if another consumer is created on this destination
+                // that specifies a selector it will be ignored.  While 
+                // this is not ideal, is the only way to handle the fact
+                // that activemq stomp doesn't support multiple sessions.
+                if( selector != "" )
+                {
+                    cmd.setMessageSelector( selector );
+                }
+        
+                // Fire the message        
+                transport->oneway( &cmd );
+            }
+             
+            // Initialize a new Consumer info Message
+            ConsumerInfo* consumer = new StompConsumerInfo();
+            
+            consumer->setConsumerId( getNextConsumerId() );
+            consumer->setDestination( *destination );
+            consumer->setMessageSelector( selector );
+            consumer->setSessionInfo( session );
+    
+            // Store this consumer for later message dispatching.        
+            consumerMap.insert( 
+                make_pair( consumer->getConsumerId(), consumer ) );
+            
+            return consumer;
+        }
+        
+        return NULL;
+    }
+    AMQ_CATCH_RETHROW( ConnectorException )
+    AMQ_CATCHALL_THROW( ConnectorException )
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void StompSessionManager::removeConsumer(
+    connector::ConsumerInfo* consumer)
+        throw( ConnectorException )
+{
+    try
+    {
+        synchronized(&mutex)
+        {
+            DestinationMap::iterator itr = 
+                destinationMap.find( consumer->getDestination().toString() );
+                
+            if( itr == destinationMap.end() )
+            {
+                // Already removed from the map
+                return;
+            }
+            
+            ConsumerMap& consumers = itr->second;
+            
+            // Remove from the map.
+            consumers.erase( consumer->getConsumerId() );
+            
+            // If there are no more on this destination then we unsubscribe
+            if( consumers.empty() )
+            {
+                UnsubscribeCommand cmd;
+                
+                cmd.setDestination( 
+                    consumer->getDestination().toProviderString() );
+                
+                // Send the message
+                transport->oneway( &cmd );
+            }    
+        }
+    }
+    AMQ_CATCH_RETHROW( ConnectorException )
+    AMQ_CATCHALL_THROW( ConnectorException )
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void StompSessionManager::onStompCommand( commands::StompCommand* command ) 
+    throw ( StompConnectorException )
+{
+    try
+    {
+        cms::Message* message = dynamic_cast< cms::Message*>( command );
+
+        if( message == NULL )
+        {
+            throw StompConnectorException(
+                __FILE__, __LINE__,
+                "StompSessionManager::onStompCommand - Invalid Command" );
+        }
+
+        if( messageListener == NULL )
+        {
+            throw StompConnectorException(
+                __FILE__, __LINE__,
+                "StompSessionManager::onStompCommand - "
+                "No Message Listener Registered." );
+        }
+                
+        synchronized(&mutex)
+        {
+            DestinationMap::iterator itr = 
+                destinationMap.find( message->getCMSDestination().toString() );
+
+            if( itr == destinationMap.end() )
+            {
+                throw StompConnectorException(
+                    __FILE__, __LINE__,
+                    "StompSessionManager::onStompCommand - "
+                    "Received a Message that doesn't have a listener" );
+            }
+
+            // If we only have 1 consumer, we don't need to clone the original
+            // message.
+            if(itr->second.size() == 1)
+            {
+                ConsumerInfo* consumerInfo = itr->second.begin()->second;
+                
+                if( StompSelector::isSelected( 
+                        consumerInfo->getMessageSelector(),
+                        message ) )
+                {                    
+                    ActiveMQMessage* msg = 
+                        dynamic_cast< ActiveMQMessage* >( message );
+                    messageListener->onConsumerMessage( consumerInfo, msg );
+                }
+                
+                return;
+            }
+
+            // We have more than one consumer of this message - we have to
+            // clone the message for each consumer so they don't destroy each other's
+            // message.
+            ConsumerMap::iterator c_itr = itr->second.begin();
+            
+            for(; c_itr != itr->second.end(); ++c_itr )
+            {
+                ConsumerInfo* consumerInfo = c_itr->second;
+                
+                if( StompSelector::isSelected( 
+                        consumerInfo->getMessageSelector(),
+                        message ) )
+                {
+                    ActiveMQMessage* msg = 
+                        dynamic_cast< ActiveMQMessage* >( message->clone() );
+                    messageListener->onConsumerMessage( consumerInfo, msg );
+                }
+            }
+            
+            // We got here which means that we sent copies, so remove
+            // the original.
+            delete command;
+        }
+    }
+    AMQ_CATCH_RETHROW( StompConnectorException )
+    AMQ_CATCH_EXCEPTION_CONVERT( ActiveMQException, StompConnectorException )
+    AMQ_CATCHALL_THROW( StompConnectorException )
+}

Propchange: incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompSessionManager.cpp
------------------------------------------------------------------------------
    svn:eol-style = native