You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ta...@apache.org on 2007/06/26 17:10:19 UTC

svn commit: r550825 - in /activemq/activemq-cpp/trunk/src/main/activemq: connector/openwire/OpenWireResponseBuilder.h connector/stomp/StompResponseBuilder.cpp connector/stomp/StompResponseBuilder.h transport/MockTransport.h

Author: tabish
Date: Tue Jun 26 08:10:18 2007
New Revision: 550825

URL: http://svn.apache.org/viewvc?view=rev&rev=550825
Log:
https://issues.apache.org/activemq/browse/AMQCPP-130

Modified:
    activemq/activemq-cpp/trunk/src/main/activemq/connector/openwire/OpenWireResponseBuilder.h
    activemq/activemq-cpp/trunk/src/main/activemq/connector/stomp/StompResponseBuilder.cpp
    activemq/activemq-cpp/trunk/src/main/activemq/connector/stomp/StompResponseBuilder.h
    activemq/activemq-cpp/trunk/src/main/activemq/transport/MockTransport.h

Modified: activemq/activemq-cpp/trunk/src/main/activemq/connector/openwire/OpenWireResponseBuilder.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/connector/openwire/OpenWireResponseBuilder.h?view=diff&rev=550825&r1=550824&r2=550825
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/connector/openwire/OpenWireResponseBuilder.h (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/connector/openwire/OpenWireResponseBuilder.h Tue Jun 26 08:10:18 2007
@@ -33,10 +33,6 @@
         virtual transport::Response* buildResponse( const transport::Command* command );
         virtual void buildIncomingCommands(
             const transport::Command* command, util::Queue<transport::Command*>& queue );
-        virtual transport::Command* buildDisptachedMessage(
-            const cms::Message* message AMQCPP_UNUSED, long long consumerId AMQCPP_UNUSED )
-        { return NULL; }
-        virtual void maintainConsumers( const transport::Command* command AMQCPP_UNUSED ) {}
 
     };
 

Modified: activemq/activemq-cpp/trunk/src/main/activemq/connector/stomp/StompResponseBuilder.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/connector/stomp/StompResponseBuilder.cpp?view=diff&rev=550825&r1=550824&r2=550825
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/connector/stomp/StompResponseBuilder.cpp (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/connector/stomp/StompResponseBuilder.cpp Tue Jun 26 08:10:18 2007
@@ -64,33 +64,3 @@
         queue.push( resp );
     }
 }
