You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by nm...@apache.org on 2008/02/09 20:40:22 UTC
svn commit: r620177 - in
/activemq/activemq-cpp/trunk/src/main/activemq/cmsutil: CmsTemplate.cpp
CmsTemplate.h
Author: nmittler
Date: Sat Feb 9 11:40:21 2008
New Revision: 620177
URL: http://svn.apache.org/viewvc?rev=620177&view=rev
Log:
AMQCPP-152 - Adding addition execute methods for ProducerCallback
Modified:
activemq/activemq-cpp/trunk/src/main/activemq/cmsutil/CmsTemplate.cpp
activemq/activemq-cpp/trunk/src/main/activemq/cmsutil/CmsTemplate.h
Modified: activemq/activemq-cpp/trunk/src/main/activemq/cmsutil/CmsTemplate.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/cmsutil/CmsTemplate.cpp?rev=620177&r1=620176&r2=620177&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/cmsutil/CmsTemplate.cpp (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/cmsutil/CmsTemplate.cpp Sat Feb 9 11:40:21 2008
@@ -437,14 +437,8 @@
throw (cms::CMSException, IllegalStateException) {
try {
-
- checkDefaultDestination();
- if (getDefaultDestination() != NULL) {
- send(getDefaultDestination(), messageCreator);
- }
- else {
- send(getDefaultDestinationName(), messageCreator);
- }
+ SenderExecutor senderExecutor(messageCreator, this);
+ execute(&senderExecutor);
}
AMQ_CATCH_RETHROW( ActiveMQException )
AMQ_CATCH_RETHROW( IllegalStateException )
@@ -456,9 +450,9 @@
MessageCreator* messageCreator)
throw (cms::CMSException, IllegalStateException) {
- try {
- Sender sender(dest, messageCreator, this);
- execute(&sender);
+ try {
+ SenderExecutor senderExecutor(messageCreator, this);
+ execute(dest, &senderExecutor);
}
AMQ_CATCH_RETHROW( ActiveMQException )
AMQ_CATCHALL_THROW( ActiveMQException )
@@ -470,28 +464,24 @@
throw (cms::CMSException, IllegalStateException) {
try {
- ResolveSender sender(destinationName, messageCreator, this);
- execute(&sender);
+ SenderExecutor senderExecutor(messageCreator, this);
+ execute(destinationName, &senderExecutor);
}
AMQ_CATCH_RETHROW( ActiveMQException )
AMQ_CATCHALL_THROW( ActiveMQException )
}
////////////////////////////////////////////////////////////////////////////////
-void CmsTemplate::doSend(cms::Session* session, cms::Destination* dest,
+void CmsTemplate::doSend(cms::Session* session, cms::MessageProducer* producer,
MessageCreator* messageCreator) throw (cms::CMSException) {
- cms::MessageProducer* producer = NULL;
cms::Message* message = NULL;
try {
- if( session == NULL || dest == NULL) {
+ if( producer == NULL ) {
return;
- }
-
- // Create the producer.
- producer = createProducer(session, dest);
+ }
// Create the message.
message = messageCreator->createMessage(session);
@@ -504,7 +494,6 @@
}
// Destroy the resources.
- destroyProducer(producer);
destroyMessage(message);
} catch( ActiveMQException& e) {
@@ -512,23 +501,10 @@
e.setMark(__FILE__, __LINE__ );
// Destroy the resources.
- destroyProducer(producer);
destroyMessage(message);
throw e;
}
}
-////////////////////////////////////////////////////////////////////////////////
-void CmsTemplate::ResolveSender::doInCms(cms::Session* session)
-throw (cms::CMSException) {
-
- try {
- cms::Destination* dest = parent->resolveDestinationName(session, destinationName);
- parent->doSend(session, dest, messageCreator);
- }
- AMQ_CATCH_RETHROW( ActiveMQException )
- AMQ_CATCH_EXCEPTION_CONVERT( IllegalStateException, ActiveMQException )
- AMQ_CATCHALL_THROW( ActiveMQException )
-}
Modified: activemq/activemq-cpp/trunk/src/main/activemq/cmsutil/CmsTemplate.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/cmsutil/CmsTemplate.h?rev=620177&r1=620176&r2=620177&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/cmsutil/CmsTemplate.h (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/cmsutil/CmsTemplate.h Sat Feb 9 11:40:21 2008
@@ -21,6 +21,7 @@
#include <activemq/util/Config.h>
#include <activemq/cmsutil/CmsDestinationAccessor.h>
#include <activemq/cmsutil/SessionCallback.h>
+#include <activemq/cmsutil/ProducerCallback.h>
#include <activemq/cmsutil/SessionPool.h>
#include <decaf/lang/exceptions/IllegalStateException.h>
#include <cms/ConnectionFactory.h>
@@ -31,7 +32,6 @@
namespace cmsutil {
// Forward declarations.
- class ProducerCallback;
class MessageCreator;
/**
@@ -145,58 +145,30 @@
/**
* Session callback that sends to the given destination.
*/
- class Sender;
- friend class Sender;
- class Sender : public SessionCallback {
+ class SenderExecutor;
+ friend class SenderExecutor;
+ class SenderExecutor : public ProducerCallback {
private:
- cms::Destination* dest;
MessageCreator* messageCreator;
CmsTemplate* parent;
public:
- Sender(cms::Destination* dest, MessageCreator* messageCreator,
+ SenderExecutor( MessageCreator* messageCreator,
CmsTemplate* parent) {
- this->dest = dest;
this->messageCreator = messageCreator;
this->parent = parent;
}
- virtual ~Sender() {}
+ virtual ~SenderExecutor() {}
- virtual void doInCms(cms::Session* session) throw (cms::CMSException) {
- parent->doSend(session, dest, messageCreator);
+ virtual void doInCms(cms::Session* session,
+ cms::MessageProducer* producer) throw (cms::CMSException) {
+ parent->doSend(session, producer, messageCreator);
}
};
- /**
- * Session callback that sends a message to a named destination.
- */
- class ResolveSender;
- friend class ResolveSender;
- class ResolveSender : public SessionCallback {
- private:
-
- std::string destinationName;
- MessageCreator* messageCreator;
- CmsTemplate* parent;
-
- public:
-
- ResolveSender(const std::string& destinationName,
- MessageCreator* messageCreator,
- CmsTemplate* parent ) {
- this->destinationName = destinationName;
- this->messageCreator = messageCreator;
- this->parent = parent;
- }
-
- virtual ~ResolveSender() {}
-
- virtual void doInCms(cms::Session* session) throw (cms::CMSException);
- };
-
private:
static const int NUM_SESSION_POOLS = (int)cms::Session::SESSION_TRANSACTED + 1;
@@ -629,14 +601,15 @@
/**
* Sends a message to a destination.
* @param session
- * the session to be used.
- * @param dest
- * the destination to send the message on.
+ * the session
+ * @param producer
+ * the producer to send to.
* @param messageCreator
* creates the message to be sent
* @throws cms::CMSException thrown if the CMS API throws.
*/
- void doSend(cms::Session* session, cms::Destination* dest,
+ void doSend(cms::Session* session,
+ cms::MessageProducer* producer,
MessageCreator* messageCreator) throw (cms::CMSException);
/**