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 2009/11/23 21:45:40 UTC
svn commit: r883495 -
/activemq/activemq-cpp/trunk/activemq-cpp/src/examples/consumers/SimpleAsyncConsumer.cpp
Author: tabish
Date: Mon Nov 23 20:45:39 2009
New Revision: 883495
URL: http://svn.apache.org/viewvc?rev=883495&view=rev
Log:
http://issues.apache.org/activemq/browse/AMQCPP-250
Update one of the samples to show how to listen for Transport error / recovery.
Modified:
activemq/activemq-cpp/trunk/activemq-cpp/src/examples/consumers/SimpleAsyncConsumer.cpp
Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/examples/consumers/SimpleAsyncConsumer.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/examples/consumers/SimpleAsyncConsumer.cpp?rev=883495&r1=883494&r2=883495&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/examples/consumers/SimpleAsyncConsumer.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/examples/consumers/SimpleAsyncConsumer.cpp Mon Nov 23 20:45:39 2009
@@ -19,6 +19,8 @@
#include <decaf/lang/Runnable.h>
#include <decaf/util/concurrent/CountDownLatch.h>
#include <activemq/core/ActiveMQConnectionFactory.h>
+#include <activemq/core/ActiveMQConnection.h>
+#include <activemq/transport/DefaultTransportListener.h>
#include <activemq/library/ActiveMQCPP.h>
#include <decaf/lang/Integer.h>
#include <activemq/util/Config.h>
@@ -36,6 +38,7 @@
using namespace activemq;
using namespace activemq::core;
+using namespace activemq::transport;
using namespace decaf::lang;
using namespace decaf::util;
using namespace decaf::util::concurrent;
@@ -44,7 +47,8 @@
////////////////////////////////////////////////////////////////////////////////
class SimpleAsyncConsumer : public ExceptionListener,
- public MessageListener {
+ public MessageListener,
+ public DefaultTransportListener {
private:
Connection* connection;
@@ -87,6 +91,12 @@
// Create a Connection
connection = connectionFactory->createConnection();
delete connectionFactory;
+
+ ActiveMQConnection* amqConnection = dynamic_cast<ActiveMQConnection*>( connection );
+ if( amqConnection != NULL ) {
+ amqConnection->addTransportListener( this );
+ }
+
connection->start();
connection->setExceptionListener(this);
@@ -144,11 +154,19 @@
// If something bad happens you see it here as this class is also been
// registered as an ExceptionListener with the connection.
- virtual void onException( const CMSException& ex AMQCPP_UNUSED) {
+ virtual void onException( const CMSException& ex AMQCPP_UNUSED ) {
printf("CMS Exception occurred. Shutting down client.\n");
exit(1);
}
+ virtual void transportInterrupted() {
+ std::cout << "The Connection's Transport has been Interrupted." << std::endl;
+ }
+
+ virtual void transportResumed() {
+ std::cout << "The Connection's Transport has been Restored." << std::endl;
+ }
+
private:
void cleanup(){