-
-////////////////////////////////////////////////////////////////////////////////
-transport::Command* StompResponseBuilder::buildDisptachedMessage(
-    const cms::Message* message, long long consumerId AMQCPP_UNUSED )
-{
-    // Just clone and return, stomp only looks at destinations, so it will
-    // find its consumers based on that.
-    return dynamic_cast<transport::Command*>( message->clone() );
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void StompResponseBuilder::maintainConsumers( const transport::Command* command ) {
-
-    if( typeid( *command ) == typeid( commands::SubscribeCommand ) ) {
-        const commands::SubscribeCommand* sub =
-            dynamic_cast<const commands::SubscribeCommand*>( command );
-
-        // Register it, just use -1 for Id as Stomp doesn't do anything that uses
-        // consumer Ids.
-        this->registerConsumer( sub->getDestination(), -1 );
-    }
-    else if( typeid( *command ) == typeid( commands::UnsubscribeCommand ) ) {
-        const commands::UnsubscribeCommand* unsub =
-            dynamic_cast<const commands::UnsubscribeCommand*>( command );
-
-        // Register it, just use -1 for Id as Stomp doesn't do anything that uses
-        // consumer Ids.
-        this->unregisterConsumer( unsub->getDestination(), -1 );
-    }
-}

Modified: activemq/activemq-cpp/trunk/src/main/activemq/connector/stomp/StompResponseBuilder.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/connector/stomp/StompResponseBuilder.h?view=diff&rev=550825&r1=550824&r2=550825
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/connector/stomp/StompResponseBuilder.h (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/connector/stomp/StompResponseBuilder.h Tue Jun 26 08:10:18 2007
@@ -33,9 +33,6 @@
         virtual transport::Response* buildResponse( const transport::Command* cmd );
         virtual void buildIncomingCommands(
             const transport::Command* cmd, util::Queue<transport::Command*>& queue );
-        virtual transport::Command* buildDisptachedMessage(
-            const cms::Message* message, long long consumerId );
-        virtual void maintainConsumers( const transport::Command* command );
 
     };
 

Modified: activemq/activemq-cpp/trunk/src/main/activemq/transport/MockTransport.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/transport/MockTransport.h?view=diff&rev=550825&r1=550824&r2=550825
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/transport/MockTransport.h (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/transport/MockTransport.h Tue Jun 26 08:10:18 2007
@@ -58,79 +58,11 @@
          * of the Broker in response to messages of that protocol.
          */
         class ResponseBuilder{
-        private:
-
-            typedef std::multimap< std::string, long long > ConsumersMap;
-
-            // Map of destination names to consumer Ids, this should be filled in
-            // by the implemented ResponseBuilder by calling registerConsumer and
-            // unregisterConsumer whenever a Consumer is created and destroyed.
-            ConsumersMap consumersMap;
-
-        protected:
-
-            /**
-             * Called by a derived class whenever a consumer is created
-             * @param destination - String name of Destination
-             * @param consumerId - unique Id of the consumer.
-             */
-            void registerConsumer( const std::string& destination,
-                                   long long consumerId ) {
-                consumersMap.insert(
-                    std::pair<std::string, long long>( destination, consumerId ) );
-            }
-
-            /**
-             * Called by a dervied class when a consumer is unsubscribed.
-             * @param destination - String name of the Destination
-             * @param consumerId - unique Id of the consumer.
-             */
-            void unregisterConsumer( const std::string& destination,
-                                     long long consumerId ) {
-                ConsumersMap::iterator iter =
-                    consumersMap.lower_bound( destination );
-
-                for( ; iter != consumersMap.upper_bound( destination ); ++iter ){
-                    if( iter-> second == consumerId ) {
-                        consumersMap.erase( iter );
-                        return;
-                    }
-                }
-            }
-
         public:
 
             virtual ~ResponseBuilder(){}
 
             /**
-             * Checks if the named Destination has any registered consumers
-             * @param destination - Name of the Destination in question
-             * @returns true if there are any consumers on this destination
-             */
-            bool hasConsumers( const std::string& destination ) const {
-                return consumersMap.find( destination ) != consumersMap.end();
-            }
-
-            /**
-             * Gets the Set of consumer ids that are registered for the passed in
-             * destination name.
-             * @param destination - String name of the Destination
-             * @returns set of Consumer Ids listening on this destination
-             */
-            std::set<long long> getConsumers( const std::string& destination ) const {
-
-                std::set<long long> consumerIds;
-                ConsumersMap::const_iterator iter =
-                    consumersMap.lower_bound( destination );
-
-                for( ; iter != consumersMap.upper_bound( destination ); ++iter ){
-                    consumerIds.insert( iter->second );
-                }
-
-                return consumerIds;
-            }
-
-            /**
              * Given a Command, check if it requires a response and return the
              * appropriate Response that the Broker would send for this Command
              * @param command - The command to build a response for
@@ -148,29 +80,6 @@
             virtual void buildIncomingCommands(
                 const Command* cmd, util::Queue<Command*>& queue ) = 0;
 
-            /**
-             * When called the ResponseBuilder must return a Command Object that
-             * corresponed to an incomming cms::Message sent to the Consumer
-             * specified by consumerId.  This new message should be a new instance
-             * on the passed message created with all the data necessary to route
-             * the message to the consumer.
-             * @param cms::Message - the Message to create the dispatched version from
-             * @param consumerId - the Id of the Consumer that is to reveice the message
-             * @returns new Command object that will be routed back into the transport.
-             */
-            virtual Command* buildDisptachedMessage( const cms::Message* message,
-                                                     long long consumerId ) = 0;
-
-            /**
-             * Called to allow the response builder to maintain the internal list
-             * of consumers by checking if the passed command is a register or
-             * unregister of a consumer and add or remove it from the internal map
-             * as needed.  If the passed command is not either of these actions
-             * the responseBuilder should do nothing.
-             * @param command - Transport Command to check for consumer add / remove
-             */
-            virtual void maintainConsumers( const Command* command ) = 0;
-
         };
 
         /**
@@ -229,34 +138,6 @@
                     // Create a response now before the caller has a
                     // chance to destroy the command.
                     responseBuilder->buildIncomingCommands( command, inboundQueue );
-
-                    // Allow the ResponseBuilder to add or remove consumers
-                    responseBuilder->maintainConsumers( command );
-
-                    // Chech for message loop, outgoing messages get sent in to
-                    // consumers on the destination they are sent to.
-                    cms::Message* message = dynamic_cast<cms::Message*>( command );
-                    if( message != NULL ) {
-                        std::string destination =
-                            message->getCMSDestination()->toProviderString();
-
-                        if( responseBuilder->hasConsumers( destination ) ) {
-
-                            std::set<long long> consumers =
-                                responseBuilder->getConsumers( destination );
-                            std::set<long long>::const_iterator iter = consumers.begin();
-
-                            for(; iter != consumers.end(); ++iter ) {
-                                Command* dispatch =
-                                    responseBuilder->buildDisptachedMessage(
-                                        message, *iter );
-
-                                if( dispatch != NULL ) {
-                                    inboundQueue.push( dispatch );
-                                }
-                            }
-                        }
-                    }
 
                     // Wake up the thread, messages are dispatched from there.
                     inboundQueue.notifyAll();