activemq-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From tab...@apache.org
Subject svn commit: r736842 [3/5] - in /activemq/activemq-cpp/trunk/src: main/ main/activemq/commands/ main/activemq/connector/ main/activemq/core/ main/activemq/exceptions/ main/activemq/library/ main/activemq/transport/ main/activemq/transport/mock/ main/act...
Date Thu, 22 Jan 2009 22:55:28 GMT
Copied: activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQTransactionContext.cpp (from r732499, activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQTransaction.cpp)
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQTransactionContext.cpp?p2=activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQTransactionContext.cpp&p1=activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQTransaction.cpp&r1=732499&r2=736842&rev=736842&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQTransaction.cpp (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQTransactionContext.cpp Thu Jan 22 14:55:27 2009
@@ -14,50 +14,50 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-#include "ActiveMQTransaction.h"
+#include "ActiveMQTransactionContext.h"
 
 #include <activemq/core/ActiveMQSession.h>
 #include <activemq/core/ActiveMQConnection.h>
-#include <activemq/core/ActiveMQConsumer.h>
-#include <activemq/core/ActiveMQMessage.h>
+#include <activemq/core/ActiveMQConstants.h>
+#include <activemq/commands/TransactionInfo.h>
 #include <decaf/lang/exceptions/NullPointerException.h>
 #include <decaf/lang/Integer.h>
+#include <decaf/util/Iterator.h>
 
 using namespace std;
 using namespace cms;
 using namespace activemq;
 using namespace activemq::core;
 using namespace activemq::exceptions;
-using namespace activemq::connector;
-using namespace decaf::lang::exceptions;
+using namespace activemq::commands;
+using namespace decaf;
 using namespace decaf::lang;
+using namespace decaf::lang::exceptions;
 using namespace decaf::util;
 using namespace decaf::util::concurrent;
 
 ////////////////////////////////////////////////////////////////////////////////
-ActiveMQTransaction::ActiveMQTransaction( ActiveMQConnection* connection,
-                                          ActiveMQSession* session,
-                                          const Properties& properties ) {
+ActiveMQTransactionContext::ActiveMQTransactionContext( ActiveMQSession* session,
+                                                        const Properties& properties ) {
     try {
 
-        if( connection == NULL || session == NULL ) {
+        if( session == NULL ) {
             throw NullPointerException(
                 __FILE__, __LINE__,
-                "ActiveMQTransaction::ActiveMQTransaction - "
-                "Initialized with a NULL connection data");
+                "ActiveMQTransactionContext::ActiveMQTransactionContext - "
+                "Initialized with a NULL session data");
         }
 
         // Store State Data
-        this->connection = connection;
         this->session = session;
+        this->connection = session->getConnection();
 
         // convert from property Strings to int.
-        maxRedeliveries = Integer::parseInt(
+        this->maxRedeliveries = Integer::parseInt(
             properties.getProperty( "transaction.maxRedeliveryCount", "5" ) );
 
         // Start a new Transaction
-        transactionInfo = connection->getConnectionData()->
-            getConnector()->startTransaction( session->getSessionInfo() );
+        this->startTransaction();
     }
     AMQ_CATCH_RETHROW( ActiveMQException )
     AMQ_CATCH_EXCEPTION_CONVERT( Exception, ActiveMQException )
@@ -65,17 +65,16 @@
 }
 
 ////////////////////////////////////////////////////////////////////////////////
-ActiveMQTransaction::~ActiveMQTransaction() {
+ActiveMQTransactionContext::~ActiveMQTransactionContext() {
 
     try{
 
+        // TODO
         // Inform the connector we are rolling back before we close so that
         // the provider knows we didn't complete this transaction
-        connection->getConnectionData()->getConnector()->
-            rollback( transactionInfo, session->getSessionInfo() );
+//        connection->getConnectionData()->getConnector()->
+//            rollback( transactionInfo, session->getSessionInfo() );
 
-        // Clean up
-        clearTransaction();
     }
     AMQ_CATCH_NOTHROW( ActiveMQException )
     AMQ_CATCH_EXCEPTION_CONVERT( Exception, ActiveMQException )
@@ -83,163 +82,72 @@
 }
 
 ////////////////////////////////////////////////////////////////////////////////
-void ActiveMQTransaction::clearTransaction() {
-
-    try{
-
-        if( transactionInfo != NULL ) {
-            // Dispose of the ProducerInfo
-            transactionInfo->close();
-            delete transactionInfo;
-        }
-
-        synchronized( &rollbackLock ) {
-
-            // If there are any messages that are being transacted, then
-            // they die once and for all here.
-            RollbackMap::iterator itr = rollbackMap.begin();
-
-            for( ; itr != rollbackMap.end(); ++itr ) {
-
-                MessageList::iterator msgItr = itr->second.begin();
-
-                for( ; msgItr != itr->second.end(); ++msgItr ) {
-                   delete *msgItr;
-                }
-            }
+void ActiveMQTransactionContext::addSynchronization( Synchronization* sync ) {
 
-            rollbackMap.clear();
-        }
+    synchronized( &this->synchronizations ) {
+        this->synchronizations.add( sync );
     }
-    AMQ_CATCH_RETHROW( ActiveMQException )
-    AMQ_CATCH_EXCEPTION_CONVERT( Exception, ActiveMQException )
-    AMQ_CATCHALL_THROW( ActiveMQException )
 }
 
 ////////////////////////////////////////////////////////////////////////////////
-void ActiveMQTransaction::addToTransaction( ActiveMQMessage* message,
-                                            ActiveMQConsumer* consumer ) {
+void ActiveMQTransactionContext::removeSynchronization( Synchronization* sync ) {
 
-    synchronized( &rollbackLock ) {
-        // Store in the Multi Map
-        rollbackMap[consumer].push_back( message );
+    synchronized( &this->synchronizations ) {
+        this->synchronizations.remove( sync );
     }
 }
 
 ////////////////////////////////////////////////////////////////////////////////
-void ActiveMQTransaction::addToTransaction( cms::Message* message,
-                                            ActiveMQConsumer* consumer ) {
-
-    synchronized( &rollbackLock ) {
-
-        ActiveMQMessage* coreMessage = dynamic_cast<ActiveMQMessage*>( message );
-
-        if( coreMessage == NULL ) {
-            throw NullPointerException(
-                __FILE__, __LINE__, "Message is not a core::ActiveMQMessage derivation" );
-        }
-
-        // Store in the Multi Map
-        rollbackMap[consumer].push_back( coreMessage );
-    }
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void ActiveMQTransaction::removeFromTransaction( ActiveMQConsumer* consumer ) {
-
-    try{
-
-        // Delete all the messages, then remove the consumer's entry from
-        // the Rollback Map.
-        synchronized( &rollbackLock ) {
-            RollbackMap::iterator rb_itr = rollbackMap.find( consumer );
-
-            if( rb_itr == rollbackMap.end() ) {
-                return;
-            }
-
-            MessageList::iterator itr = rb_itr->second.begin();
-
-            for( ; itr != rollbackMap[consumer].end(); ++itr ) {
-               delete *itr;
-            }
-
-            // Erase the entry from the map
-            rollbackMap.erase( consumer );
-        }
-    }
-    AMQ_CATCH_RETHROW( ActiveMQException )
-    AMQ_CATCH_EXCEPTION_CONVERT( Exception, ActiveMQException )
-    AMQ_CATCHALL_THROW( ActiveMQException )
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void ActiveMQTransaction::removeFromTransaction( long long consumerId ) {
-
-    try {
-
-        // Delete all the messages, then remove the consumer's entry from
-        // the Rollback Map.
-        synchronized( &rollbackLock ) {
-
-            RollbackMap::iterator iter = rollbackMap.begin();
-
-            for( ; iter != rollbackMap.end(); ++iter ) {
-
-                long long id = iter->first->getConsumerInfo()->getConsumerId();
-
-                if( id == consumerId ) {
-                    removeFromTransaction( iter->first );
-                    return;
-                }
-            }
-        }
-    }
-    AMQ_CATCH_RETHROW( ActiveMQException )
-    AMQ_CATCH_EXCEPTION_CONVERT( Exception, ActiveMQException )
-    AMQ_CATCHALL_THROW( ActiveMQException )
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void ActiveMQTransaction::commit()
+void ActiveMQTransactionContext::commit()
     throw ( activemq::exceptions::ActiveMQException ) {
 
     try{
 
-        if( this->transactionInfo == NULL ) {
+        if( this->transactionInfo.get() == NULL ||
+            this->transactionInfo->getTransactionId() == NULL ) {
             throw InvalidStateException(
                 __FILE__, __LINE__,
-                "ActiveMQTransaction::begin - "
+                "ActiveMQTransactionContext::commit - "
                 "Commit called before transaction was started.");
         }
 
         // Stop any deliveries
-        session->stop();
+        this->session->stop();
 
-        // Now that the session is stopped, ack all messages we've
-        // delivered to the clients and placed in the Rollback map.
-        synchronized( &rollbackLock ) {
+        // Notify each registered Synchronization that we are committing this Transaction.
+        synchronized( &this->synchronizations ) {
 
-            RollbackMap::iterator itr = rollbackMap.begin();
+            std::auto_ptr< decaf::util::Iterator<Synchronization*> > iter(
+                this->synchronizations.iterator() );
 
-            for(; itr != rollbackMap.end(); ++itr) {
-                ackMessages( itr->first, itr->second );
+            while( iter->hasNext() ) {
+                iter->next()->beforeCommit();
             }
         }
 
         // Commit the current Transaction
-        connection->getConnectionData()->getConnector()->
-            commit( transactionInfo, session->getSessionInfo() );
+        this->transactionInfo->setType( ActiveMQConstants::TRANSACTION_STATE_COMMITONEPHASE );
+        this->connection->oneway( this->transactionInfo.get() );
 
-        // Clean out the Transaction
-        clearTransaction();
+        // Notify each registered Synchronization that we have committed this Transaction.
+        synchronized( &this->synchronizations ) {
+
+            std::auto_ptr<decaf::util::Iterator<Synchronization*> > iter(
+                this->synchronizations.iterator() );
+
+            while( iter->hasNext() ) {
+                iter->next()->afterCommit();
+            }
+        }
+
+        // Clear all the Synchronizations.
+        this->clearSynchronizations();
 
         // Start a new Transaction
-        transactionInfo = connection->getConnectionData()->
-            getConnector()->startTransaction( session->getSessionInfo() );
+        this->startTransaction();
 
         // Stop any deliveries
-        session->start();
+        this->session->start();
     }
     AMQ_CATCH_RETHROW( ActiveMQException )
     AMQ_CATCH_EXCEPTION_CONVERT( Exception, ActiveMQException )
@@ -247,52 +155,45 @@
 }
 
 ////////////////////////////////////////////////////////////////////////////////
-void ActiveMQTransaction::rollback()
+void ActiveMQTransactionContext::rollback()
     throw ( activemq::exceptions::ActiveMQException ) {
 
     try{
 
-        if( this->transactionInfo == NULL ) {
+        if( this->transactionInfo.get() == NULL ||
+            this->transactionInfo->getTransactionId() == NULL ) {
             throw InvalidStateException(
                 __FILE__, __LINE__,
-                "ActiveMQTransaction::rollback - "
+                "ActiveMQTransactionContext::rollback - "
                 "Rollback called before transaction was started.");
         }
 
         // Stop any Deliveries
-        session->stop();
+        this->session->stop();
 
         // Rollback the Transaction
-        connection->getConnectionData()->getConnector()->
-            rollback( transactionInfo, session->getSessionInfo() );
+        this->transactionInfo->setType( ActiveMQConstants::TRANSACTION_STATE_ROLLBACK );
+        this->connection->oneway( this->transactionInfo.get() );
 
-        // Dispose of the TransactionInfo
-        transactionInfo->close();
-        delete transactionInfo;
+        // Notify each registered Synchronization that we are committing this Transaction.
+        synchronized( &this->synchronizations ) {
 
-        // Start a new Transaction
-        transactionInfo = connection->getConnectionData()->
-            getConnector()->startTransaction( session->getSessionInfo() );
+            std::auto_ptr<decaf::util::Iterator<Synchronization*> > iter(
+                this->synchronizations.iterator() );
 
-        // Start Deliveries
-        session->start();
-
-        // Roolback the messages to the Session, since we have the lock on the
-        // rollbackLock, then no message will added to the transaction until we
-        // are done processing all the messages that we to re-deliver and the map
-        // is cleared.
-        synchronized( &rollbackLock ) {
+            while( iter->hasNext() ) {
+                iter->next()->beforeCommit();
+            }
+        }
 
-            RollbackMap::iterator itr = rollbackMap.begin();
+        // Clear all the Synchronizations.
+        this->clearSynchronizations();
 
-            for(; itr != rollbackMap.end(); ++itr) {
-                redeliverMessages( itr->first, itr->second );
-            }
+        // Start a new Transaction
+        this->startTransaction();
 
-            // Clear the map.  Ownership of the messages is now handed off
-            // to the rollback tasks.
-            rollbackMap.clear();
-        }
+        // Start Deliveries
+        this->session->start();
     }
     AMQ_CATCH_RETHROW( ActiveMQException )
     AMQ_CATCH_EXCEPTION_CONVERT( Exception, ActiveMQException )
@@ -300,38 +201,36 @@
 }
 
 ////////////////////////////////////////////////////////////////////////////////
-void ActiveMQTransaction::redeliverMessages( ActiveMQConsumer* consumer,
-                                             MessageList& messages )
-    throw ( activemq::exceptions::ActiveMQException ) {
+void ActiveMQTransactionContext::startTransaction() throw( exceptions::ActiveMQException ) {
 
-    try {
+    try{
 
-        MessageList::iterator itr = messages.begin();
+        this->transactionInfo.reset( new commands::TransactionInfo() );
 
-        for( ; itr != messages.end(); ++itr ) {
+        this->transactionInfo->setConnectionId(
+            this->connection->getConnectionId()->cloneDataStructure() );
+        this->transactionInfo->setTransactionId( createLocalTransactionId() );
+        this->transactionInfo->setType( ActiveMQConstants::TRANSACTION_STATE_BEGIN );
 
-            ActiveMQMessage* message = *itr;
-            message->setRedeliveryCount( message->getRedeliveryCount() + 1 );
+        this->connection->oneway( this->transactionInfo.get() );
+    }
+    AMQ_CATCH_RETHROW( ActiveMQException )
+    AMQ_CATCH_EXCEPTION_CONVERT( Exception, ActiveMQException )
+    AMQ_CATCHALL_THROW( ActiveMQException )
+}
 
-            if( message->getRedeliveryCount() >= maxRedeliveries ) {
+////////////////////////////////////////////////////////////////////////////////
+commands::TransactionId* ActiveMQTransactionContext::createLocalTransactionId()
+    throw( exceptions::ActiveMQException ) {
 
-                // Poison Ack the Message, we give up processing this one
-                connection->getConnectionData()->getConnector()->
-                    acknowledge(
-                        session->getSessionInfo(),
-                        consumer->getConsumerInfo(),
-                        dynamic_cast<Message*>( message ),
-                        Connector::ACK_TYPE_POISON );
+    try{
 
-                // Won't be re-delivered so it must be destroyed here.
-                delete message;
+        std::auto_ptr<commands::LocalTransactionId> id( new commands::LocalTransactionId() );
 
-                continue;
-            }
+        id->setConnectionId( this->connection->getConnectionId()->cloneDataStructure() );
+        id->setValue( this->connection->getNextTransactionId() );
 
-            DispatchData data( consumer->getConsumerInfo(), message );
-            session->dispatch( data );
-        }
+        return id.release();
     }
     AMQ_CATCH_RETHROW( ActiveMQException )
     AMQ_CATCH_EXCEPTION_CONVERT( Exception, ActiveMQException )
@@ -339,28 +238,24 @@
 }
 
 ////////////////////////////////////////////////////////////////////////////////
-void ActiveMQTransaction::ackMessages( ActiveMQConsumer* consumer,
-                                       MessageList& messages )
-    throw ( activemq::exceptions::ActiveMQException ) {
+void ActiveMQTransactionContext::clearSynchronizations()
+    throw( exceptions::ActiveMQException ) {
 
-    try {
 
-        std::list<const cms::Message*> cmsMessages;
+    try{
 
-        MessageList::iterator iter = messages.begin();
-        for( ; iter != messages.end(); ++iter ) {
-            cmsMessages.insert( cmsMessages.end(),
-                dynamic_cast<const cms::Message*>( *iter ) );
-        }
+        // delete each of the Synchronizations and then clear the Set.
+        synchronized( &this->synchronizations ) {
+
+            std::auto_ptr<decaf::util::Iterator<Synchronization*> > iter(
+                this->synchronizations.iterator() );
 
-        // Acknowledge the Messages let the connector do it in the most
-        // efficient manner it can for large message block acks.
-        connection->getConnectionData()->getConnector()->
-            acknowledge(
-                session->getSessionInfo(),
-                consumer->getConsumerInfo(),
-                cmsMessages,
-                Connector::ACK_TYPE_CONSUMED );
+            while( iter->hasNext() ) {
+                delete iter->next();
+            }
+
+            this->synchronizations.clear();
+        }
     }
     AMQ_CATCH_RETHROW( ActiveMQException )
     AMQ_CATCH_EXCEPTION_CONVERT( Exception, ActiveMQException )

Copied: activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQTransactionContext.h (from r732499, activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQTransaction.h)
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQTransactionContext.h?p2=activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQTransactionContext.h&p1=activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQTransaction.h&r1=732499&r2=736842&rev=736842&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQTransaction.h (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQTransactionContext.h Thu Jan 22 14:55:27 2009
@@ -14,30 +14,31 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-#ifndef _ACTIVEMQ_CORE_ACTIVEMQTRANSACTION_H_
-#define _ACTIVEMQ_CORE_ACTIVEMQTRANSACTION_H_
+#ifndef _ACTIVEMQ_CORE_ACTIVEMQTRANSACTIONCONTEXT_H_
+#define _ACTIVEMQ_CORE_ACTIVEMQTRANSACTIONCONTEXT_H_
 
-#include <map>
-#include <list>
+#include <memory>
 
 #include <cms/Message.h>
 #include <cms/CMSException.h>
 
 #include <activemq/util/Config.h>
 #include <activemq/exceptions/ActiveMQException.h>
-#include <activemq/connector/TransactionInfo.h>
+#include <activemq/commands/TransactionInfo.h>
+#include <activemq/commands/TransactionId.h>
+#include <activemq/core/Synchronization.h>
+
 #include <decaf/lang/exceptions/InvalidStateException.h>
 #include <decaf/lang/exceptions/IllegalArgumentException.h>
+#include <decaf/util/Set.h>
 #include <decaf/util/Properties.h>
 #include <decaf/util/concurrent/Mutex.h>
 
 namespace activemq{
 namespace core{
 
-    class ActiveMQConnection;
     class ActiveMQSession;
-    class ActiveMQMessage;
-    class ActiveMQConsumer;
+    class ActiveMQConnection;
 
     /**
      * Transaction Management class, hold messages that are to be redelivered
@@ -52,83 +53,50 @@
      *   Max number of times a message can be re-delivered, if the session is
      *   rolled back more than this many time, the message is dropped.
      */
-    class AMQCPP_API ActiveMQTransaction : public connector::TransactionInfo {
-    private:
-
-        // List type for holding messages
-        typedef std::list<ActiveMQMessage*> MessageList;
-
-        // Mapping of MessageListener Id's to Lists of Messages that are
-        // re-delivered on a Rollback
-        typedef std::map<ActiveMQConsumer*, MessageList> RollbackMap;
-
+    class AMQCPP_API ActiveMQTransactionContext {
     private:
 
-        // Connection this Transaction is associated with
-        ActiveMQConnection* connection;
-
         // Session this Transaction is associated with
         ActiveMQSession* session;
 
+        // The Connection that is the parent of the Session.
+        ActiveMQConnection* connection;
+
         // Transaction Info for the current Transaction
-        connector::TransactionInfo* transactionInfo;
+        std::auto_ptr<commands::TransactionInfo> transactionInfo;
 
-        // Map of ActiveMQMessageConsumer to Messages to Rollback
-        RollbackMap rollbackMap;
+        // List of Registered Synchronizations
+        decaf::util::Set<Synchronization*> synchronizations;
 
         // Lock object to protect the rollback Map
-        decaf::util::concurrent::Mutex rollbackLock;
+        decaf::util::concurrent::Mutex mutex;
 
-        // Max number of re-deliveries before we quit
-        int maxRedeliveries;
+        // Max number of redeliveries per message
+        unsigned int maxRedeliveries;
 
     public:
 
         /**
          * Constructor
-         * @param connection - Connection to the Broker
          * @param session - the session that contains this transaction
          * @param properties - configuration parameters for this object
          */
-        ActiveMQTransaction( ActiveMQConnection* connection,
-                             ActiveMQSession* session,
-                             const decaf::util::Properties& properties );
-
-        virtual ~ActiveMQTransaction();
-
-        /**
-         * Adds the Message as a part of the Transaction for the specified
-         * ActiveMQConsumer.
-         * @param message - Message to Transact
-         * @param consumer - Listener to redeliver to on Rollback
-         */
-        virtual void addToTransaction( ActiveMQMessage* message,
-                                       ActiveMQConsumer* consumer );
+        ActiveMQTransactionContext( ActiveMQSession* session,
+                                    const decaf::util::Properties& properties );
 
-        /**
-         * Adds the Message as a part of the Transaction for the specified
-         * ActiveMQConsumer.
-         * @param message - Message to Transact
-         * @param consumer - Listener to redeliver to on Rollback
-         */
-        virtual void addToTransaction( cms::Message* message,
-                                       ActiveMQConsumer* consumer );
+        virtual ~ActiveMQTransactionContext();
 
         /**
-         * Removes the ActiveMQConsumer and all of its transacted
-         * messages from the Transaction, this is usually only done when
-         * an ActiveMQConsumer is destroyed.
-         * @param listener - consumer who is to be removed.
+         * Adds a Synchronization to this Transaction.
+         * @param sync - The Synchronization instance to add.
          */
-        virtual void removeFromTransaction( ActiveMQConsumer* listener );
+        virtual void addSynchronization( Synchronization* sync );
 
         /**
-         * Removes the ActiveMQConsumer and all of its transacted
-         * messages from the Transaction, this is usually only done when
-         * an ActiveMQConsumer is destroyed.
-         * @param listener - consumer who is to be removed.
+         * Removes a Synchronization to this Transaction.
+         * @param sync - The Synchronization instance to add.
          */
-        virtual void removeFromTransaction( long long consumerId );
+        virtual void removeSynchronization( Synchronization* sync );
 
         /**
          * Commit the current Transaction
@@ -147,79 +115,37 @@
          * Transaction, returns NULL if no transaction is running
          * @return TransactionInfo
          */
-        virtual connector::TransactionInfo* getTransactionInfo(void) const {
-            return transactionInfo;
-        }
-
-    public:   // TransactionInfo Interface
-
-        /**
-         * Gets the Transaction Id
-         * @return integral value of Id
-         */
-        virtual long long getTransactionId() const {
-            return transactionInfo->getTransactionId();
-        }
-
-        /**
-         * Sets the Transaction Id
-         * @param id - integral value of Id
-         */
-        virtual void setTransactionId( long long id ) {
-            transactionInfo->setTransactionId( id );
+        virtual const commands::TransactionInfo* getTransactionInfo() const {
+            return transactionInfo.get();
         }
 
         /**
-         * Gets the Session Info that this transaction is attached too
-         * @return SessionnInfo pointer
+         * Get the Transaction Id object for the current
+         * Transaction, returns NULL if no transaction is running
+         * @return TransactionInfo
          */
-        virtual const connector::SessionInfo* getSessionInfo(void) const {
-            return transactionInfo->getSessionInfo();
-        }
+        virtual const commands::TransactionId* getTransactionId() const {
+            if( this->transactionInfo.get() == NULL ) {
+                return NULL;
+            }
 
-        /**
-         * Gets the Session Info that this transaction is attached too
-         * @param session - SessionnInfo pointer
-         */
-        virtual void setSessionInfo( const connector::SessionInfo* session ) {
-            transactionInfo->setSessionInfo( session );
+            return transactionInfo->getTransactionId();
         }
 
-    protected:
+    private:
 
-        /**
-         * Clean out all Messages from the Rollback Map, deleting the
-         * messages as it goes.  Destroys the Transaction Info object as
-         * well.
-         * @throw ActiveMQException
-         */
-        virtual void clearTransaction();
+        // Remove and Delete all Synchronizations from the Set of registered
+        // Synchronizations in this Transaction.
+        void clearSynchronizations() throw( exceptions::ActiveMQException );
 
-        /**
-         * Re-delivers each message that is in the Message List to the specified
-         * consumer, throwing messages away as they hit their max re-delivery
-         * count.
-         * @param consumer - the ActiveMQConsumer to re-deliver to
-         * @param messages - the list of messages that should be sent.
-         * @throws ActiveMQException if an error occurs.
-         */
-        virtual void redeliverMessages( ActiveMQConsumer* consumer,
-                                        MessageList& messages )
-            throw ( exceptions::ActiveMQException );
+        // Starts a new Transaction.
+        void startTransaction() throw( exceptions::ActiveMQException );
 
-        /**
-         * Acknowledges each message that is in the Message List to the specified
-         * consumer.
-         * @param consumer - the ActiveMQConsumer to acknowledge to
-         * @param messages - the list of messages that should be sent.
-         * @throws ActiveMQException if an error occurs.
-         */
-        virtual void ackMessages( ActiveMQConsumer* consumer,
-                                  MessageList& messages )
-            throw ( exceptions::ActiveMQException );
+        // Creates a new Local Transaction Id.
+        commands::TransactionId* createLocalTransactionId() throw( exceptions::ActiveMQException );
 
     };
 
 }}
 
-#endif /*_ACTIVEMQ_CORE_ACTIVEMQTRANSACTION_H_*/
+#endif /*_ACTIVEMQ_CORE_ACTIVEMQTRANSACTIONCONTEXT_H_*/

Modified: activemq/activemq-cpp/trunk/src/main/activemq/core/DispatchData.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/core/DispatchData.h?rev=736842&r1=736841&r2=736842&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/core/DispatchData.h (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/core/DispatchData.h Thu Jan 22 14:55:27 2009
@@ -15,62 +15,59 @@
  * limitations under the License.
  */
 
-#ifndef ACTIVEMQ_CORE_DISPATCHDATA_H_
-#define ACTIVEMQ_CORE_DISPATCHDATA_H_
+#ifndef _ACTIVEMQ_CORE_DISPATCHDATA_H_
+#define _ACTIVEMQ_CORE_DISPATCHDATA_H_
 
 #include <stdlib.h>
+#include <memory>
 #include <activemq/util/Config.h>
+#include <activemq/commands/ConsumerId.h>
 
 namespace activemq {
-    
-    namespace connector {
-        class ConsumerInfo;
-    }
-    
 namespace core {
 
     class ActiveMQMessage;
-    
+
     /**
      * Contains information about dispatching to a particular consumer.
      */
     class AMQCPP_API DispatchData {
     private:
-    
-        connector::ConsumerInfo* consumer;
+
+        commands::ConsumerId* consumerId;
         ActiveMQMessage* message;
-        
+
     public:
-    
+
         DispatchData(){
-            consumer = NULL;
+            consumerId = NULL;
             message = NULL;
         }
-        
-        DispatchData( connector::ConsumerInfo* consumer, ActiveMQMessage* message ) {
-            this->consumer = consumer;
+
+        DispatchData( commands::ConsumerId* consumer, ActiveMQMessage* message ) {
+            this->consumerId = consumer;
             this->message = message;
         }
-        
+
         DispatchData( const DispatchData& d ) {
             (*this) = d;
         }
-        
+
         DispatchData& operator =( const DispatchData& d ) {
-            this->consumer = d.consumer;
+            this->consumerId = d.consumerId;
             this->message = d.message;
             return *this;
         }
-        
-        connector::ConsumerInfo* getConsumer() {
-            return consumer;
+
+        commands::ConsumerId* getConsumerId() {
+            return consumerId;
         }
-        
+
         ActiveMQMessage* getMessage() {
             return message;
         }
-          
-    };    
+
+    };
 }}
 
-#endif /*ACTIVEMQ_CORE_DISPATCHDATA_H_*/
+#endif /*_ACTIVEMQ_CORE_DISPATCHDATA_H_*/

Added: activemq/activemq-cpp/trunk/src/main/activemq/core/Synchronization.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/core/Synchronization.h?rev=736842&view=auto
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/core/Synchronization.h (added)
+++ activemq/activemq-cpp/trunk/src/main/activemq/core/Synchronization.h Thu Jan 22 14:55:27 2009
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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_CORE_SYNCHRONIZATION_H_
+#define _ACTIVEMQ_CORE_SYNCHRONIZATION_H_
+
+#include <activemq/util/Config.h>
+#include <activemq/exceptions/ActiveMQException.h>
+
+namespace activemq {
+namespace core {
+
+    /**
+     * Transacted Object Synchronization, used to sync the events of a Transaction
+     * with the items in the Transaction.
+     */
+    class Synchronization {
+    public:
+
+        virtual ~Synchronization() {}
+
+        virtual void beforeCommit() throw( exceptions::ActiveMQException ) = 0;
+
+        virtual void afterCommit() throw( exceptions::ActiveMQException ) = 0;
+
+        virtual void afterRollback() throw( exceptions::ActiveMQException ) = 0;
+
+    };
+
+}}
+
+#endif /* _ACTIVEMQ_CORE_SYNCHRONIZATION_H_ */

Propchange: activemq/activemq-cpp/trunk/src/main/activemq/core/Synchronization.h
------------------------------------------------------------------------------
    svn:eol-style = native

Copied: activemq/activemq-cpp/trunk/src/main/activemq/exceptions/BrokerException.h (from r733509, activemq/activemq-cpp/trunk/src/main/activemq/wireformat/openwire/BrokerException.h)
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/exceptions/BrokerException.h?p2=activemq/activemq-cpp/trunk/src/main/activemq/exceptions/BrokerException.h&p1=activemq/activemq-cpp/trunk/src/main/activemq/wireformat/openwire/BrokerException.h&r1=733509&r2=736842&rev=736842&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/wireformat/openwire/BrokerException.h (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/exceptions/BrokerException.h Thu Jan 22 14:55:27 2009
@@ -15,37 +15,35 @@
  * limitations under the License.
  */
 
-#ifndef _ACTIVEMQ_WIREFORMAT_OPENWIRE_BROKEREXCEPTION_H_
-#define _ACTIVEMQ_WIREFORMAT_OPENWIRE_BROKEREXCEPTION_H_
+#ifndef _ACTIVEMQ_EXCEPTIONS_BROKEREXCEPTION_H_
+#define _ACTIVEMQ_EXCEPTIONS_BROKEREXCEPTION_H_
 
 #include <activemq/util/Config.h>
-#include <activemq/connector/openwire/OpenWireConnectorException.h>
+#include <activemq/exceptions/ActiveMQException.h>
 #include <activemq/commands/BrokerError.h>
 #include <sstream>
 
 namespace activemq{
-namespace wireformat{
-namespace openwire{
+namespace exceptions{
 
-    class AMQCPP_API BrokerException : public connector::openwire::OpenWireConnectorException {
+    class AMQCPP_API BrokerException : public exceptions::ActiveMQException {
     public:
 
         BrokerException() throw() {}
 
         BrokerException( const exceptions::ActiveMQException& ex ) throw()
-            : OpenWireConnectorException(){
+            : exceptions::ActiveMQException(){
             *( exceptions::ActiveMQException* )this = ex;
         }
 
         BrokerException( const BrokerException& ex ) throw()
-            : OpenWireConnectorException(){
+            : exceptions::ActiveMQException(){
             *( exceptions::ActiveMQException* )this = ex;
         }
 
-        BrokerException( const char* file,
-                                    const int lineNumber,
-                                    const char* msg, ... ) throw()
-          : OpenWireConnectorException() {
+        BrokerException( const char* file, const int lineNumber,
+                         const char* msg, ... ) throw()
+          : exceptions::ActiveMQException() {
 
             va_list vargs;
             va_start( vargs, msg );
@@ -55,10 +53,9 @@
             setMark( file, lineNumber );
         }
 
-        BrokerException( const char* file,
-                         const int lineNumber,
+        BrokerException( const char* file, const int lineNumber,
                          const commands::BrokerError* error ) throw()
-          : OpenWireConnectorException() {
+          : exceptions::ActiveMQException() {
 
             std::ostringstream ostream;
             ostream << "*** BEGIN SERVER-SIDE STACK TRACE ***" << std::endl;
@@ -91,6 +88,6 @@
         virtual ~BrokerException() throw() {}
     };
 
-}}}
+}}
 
-#endif /*_ACTIVEMQ_WIREFORMAT_OPENWIRE_BROKEREXCEPTION_H_*/
+#endif /*_ACTIVEMQ_EXCEPTIONS_BROKEREXCEPTION_H_*/

Propchange: activemq/activemq-cpp/trunk/src/main/activemq/exceptions/BrokerException.h
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: activemq/activemq-cpp/trunk/src/main/activemq/exceptions/BrokerException.h
------------------------------------------------------------------------------
    svn:mergeinfo = 

Modified: activemq/activemq-cpp/trunk/src/main/activemq/library/ActiveMQCPP.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/library/ActiveMQCPP.cpp?rev=736842&r1=736841&r2=736842&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/library/ActiveMQCPP.cpp (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/library/ActiveMQCPP.cpp Thu Jan 22 14:55:27 2009
@@ -21,13 +21,11 @@
 #include <activemq/wireformat/WireFormatRegistry.h>
 #include <activemq/transport/TransportRegistry.h>
 
-#include <activemq/wireformat/stomp/StompWireFormatFactory.h>
+//#include <activemq/wireformat/stomp/StompWireFormatFactory.h>
 #include <activemq/wireformat/openwire/OpenWireFormatFactory.h>
 
 #include <activemq/transport/mock/MockTransportFactory.h>
 #include <activemq/transport/tcp/TcpTransportFactory.h>
-#include <activemq/connector/stomp/StompConnectorFactory.h>
-#include <activemq/connector/openwire/OpenWireConnectorFactory.h>
 
 using namespace activemq;
 using namespace activemq::library;
@@ -42,9 +40,6 @@
     // Initialize the Decaf Library by requesting its runtime.
     decaf::lang::Runtime::getRuntime();
 
-    connector::stomp::StompConnectorFactory::getInstance();
-    connector::openwire::OpenWireConnectorFactory::getInstance();
-
     // Register all WireFormats
     ActiveMQCPP::registerWireFormats();
 
@@ -65,8 +60,8 @@
 
     WireFormatRegistry::getInstance().registerFactory(
         "openwire", new wireformat::openwire::OpenWireFormatFactory() );
-    WireFormatRegistry::getInstance().registerFactory(
-        "stomp", new wireformat::stomp::StompWireFormatFactory() );
+//    WireFormatRegistry::getInstance().registerFactory(
+//        "stomp", new wireformat::stomp::StompWireFormatFactory() );
 
 }
 

Modified: activemq/activemq-cpp/trunk/src/main/activemq/transport/AbstractTransportFactory.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/transport/AbstractTransportFactory.cpp?rev=736842&r1=736841&r2=736842&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/transport/AbstractTransportFactory.cpp (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/transport/AbstractTransportFactory.cpp Thu Jan 22 14:55:27 2009
@@ -52,11 +52,6 @@
         // Create the initial Transport, then wrap it in the normal Filters
         Transport* transport = doCreateComposite( location, wireFormat, properties );
 
-        // If there is a negotiator need then we create and wrap here.
-        if( wireFormat->hasNegotiator() ) {
-            transport = wireFormat->createNegotiator( transport );
-        }
-
         // Create the Transport for response correlator
         transport = new ResponseCorrelator( transport );
 
@@ -66,6 +61,11 @@
             transport = new LoggingTransport( transport );
         }
 
+        // If there is a negotiator need then we create and wrap here.
+        if( wireFormat->hasNegotiator() ) {
+            transport = wireFormat->createNegotiator( transport );
+        }
+
         return transport;
     }
     AMQ_CATCH_RETHROW( ActiveMQException )

Modified: activemq/activemq-cpp/trunk/src/main/activemq/transport/IOTransport.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/transport/IOTransport.cpp?rev=736842&r1=736841&r2=736842&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/transport/IOTransport.cpp (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/transport/IOTransport.cpp Thu Jan 22 14:55:27 2009
@@ -22,6 +22,7 @@
 #include <activemq/wireformat/WireFormat.h>
 #include <activemq/exceptions/ActiveMQException.h>
 #include <activemq/util/Config.h>
+#include <typeinfo>
 
 using namespace activemq;
 using namespace activemq::transport;
@@ -66,6 +67,39 @@
 }
 
 ////////////////////////////////////////////////////////////////////////////////
+void IOTransport::fire( decaf::lang::Exception& ex ){
+
+    if( this->exceptionListener != NULL && !this->closed ){
+
+        try{
+            this->exceptionListener->onTransportException( this, ex );
+        }catch( ... ){}
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void IOTransport::fire( Command* command ){
+
+    try{
+        // Since the listener is responsible for freeing the memory,
+        // if there is no listener - free the command here.  Also if
+        // we have been closed then we don't deliver any messages that
+        // might have sneaked in while we where closing.
+        if( this->listener == NULL || this->closed == true ){
+            delete command;
+            return;
+        }
+
+        this->listener->onCommand( command );
+
+    }catch( ... ){
+        try{
+            delete command;
+        } catch( ... ) {}
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
 void IOTransport::oneway( Command* command )
     throw( CommandIOException, decaf::lang::exceptions::UnsupportedOperationException ) {
 
@@ -100,6 +134,7 @@
         synchronized( outputStream ){
             // Write the command to the output stream.
             this->wireFormat->marshal( command, this->outputStream );
+            this->outputStream->flush();
         }
     }
     AMQ_CATCH_RETHROW( CommandIOException )

Modified: activemq/activemq-cpp/trunk/src/main/activemq/transport/IOTransport.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/transport/IOTransport.h?rev=736842&r1=736841&r2=736842&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/transport/IOTransport.h (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/transport/IOTransport.h Thu Jan 22 14:55:27 2009
@@ -97,40 +97,12 @@
          * Notify the exception listener
          * @param ex the exception to send
          */
-        void fire( decaf::lang::Exception& ex ){
-
-            if( exceptionListener != NULL ){
-
-                try{
-                    exceptionListener->onTransportException( this, ex );
-                }catch( ... ){}
-            }
-        }
-
+        void fire( decaf::lang::Exception& ex );
         /**
          * Notify the command listener.
          * @param command the command the send
          */
-        void fire( Command* command ){
-
-            try{
-                // Since the listener is responsible for freeing the memory,
-                // if there is no listener - free the command here.  Also if
-                // we have been closed then we don't deliver any messages that
-                // might have snuck in while we where closing.
-                if( listener == NULL || closed == true ){
-                    delete command;
-                    return;
-                }
-
-                listener->onCommand( command );
-
-            }catch( ... ){
-                try{
-                    delete command;
-                } catch( ... ) {}
-            }
-        }
+        void fire( Command* command );
 
     public:
 

Modified: activemq/activemq-cpp/trunk/src/main/activemq/transport/mock/MockTransportFactory.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/transport/mock/MockTransportFactory.cpp?rev=736842&r1=736841&r2=736842&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/transport/mock/MockTransportFactory.cpp (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/transport/mock/MockTransportFactory.cpp Thu Jan 22 14:55:27 2009
@@ -16,7 +16,7 @@
  */
 
 #include <activemq/transport/mock/MockTransportFactory.h>
-#include <activemq/wireformat/stomp/StompResponseBuilder.h>
+//#include <activemq/wireformat/stomp/StompResponseBuilder.h>
 #include <activemq/wireformat/openwire/OpenWireResponseBuilder.h>
 #include <activemq/transport/Transport.h>
 #include <activemq/transport/mock/MockTransport.h>
@@ -43,7 +43,7 @@
         MockTransport::ResponseBuilder* builder = NULL;
 
         if( wireFormat == "stomp" ) {
-            builder = new wireformat::stomp::StompResponseBuilder();
+//            builder = new wireformat::stomp::StompResponseBuilder();
         } else if( wireFormat == "openwire" ) {
             builder = new wireformat::openwire::OpenWireResponseBuilder();
         }

Modified: activemq/activemq-cpp/trunk/src/main/activemq/transport/tcp/TcpTransport.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/transport/tcp/TcpTransport.cpp?rev=736842&r1=736841&r2=736842&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/transport/tcp/TcpTransport.cpp (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/transport/tcp/TcpTransport.cpp Thu Jan 22 14:55:27 2009
@@ -37,22 +37,16 @@
 TcpTransport::TcpTransport( const decaf::net::URI& uri,
                             const decaf::util::Properties& properties,
                             Transport* next, const bool own )
-:   TransportFilter( next, own ),
-    socket( NULL ),
-    dataInputStream( NULL ),
-    dataOutputStream( NULL )
-{
+:   TransportFilter( next, own ) {
+
     this->initialize( uri, properties );
 }
 
 ////////////////////////////////////////////////////////////////////////////////
 TcpTransport::TcpTransport( const decaf::util::Properties& properties,
                             Transport* next, const bool own )
-:   TransportFilter( next, own ),
-    socket( NULL ),
-    dataInputStream( NULL ),
-    dataOutputStream( NULL )
-{
+:   TransportFilter( next, own ) {
+
     if( !properties.hasProperty( "transport.uri" ) ) {
         throw ActiveMQException(
             __FILE__, __LINE__,
@@ -67,21 +61,7 @@
 TcpTransport::~TcpTransport() {
 
     try {
-
-        try{
-            close();
-        }
-        AMQ_CATCH_NOTHROW( ActiveMQException )
-        AMQ_CATCH_NOTHROW( Exception )
-        AMQ_CATCHALL_NOTHROW()
-
-        if( socket != NULL ) {
-            delete socket;
-            socket = NULL;
-        }
-
-        delete this->dataInputStream;
-        delete this->dataOutputStream;
+        close();
     }
     AMQ_CATCH_NOTHROW( ActiveMQException )
     AMQ_CATCH_NOTHROW( Exception )
@@ -94,7 +74,7 @@
     try {
 
         // Close the socket.
-        if( socket != NULL ) {
+        if( socket.get() != NULL ) {
             socket->close();
         }
 
@@ -115,7 +95,7 @@
         // Create the IO device we will be communicating over the
         // wire with.  This may need to change if we add more types
         // of sockets, such as SSL.
-        socket = SocketFactory::createSocket( uri.getAuthority(), properties );
+        socket.reset( SocketFactory::createSocket( uri.getAuthority(), properties ) );
 
         // Cast it to an IO transport so we can wire up the socket
         // input and output streams.
@@ -151,12 +131,12 @@
         // Now wrap the Buffered Streams with DataInput based streams.  We own
         // the Source streams, all the streams in the chain that we own are
         // destroyed when these are.
-        this->dataInputStream = new DataInputStream( inputStream, true );
-        this->dataOutputStream = new DataOutputStream( outputStream, true );
+        this->dataInputStream.reset( new DataInputStream( inputStream, true ) );
+        this->dataOutputStream.reset( new DataOutputStream( outputStream, true ) );
 
         // Give the IOTransport the streams.
-        ioTransport->setInputStream( dataInputStream );
-        ioTransport->setOutputStream( dataOutputStream );
+        ioTransport->setInputStream( dataInputStream.get() );
+        ioTransport->setOutputStream( dataOutputStream.get() );
     }
     AMQ_CATCH_RETHROW( ActiveMQException )
     AMQ_CATCH_EXCEPTION_CONVERT( Exception, ActiveMQException )

Modified: activemq/activemq-cpp/trunk/src/main/activemq/transport/tcp/TcpTransport.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/transport/tcp/TcpTransport.h?rev=736842&r1=736841&r2=736842&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/transport/tcp/TcpTransport.h (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/transport/tcp/TcpTransport.h Thu Jan 22 14:55:27 2009
@@ -29,6 +29,7 @@
 #include <decaf/io/BufferedOutputStream.h>
 #include <decaf/io/DataInputStream.h>
 #include <decaf/io/DataOutputStream.h>
+#include <memory>
 
 namespace activemq{
 namespace transport{
@@ -46,17 +47,17 @@
         /**
          * Socket that this Transport Communicates with
          */
-        decaf::net::Socket* socket;
+        std::auto_ptr<decaf::net::Socket> socket;
 
         /**
          * Input Stream for Reading in Messages
          */
-        decaf::io::DataInputStream* dataInputStream;
+        std::auto_ptr<decaf::io::DataInputStream> dataInputStream;
 
         /**
          * Output Stream for Writing out Messages.
          */
-        decaf::io::DataOutputStream* dataOutputStream;
+        std::auto_ptr<decaf::io::DataOutputStream> dataOutputStream;
 
     public:
 

Modified: activemq/activemq-cpp/trunk/src/main/activemq/util/MemoryUsage.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/util/MemoryUsage.h?rev=736842&r1=736841&r2=736842&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/util/MemoryUsage.h (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/util/MemoryUsage.h Thu Jan 22 14:55:27 2009
@@ -19,12 +19,13 @@
 #define _ACTIVEMQ_UTIL_MEMORYUSAGE_H_
 
 #include <activemq/util/Config.h>
+#include <activemq/util/Usage.h>
 #include <decaf/util/concurrent/Mutex.h>
 
 namespace activemq {
 namespace util {
 
-    class AMQCPP_API MemoryUsage {
+    class AMQCPP_API MemoryUsage : public Usage {
     private:
 
         // The physical limit of memory usage this object allows.
@@ -58,7 +59,7 @@
 
         /**
          * Waits for more space to be returned to this Usage Manager, times out
-         * when the given timespan in milliseconds elapses.
+         * when the given time span in milliseconds elapses.
          * @param timeout The time to wait for more space.
          */
         virtual void waitForSpace( unsigned int timeout );

Added: activemq/activemq-cpp/trunk/src/main/activemq/util/Usage.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/util/Usage.h?rev=736842&view=auto
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/util/Usage.h (added)
+++ activemq/activemq-cpp/trunk/src/main/activemq/util/Usage.h Thu Jan 22 14:55:27 2009
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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_UTIL_USAGE_H_
+#define _ACTIVEMQ_UTIL_USAGE_H_
+
+#include <activemq/util/Config.h>
+
+namespace activemq {
+namespace util {
+
+    class AMQCPP_API Usage {
+    public:
+
+        virtual ~Usage() {}
+
+        /**
+         * Waits forever for more space to be returned to this Usage Manager.
+         */
+        virtual void waitForSpace() = 0;
+
+        /**
+         * Waits for more space to be returned to this Usage Manager, times out
+         * when the given time span in milliseconds elapses.
+         * @param timeout The time to wait for more space.
+         */
+        virtual void waitForSpace( unsigned int timeout ) = 0;
+
+        /**
+         * Tries to increase the usage by value amount but blocks if this object is
+         * currently full.
+         * @param value Amount of usage in bytes to add.
+         */
+        virtual void enqueueUsage( unsigned long long value ) = 0;
+
+        /**
+         * Increases the usage by the value amount
+         * @param value Amount of usage to add.
+         */
+        virtual void increaseUsage( unsigned long long value ) = 0;
+
+        /**
+         * Decreases the usage by the value amount.
+         * @param value Amount of space to return to the pool
+         */
+        virtual void decreaseUsage( unsigned long long value ) = 0;
+
+        /**
+         * Returns true if this Usage instance is full, i.e. Usage >= 100%
+         * @return true if Usage is at the Full point.
+         */
+        virtual bool isFull() const = 0;
+
+    };
+
+}}
+
+#endif /* _ACTIVEMQ_UTIL_USAGE_H_ */

Propchange: activemq/activemq-cpp/trunk/src/main/activemq/util/Usage.h
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: activemq/activemq-cpp/trunk/src/main/activemq/wireformat/openwire/OpenWireFormat.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/wireformat/openwire/OpenWireFormat.cpp?rev=736842&r1=736841&r2=736842&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/wireformat/openwire/OpenWireFormat.cpp (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/wireformat/openwire/OpenWireFormat.cpp Thu Jan 22 14:55:27 2009
@@ -57,10 +57,9 @@
 
     // Copy config data
     this->properties.copy( &properties );
-    this->preferedWireFormatInfo = NULL;
 
     // Fill in that DataStreamMarshallers collection
-    dataMarshallers.resize( 256 );
+    this->dataMarshallers.resize( 256 );
 
     // Generate an ID
     this->id = UUID::randomUUID().toString();
@@ -73,7 +72,7 @@
     this->sizePrefixDisabled = false;
 
     // Set to Default as lowest common denominator, then we will try
-    // and move up to the prefered when the wireformat is negotiated.
+    // and move up to the preferred when the wireformat is negotiated.
     this->setVersion( DEFAULT_VERSION );
 }
 
@@ -81,7 +80,6 @@
 OpenWireFormat::~OpenWireFormat() {
     try {
         this->destroyMarshalers();
-        delete preferedWireFormatInfo;
     }
     AMQ_CATCH_NOTHROW( ActiveMQException )
     AMQ_CATCHALL_NOTHROW()
@@ -153,8 +151,7 @@
 void OpenWireFormat::setPreferedWireFormatInfo(
     commands::WireFormatInfo* info ) throw ( IllegalStateException ) {
 
-    delete preferedWireFormatInfo;
-    this->preferedWireFormatInfo = info;
+    this->preferedWireFormatInfo.reset( info );
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -519,7 +516,7 @@
 void OpenWireFormat::renegotiateWireFormat( WireFormatInfo* info )
     throw ( IllegalStateException ) {
 
-    if( preferedWireFormatInfo == NULL ) {
+    if( preferedWireFormatInfo.get() == NULL ) {
         throw IllegalStateException(
             __FILE__, __LINE__,
             "OpenWireFormat::renegotiateWireFormat - "

Modified: activemq/activemq-cpp/trunk/src/main/activemq/wireformat/openwire/OpenWireFormat.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/wireformat/openwire/OpenWireFormat.h?rev=736842&r1=736841&r2=736842&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/wireformat/openwire/OpenWireFormat.h (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/wireformat/openwire/OpenWireFormat.h Thu Jan 22 14:55:27 2009
@@ -26,6 +26,7 @@
 #include <decaf/util/Properties.h>
 #include <decaf/lang/exceptions/IllegalStateException.h>
 #include <decaf/lang/exceptions/IllegalArgumentException.h>
+#include <memory>
 
 namespace activemq{
 namespace wireformat{
@@ -64,8 +65,8 @@
             throw( decaf::lang::exceptions::UnsupportedOperationException );
 
         /**
-         * Allows an external source to add marshallers to this object for
-         * types that may be marshalled or unmarhsalled.
+         * Allows an external source to add marshalers to this object for
+         * types that may be marshaled or unmarhsaled.
          * @param marshaller - the Marshaller to add to the collection.
          */
         void addMarshaller( marshal::DataStreamMarshaller* marshaller );
@@ -81,7 +82,7 @@
             throw ( decaf::io::IOException );
 
         /**
-         * Packet based un-marshaling
+         * Stream based un-marshaling
          * @param dis - the input stream to read the command from.
          * @returns the newly marshaled Command, caller owns the pointer
          * @throws IOException
@@ -90,7 +91,7 @@
             throw ( decaf::io::IOException );
 
         /**
-         * Utility method for Tight Marshalling the given object to the boolean
+         * Utility method for Tight Marshaling the given object to the boolean
          * stream passed.
          * @param object - The DataStructure to marshal
          * @param bs - the BooleanStream to write to
@@ -103,7 +104,7 @@
         /**
          * Utility method that will Tight marshall some internally nested object
          * that implements the DataStructure interface.  Writes the data to the
-         * Data Ouput Stream provided.
+         * Data Output Stream provided.
          * @param o - DataStructure object
          * @param ds - DataOuputStream for writing
          * @param bs - BooleanStream
@@ -142,7 +143,7 @@
 
         /**
          * Utility method to loosely Marshal an object that is derived from the
-         * DataStrucutre interface.  The marshalled data is written to the
+         * DataStrucutre interface.  The marshaled data is written to the
          * passed in DataOutputStream.
          * @param o - DataStructure derived Object to Marshal
          * @param dataOut - DataOutputStream to write the data to
@@ -153,7 +154,7 @@
                                            throw ( decaf::io::IOException );
 
         /**
-         * Called to renegotiate the settings for the WireFormatInfo, these
+         * Called to re-negotiate the settings for the WireFormatInfo, these
          * determine how the client and broker communicate.
          * @param info - The new Wireformat Info settings
          * @throws IllegalStateException is the params can't be negotiated.
@@ -162,18 +163,18 @@
             throw ( decaf::lang::exceptions::IllegalStateException );
 
         /**
-         * Configures this object using the provieded WireformatInfo object
+         * Configures this object using the provided WireformatInfo object
          * @param info - a WireFormatInfo object, takes ownership.
          */
         virtual void setPreferedWireFormatInfo( commands::WireFormatInfo* info )
             throw ( decaf::lang::exceptions::IllegalStateException );
 
         /**
-         * Gets the Preferend WireFormatInfo object that this class holds
-         * @return pointer to a prefered WireFormatInfo object
+         * Gets the Preferred WireFormatInfo object that this class holds
+         * @return pointer to a preferred WireFormatInfo object
          */
         virtual commands::WireFormatInfo* getPreferedWireFormatInfo() const {
-            return this->preferedWireFormatInfo;
+            return this->preferedWireFormatInfo.get();
         }
 
         /**
@@ -304,10 +305,10 @@
         // This object config data
         decaf::util::Properties properties;
 
-        // Prefered WireFormatInfo
-        commands::WireFormatInfo* preferedWireFormatInfo;
+        // Preferred WireFormatInfo
+        std::auto_ptr<commands::WireFormatInfo> preferedWireFormatInfo;
 
-        // Marshallers
+        // Marshalers
         std::vector< marshal::DataStreamMarshaller* > dataMarshallers;
 
         // Uniquely Generated ID, initialize in the Ctor

Modified: activemq/activemq-cpp/trunk/src/main/activemq/wireformat/openwire/OpenWireResponseBuilder.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/wireformat/openwire/OpenWireResponseBuilder.cpp?rev=736842&r1=736841&r2=736842&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/wireformat/openwire/OpenWireResponseBuilder.cpp (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/wireformat/openwire/OpenWireResponseBuilder.cpp Thu Jan 22 14:55:27 2009
@@ -31,6 +31,7 @@
 #include <activemq/commands/ProducerInfo.h>
 #include <activemq/commands/Response.h>
 #include <activemq/commands/RemoveSubscriptionInfo.h>
+#include <activemq/commands/RemoveInfo.h>
 #include <activemq/commands/SessionInfo.h>
 #include <activemq/commands/ShutdownInfo.h>
 #include <activemq/commands/WireFormatInfo.h>
@@ -56,6 +57,7 @@
         typeid( *command ) == typeid( commands::DestinationInfo ) ||
         typeid( *command ) == typeid( commands::ProducerInfo ) ||
         typeid( *command ) == typeid( commands::RemoveSubscriptionInfo ) ||
+        typeid( *command ) == typeid( commands::RemoveInfo ) ||
         typeid( *command ) == typeid( commands::SessionInfo ) ) {
 
         // These Commands just require a response that matches their command IDs

Modified: activemq/activemq-cpp/trunk/src/test-integration/Makefile.am
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/test-integration/Makefile.am?rev=736842&r1=736841&r2=736842&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/test-integration/Makefile.am (original)
+++ activemq/activemq-cpp/trunk/src/test-integration/Makefile.am Thu Jan 22 14:55:27 2009
@@ -28,15 +28,6 @@
   activemq/test/TransactionTest.cpp \
   activemq/test/SlowListenerTest.cpp \
   activemq/test/JmsMessageGroupsTest.cpp \
-  activemq/test/stomp/StompAsyncSenderTest.cpp \
-  activemq/test/stomp/StompCmsTemplateTest.cpp \
-  activemq/test/stomp/StompDurableTest.cpp \
-  activemq/test/stomp/StompExpirationTest.cpp \
-  activemq/test/stomp/StompSimpleRollbackTest.cpp \
-  activemq/test/stomp/StompSimpleTest.cpp \
-  activemq/test/stomp/StompTransactionTest.cpp \
-  activemq/test/stomp/StompSlowListenerTest.cpp \
-  activemq/test/stomp/StompJmsMessageGroupsTest.cpp \
   activemq/test/openwire/OpenwireAsyncSenderTest.cpp \
   activemq/test/openwire/OpenwireCmsTemplateTest.cpp \
   activemq/test/openwire/OpenwireDurableTest.cpp \
@@ -50,6 +41,16 @@
   TestRegistry.cpp \
   main.cpp
 
+#  activemq/test/stomp/StompAsyncSenderTest.cpp \
+  activemq/test/stomp/StompCmsTemplateTest.cpp \
+  activemq/test/stomp/StompDurableTest.cpp \
+  activemq/test/stomp/StompExpirationTest.cpp \
+  activemq/test/stomp/StompSimpleRollbackTest.cpp \
+  activemq/test/stomp/StompSimpleTest.cpp \
+  activemq/test/stomp/StompTransactionTest.cpp \
+  activemq/test/stomp/StompSlowListenerTest.cpp \
+  activemq/test/stomp/StompJmsMessageGroupsTest.cpp
+  
 ## Compile this as part of make check
 check_PROGRAMS = activemq-test-integration
 

Modified: activemq/activemq-cpp/trunk/src/test-integration/TestRegistry.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/test-integration/TestRegistry.cpp?rev=736842&r1=736841&r2=736842&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/test-integration/TestRegistry.cpp (original)
+++ activemq/activemq-cpp/trunk/src/test-integration/TestRegistry.cpp Thu Jan 22 14:55:27 2009
@@ -26,15 +26,15 @@
 #include "activemq/test/openwire/OpenwireSlowListenerTest.h"
 #include "activemq/test/openwire/OpenwireJmsMessageGroupsTest.h"
 
-#include "activemq/test/stomp/StompAsyncSenderTest.h"
-#include "activemq/test/stomp/StompCmsTemplateTest.h"
-#include "activemq/test/stomp/StompDurableTest.h"
-#include "activemq/test/stomp/StompExpirationTest.h"
-#include "activemq/test/stomp/StompSimpleRollbackTest.h"
-#include "activemq/test/stomp/StompSimpleTest.h"
-#include "activemq/test/stomp/StompSlowListenerTest.h"
-#include "activemq/test/stomp/StompTransactionTest.h"
-#include "activemq/test/stomp/StompJmsMessageGroupsTest.h"
+//#include "activemq/test/stomp/StompAsyncSenderTest.h"
+//#include "activemq/test/stomp/StompCmsTemplateTest.h"
+//#include "activemq/test/stomp/StompDurableTest.h"
+//#include "activemq/test/stomp/StompExpirationTest.h"
+//#include "activemq/test/stomp/StompSimpleRollbackTest.h"
+//#include "activemq/test/stomp/StompSimpleTest.h"
+//#include "activemq/test/stomp/StompSlowListenerTest.h"
+//#include "activemq/test/stomp/StompTransactionTest.h"
+//#include "activemq/test/stomp/StompJmsMessageGroupsTest.h"
 
 // Openwire Tests
 CPPUNIT_TEST_SUITE_REGISTRATION( activemq::test::openwire::OpenwireAsyncSenderTest );
@@ -49,12 +49,12 @@
 CPPUNIT_TEST_SUITE_REGISTRATION( activemq::test::openwire::OpenwireJmsMessageGroupsTest );
 
 // Stomp Tests
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::test::stomp::StompAsyncSenderTest );
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::test::stomp::StompCmsTemplateTest );
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::test::stomp::StompDurableTest );
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::test::stomp::StompExpirationTest );
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::test::stomp::StompSimpleRollbackTest );
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::test::stomp::StompSimpleTest );
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::test::stomp::StompTransactionTest );
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::test::stomp::StompSlowListenerTest );
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::test::stomp::StompJmsMessageGroupsTest );
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::test::stomp::StompAsyncSenderTest );
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::test::stomp::StompCmsTemplateTest );
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::test::stomp::StompDurableTest );
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::test::stomp::StompExpirationTest );
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::test::stomp::StompSimpleRollbackTest );
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::test::stomp::StompSimpleTest );
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::test::stomp::StompTransactionTest );
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::test::stomp::StompSlowListenerTest );
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::test::stomp::StompJmsMessageGroupsTest );

Modified: activemq/activemq-cpp/trunk/src/test-integration/activemq/test/openwire/OpenwireAsyncSenderTest.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/test-integration/activemq/test/openwire/OpenwireAsyncSenderTest.cpp?rev=736842&r1=736841&r2=736842&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/test-integration/activemq/test/openwire/OpenwireAsyncSenderTest.cpp (original)
+++ activemq/activemq-cpp/trunk/src/test-integration/activemq/test/openwire/OpenwireAsyncSenderTest.cpp Thu Jan 22 14:55:27 2009
@@ -17,7 +17,6 @@
 
 #include "OpenwireAsyncSenderTest.h"
 
-#include <activemq/connector/openwire/OpenWireConnector.h>
 #include <activemq/core/ActiveMQConnectionFactory.h>
 #include <activemq/core/ActiveMQConnection.h>
 
@@ -27,8 +26,6 @@
 using namespace activemq::test;
 using namespace activemq::test::openwire;
 using namespace activemq::core;
-using namespace activemq::connector;
-using namespace activemq::connector::openwire;
 using namespace activemq::util;
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -52,12 +49,8 @@
             dynamic_cast<ActiveMQConnection*>( connection.get() );
         CPPUNIT_ASSERT( amqConnection != NULL );
 
-        OpenWireConnector* connector =
-            dynamic_cast<OpenWireConnector*>( amqConnection->getConnectionData()->getConnector() );
-        CPPUNIT_ASSERT( amqConnection != NULL );
-
-        CPPUNIT_ASSERT( connector->isUseAsyncSend() );
-        CPPUNIT_ASSERT( !connector->isAlwaysSyncSend() );
+        CPPUNIT_ASSERT( amqConnection->isUseAsyncSend() );
+        CPPUNIT_ASSERT( !amqConnection->isAlwaysSyncSend() );
 
         connection->start();
         connection->stop();

Modified: activemq/activemq-cpp/trunk/src/test/Makefile.am
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/test/Makefile.am?rev=736842&r1=736841&r2=736842&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/test/Makefile.am (original)
+++ activemq/activemq-cpp/trunk/src/test/Makefile.am Thu Jan 22 14:55:27 2009
@@ -16,28 +16,6 @@
 # ---------------------------------------------------------------------------
 
 cc_sources = \
-  activemq/connector/ConnectorFactoryMapRegistrarTest.cpp \
-  activemq/connector/ConnectorFactoryMapTest.cpp \
-  activemq/connector/stomp/commands/AbortCommandTest.cpp \
-  activemq/connector/stomp/commands/AckCommandTest.cpp \
-  activemq/connector/stomp/commands/BeginCommandTest.cpp \
-  activemq/connector/stomp/commands/BytesMessageCommandTest.cpp \
-  activemq/connector/stomp/commands/CommandConstantsTest.cpp \
-  activemq/connector/stomp/commands/CommitCommandTest.cpp \
-  activemq/connector/stomp/commands/ConnectCommandTest.cpp \
-  activemq/connector/stomp/commands/ConnectedCommandTest.cpp \
-  activemq/connector/stomp/commands/DisconnectCommandTest.cpp \
-  activemq/connector/stomp/commands/ErrorCommandTest.cpp \
-  activemq/connector/stomp/commands/MessageCommandTest.cpp \
-  activemq/connector/stomp/commands/ReceiptCommandTest.cpp \
-  activemq/connector/stomp/commands/SubscribeCommandTest.cpp \
-  activemq/connector/stomp/commands/TextMessageCommandTest.cpp \
-  activemq/connector/stomp/commands/UnsubscribeCommandTest.cpp \
-  activemq/connector/stomp/marshal/MarshalerTest.cpp \
-  activemq/connector/stomp/StompConnectorTest.cpp \
-  activemq/connector/stomp/StompFrameTest.cpp \
-  activemq/connector/stomp/StompDestinationTest.cpp \
-  activemq/connector/stomp/StompSessionManagerTest.cpp \
   activemq/commands/ActiveMQBytesMessageTest.cpp \
   activemq/commands/ActiveMQMapMessageTest.cpp \
   activemq/commands/ActiveMQMessageTest.cpp \
@@ -134,28 +112,6 @@
   main.cpp
 
 h_sources = \
-  activemq/connector/ConnectorFactoryMapRegistrarTest.h \
-  activemq/connector/ConnectorFactoryMapTest.h \
-  activemq/connector/stomp/commands/AbortCommandTest.h \
-  activemq/connector/stomp/commands/AckCommandTest.h \
-  activemq/connector/stomp/commands/BeginCommandTest.h \
-  activemq/connector/stomp/commands/BytesMessageCommandTest.h \
-  activemq/connector/stomp/commands/CommandConstantsTest.h \
-  activemq/connector/stomp/commands/CommitCommandTest.h \
-  activemq/connector/stomp/commands/ConnectCommandTest.h \
-  activemq/connector/stomp/commands/ConnectedCommandTest.h \
-  activemq/connector/stomp/commands/DisconnectCommandTest.h \
-  activemq/connector/stomp/commands/ErrorCommandTest.h \
-  activemq/connector/stomp/commands/MessageCommandTest.h \
-  activemq/connector/stomp/commands/ReceiptCommandTest.h \
-  activemq/connector/stomp/commands/SubscribeCommandTest.h \
-  activemq/connector/stomp/commands/TextMessageCommandTest.h \
-  activemq/connector/stomp/commands/UnsubscribeCommandTest.h \
-  activemq/connector/stomp/marshal/MarshalerTest.h \
-  activemq/connector/stomp/StompConnectorTest.h \
-  activemq/connector/stomp/StompFrameTest.h \
-  activemq/connector/stomp/StompDestinationTest.h \
-  activemq/connector/stomp/StompSessionManagerTest.h \
   activemq/commands/ActiveMQBytesMessageTest.h \
   activemq/commands/ActiveMQMapMessageTest.h \
   activemq/commands/ActiveMQMessageTest.h \



Mime
View raw message