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 2015/08/06 23:44:08 UTC

[2/2] activemq-cpp git commit: Remove incomplete discovery transport classes for this release.

Remove incomplete discovery transport classes for this release.

Project: http://git-wip-us.apache.org/repos/asf/activemq-cpp/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-cpp/commit/e237191d
Tree: http://git-wip-us.apache.org/repos/asf/activemq-cpp/tree/e237191d
Diff: http://git-wip-us.apache.org/repos/asf/activemq-cpp/diff/e237191d

Branch: refs/heads/3.9.x
Commit: e237191dc706dbc7b24df7096b0c68e9a14ac492
Parents: 2ad5237
Author: Timothy Bish <ta...@gmail.com>
Authored: Thu Aug 6 17:26:46 2015 -0400
Committer: Timothy Bish <ta...@gmail.com>
Committed: Thu Aug 6 17:26:46 2015 -0400

----------------------------------------------------------------------
 activemq-cpp/src/main/Makefile.am               |  22 -
 .../src/main/activemq/library/ActiveMQCPP.cpp   |  13 -
 .../discovery/AbstractDiscoveryAgent.cpp        | 547 -------------------
 .../discovery/AbstractDiscoveryAgent.h          | 272 ---------
 .../discovery/AbstractDiscoveryAgentFactory.cpp |  82 ---
 .../discovery/AbstractDiscoveryAgentFactory.h   |  89 ---
 .../discovery/DiscoveredBrokerData.cpp          |  47 --
 .../transport/discovery/DiscoveredBrokerData.h  | 126 -----
 .../transport/discovery/DiscoveryAgent.cpp      |  26 -
 .../transport/discovery/DiscoveryAgent.h        |  95 ----
 .../discovery/DiscoveryAgentFactory.cpp         |  26 -
 .../transport/discovery/DiscoveryAgentFactory.h |  61 ---
 .../discovery/DiscoveryAgentRegistry.cpp        | 114 ----
 .../discovery/DiscoveryAgentRegistry.h          | 130 -----
 .../transport/discovery/DiscoveryListener.cpp   |  26 -
 .../transport/discovery/DiscoveryListener.h     |  54 --
 .../transport/discovery/DiscoveryTransport.cpp  | 232 --------
 .../transport/discovery/DiscoveryTransport.h    | 107 ----
 .../discovery/DiscoveryTransportFactory.cpp     | 104 ----
 .../discovery/DiscoveryTransportFactory.h       |  53 --
 .../discovery/http/HttpDiscoveryAgent.cpp       | 197 -------
 .../discovery/http/HttpDiscoveryAgent.h         | 117 ----
 .../http/HttpDiscoveryAgentFactory.cpp          |  51 --
 .../discovery/http/HttpDiscoveryAgentFactory.h  |  47 --
 activemq-cpp/src/test/Makefile.am               |   8 -
 .../AbstractDiscoveryAgentFactoryTest.cpp       | 112 ----
 .../AbstractDiscoveryAgentFactoryTest.h         |  45 --
 .../discovery/AbstractDiscoveryAgentTest.cpp    | 145 -----
 .../discovery/AbstractDiscoveryAgentTest.h      |  45 --
 .../discovery/DiscoveryAgentRegistryTest.cpp    |  90 ---
 .../discovery/DiscoveryAgentRegistryTest.h      |  45 --
 .../discovery/DiscoveryTransportFactoryTest.cpp | 116 ----
 .../discovery/DiscoveryTransportFactoryTest.h   |  47 --
 activemq-cpp/src/test/testRegistry.cpp          |   9 -
 34 files changed, 3300 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq-cpp/blob/e237191d/activemq-cpp/src/main/Makefile.am
----------------------------------------------------------------------
diff --git a/activemq-cpp/src/main/Makefile.am b/activemq-cpp/src/main/Makefile.am
index 98ec152..66d9f8b 100644
--- a/activemq-cpp/src/main/Makefile.am
+++ b/activemq-cpp/src/main/Makefile.am
@@ -155,17 +155,6 @@ cc_sources = \
     activemq/transport/TransportFilter.cpp \
     activemq/transport/TransportRegistry.cpp \
     activemq/transport/correlator/ResponseCorrelator.cpp \
-    activemq/transport/discovery/AbstractDiscoveryAgent.cpp \
-    activemq/transport/discovery/AbstractDiscoveryAgentFactory.cpp \
-    activemq/transport/discovery/DiscoveredBrokerData.cpp \
-    activemq/transport/discovery/DiscoveryAgent.cpp \
-    activemq/transport/discovery/DiscoveryAgentFactory.cpp \
-    activemq/transport/discovery/DiscoveryAgentRegistry.cpp \
-    activemq/transport/discovery/DiscoveryListener.cpp \
-    activemq/transport/discovery/DiscoveryTransport.cpp \
-    activemq/transport/discovery/DiscoveryTransportFactory.cpp \
-    activemq/transport/discovery/http/HttpDiscoveryAgent.cpp \
-    activemq/transport/discovery/http/HttpDiscoveryAgentFactory.cpp \
     activemq/transport/failover/BackupTransport.cpp \
     activemq/transport/failover/BackupTransportPool.cpp \
     activemq/transport/failover/CloseTransportsTask.cpp \
@@ -836,17 +825,6 @@ h_sources = \
     activemq/transport/TransportListener.h \
     activemq/transport/TransportRegistry.h \
     activemq/transport/correlator/ResponseCorrelator.h \
-    activemq/transport/discovery/AbstractDiscoveryAgent.h \
-    activemq/transport/discovery/AbstractDiscoveryAgentFactory.h \
-    activemq/transport/discovery/DiscoveredBrokerData.h \
-    activemq/transport/discovery/DiscoveryAgent.h \
-    activemq/transport/discovery/DiscoveryAgentFactory.h \
-    activemq/transport/discovery/DiscoveryAgentRegistry.h \
-    activemq/transport/discovery/DiscoveryListener.h \
-    activemq/transport/discovery/DiscoveryTransport.h \
-    activemq/transport/discovery/DiscoveryTransportFactory.h \
-    activemq/transport/discovery/http/HttpDiscoveryAgent.h \
-    activemq/transport/discovery/http/HttpDiscoveryAgentFactory.h \
     activemq/transport/failover/BackupTransport.h \
     activemq/transport/failover/BackupTransportPool.h \
     activemq/transport/failover/CloseTransportsTask.h \

http://git-wip-us.apache.org/repos/asf/activemq-cpp/blob/e237191d/activemq-cpp/src/main/activemq/library/ActiveMQCPP.cpp
----------------------------------------------------------------------
diff --git a/activemq-cpp/src/main/activemq/library/ActiveMQCPP.cpp b/activemq-cpp/src/main/activemq/library/ActiveMQCPP.cpp
index 376e6f4..daa63fe 100644
--- a/activemq-cpp/src/main/activemq/library/ActiveMQCPP.cpp
+++ b/activemq-cpp/src/main/activemq/library/ActiveMQCPP.cpp
@@ -20,7 +20,6 @@
 #include <decaf/lang/Runtime.h>
 #include <activemq/wireformat/WireFormatRegistry.h>
 #include <activemq/transport/TransportRegistry.h>
-#include <activemq/transport/discovery/DiscoveryAgentRegistry.h>
 
 #include <activemq/util/IdGenerator.h>
 
@@ -31,9 +30,6 @@
 #include <activemq/transport/tcp/TcpTransportFactory.h>
 #include <activemq/transport/tcp/SslTransportFactory.h>
 #include <activemq/transport/failover/FailoverTransportFactory.h>
-#include <activemq/transport/discovery/DiscoveryTransportFactory.h>
-
-#include <activemq/transport/discovery/http/HttpDiscoveryAgentFactory.h>
 
 using namespace activemq;
 using namespace activemq::library;
@@ -42,8 +38,6 @@ using namespace activemq::transport;
 using namespace activemq::transport::tcp;
 using namespace activemq::transport::mock;
 using namespace activemq::transport::failover;
-using namespace activemq::transport::discovery;
-using namespace activemq::transport::discovery::http;
 using namespace activemq::wireformat;
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -85,7 +79,6 @@ void ActiveMQCPP::shutdownLibrary() {
 
     WireFormatRegistry::shutdown();
     TransportRegistry::shutdown();
-    DiscoveryAgentRegistry::shutdown();
 
     // Now it should be safe to shutdown Decaf.
     decaf::lang::Runtime::shutdownRuntime();
@@ -114,10 +107,4 @@ void ActiveMQCPP::registerTransports() {
     TransportRegistry::getInstance().registerFactory("nio+ssl", new SslTransportFactory());
     TransportRegistry::getInstance().registerFactory("mock", new MockTransportFactory());
     TransportRegistry::getInstance().registerFactory("failover", new FailoverTransportFactory());
-    TransportRegistry::getInstance().registerFactory("discovery", new DiscoveryTransportFactory());
-
-    // Each discovery agent implemented in this library must be registered here.
-    DiscoveryAgentRegistry::initialize();
-
-    DiscoveryAgentRegistry::getInstance().registerFactory("http", new HttpDiscoveryAgentFactory);
 }

http://git-wip-us.apache.org/repos/asf/activemq-cpp/blob/e237191d/activemq-cpp/src/main/activemq/transport/discovery/AbstractDiscoveryAgent.cpp
----------------------------------------------------------------------
diff --git a/activemq-cpp/src/main/activemq/transport/discovery/AbstractDiscoveryAgent.cpp b/activemq-cpp/src/main/activemq/transport/discovery/AbstractDiscoveryAgent.cpp
deleted file mode 100644
index f933ff8..0000000
--- a/activemq-cpp/src/main/activemq/transport/discovery/AbstractDiscoveryAgent.cpp
+++ /dev/null
@@ -1,547 +0,0 @@
-/*
- * 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.
- */
-
-#include <activemq/transport/discovery/AbstractDiscoveryAgent.h>
-
-#include <activemq/transport/discovery/DiscoveredBrokerData.h>
-#include <activemq/transport/discovery/DiscoveryListener.h>
-
-#include <decaf/net/URI.h>
-#include <decaf/lang/Thread.h>
-#include <decaf/util/HashMap.h>
-#include <decaf/util/concurrent/Mutex.h>
-#include <decaf/util/concurrent/atomic/AtomicBoolean.h>
-#include <decaf/util/concurrent/ThreadPoolExecutor.h>
-#include <decaf/util/concurrent/TimeUnit.h>
-#include <decaf/util/concurrent/LinkedBlockingQueue.h>
-
-using namespace activemq;
-using namespace activemq::commands;
-using namespace activemq::transport;
-using namespace activemq::transport::discovery;
-using namespace decaf;
-using namespace decaf::lang;
-using namespace decaf::lang::exceptions;
-using namespace decaf::net;
-using namespace decaf::util;
-using namespace decaf::util::concurrent;
-using namespace decaf::util::concurrent::atomic;
-
-////////////////////////////////////////////////////////////////////////////////
-const int AbstractDiscoveryAgent::DEFAULT_INITIAL_RECONNECT_DELAY = 5000;
-const int AbstractDiscoveryAgent::DEFAULT_BACKOFF_MULTIPLIER = 2;
-const int AbstractDiscoveryAgent::DEFAULT_MAX_RECONNECT_DELAY = 30000;
-const int AbstractDiscoveryAgent::WORKER_KILL_TIME_SECONDS = 1000;
-const int AbstractDiscoveryAgent::HEARTBEAT_MISS_BEFORE_DEATH = 10;
-const int AbstractDiscoveryAgent::DEFAULT_KEEPALIVE_INTERVAL = 500;
-
-////////////////////////////////////////////////////////////////////////////////
-namespace activemq {
-namespace transport {
-namespace discovery {
-
-    class AbstractDiscoveryAgentImpl {
-    private:
-
-        AbstractDiscoveryAgentImpl(const AbstractDiscoveryAgentImpl&);
-        AbstractDiscoveryAgentImpl& operator=(const AbstractDiscoveryAgentImpl&);
-
-    public:
-
-        long long initialReconnectDelay;
-        long long maxReconnectDelay;
-        long long backOffMultiplier;
-        bool useExponentialBackOff;
-        int maxReconnectAttempts;
-        long long keepAliveInterval;
-
-        AtomicBoolean started;
-        Pointer<Thread> worker;
-        Pointer<ThreadPoolExecutor> executor;
-
-        HashMap<std::string, Pointer<DiscoveredBrokerData> > discoveredServices;
-        Mutex discoveredServicesLock;
-
-        URI discoveryUri;
-        std::string selfService;
-        std::string group;
-        DiscoveryListener* listener;
-        long long lastAdvertizeTime;
-        bool reportAdvertizeFailed;
-
-    public:
-
-        AbstractDiscoveryAgentImpl() : initialReconnectDelay(AbstractDiscoveryAgent::DEFAULT_INITIAL_RECONNECT_DELAY),
-                                       maxReconnectDelay(AbstractDiscoveryAgent::DEFAULT_MAX_RECONNECT_DELAY),
-                                       backOffMultiplier(AbstractDiscoveryAgent::DEFAULT_BACKOFF_MULTIPLIER),
-                                       useExponentialBackOff(false),
-                                       maxReconnectAttempts(0),
-                                       keepAliveInterval(AbstractDiscoveryAgent::DEFAULT_KEEPALIVE_INTERVAL),
-                                       started(),
-                                       worker(),
-                                       executor(),
-                                       discoveredServices(),
-                                       discoveredServicesLock(),
-                                       discoveryUri(),
-                                       selfService(),
-                                       group("default"),
-                                       listener(),
-                                       lastAdvertizeTime(0),
-                                       reportAdvertizeFailed(true)
-        {}
-
-        ~AbstractDiscoveryAgentImpl() {
-            if (started.compareAndSet(true, false)) {
-                if (worker == NULL) {
-                    worker->join(5000);
-
-                    if (!worker->isAlive()) {
-                        worker->interrupt();
-                        worker->join(1000);
-                    }
-
-                    worker.reset(NULL);
-                }
-
-                executor->shutdown();
-                executor->awaitTermination(1, TimeUnit::MINUTES);
-            }
-
-        }
-
-        Executor& getExecutor() {
-            if (executor == NULL) {
-                synchronized(&discoveredServicesLock) {
-                    if (executor == NULL) {
-                        executor.reset(
-                            new ThreadPoolExecutor(1, 1, 45, TimeUnit::SECONDS,
-                                new LinkedBlockingQueue<Runnable*>()));
-                    }
-                }
-            }
-            return *executor;
-        }
-
-        /**
-         * Returns true if this Broker has been marked as failed and it is now time to
-         * start a recovery attempt.
-         */
-        bool isTimeForRecovery(Pointer<DiscoveredBrokerData> service) {
-            synchronized(&discoveredServicesLock) {
-
-                if (!service->isFailed()) {
-                    return false;
-                }
-
-                int maxReconnectAttempts = this->maxReconnectAttempts;
-
-                // Are we done trying to recover this guy?
-                if (maxReconnectAttempts > 0 && service->getFailureCount() > maxReconnectAttempts) {
-                    return false;
-                }
-
-                // Is it not yet time?
-                if (System::currentTimeMillis() < service->getNextRecoveryTime()) {
-                    return false;
-                }
-
-                service->setFailed(false);
-                return true;
-            }
-
-            return false;
-        }
-
-        void updateHeartBeat(Pointer<DiscoveredBrokerData> service) {
-            synchronized(&discoveredServicesLock) {
-
-                service->setLastHeartBeatTime(System::currentTimeMillis());
-
-                // Consider that the broker recovery has succeeded if it has not failed in 60 seconds.
-                if (!service->isFailed() && service->getFailureCount() > 0 &&
-                    (service->getLastHeartBeatTime() - service->getNextRecoveryTime()) > TimeUnit::MINUTES.toSeconds(60)) {
-
-                    service->setFailureCount(0);
-                    service->setNextRecoveryTime(System::currentTimeMillis());
-                }
-            }
-        }
-
-        bool markFailed(Pointer<DiscoveredBrokerData> service) {
-            synchronized(&discoveredServicesLock) {
-
-                if (!service->isFailed()) {
-                    service->setFailed(true);
-                    service->setFailureCount(service->getFailureCount() + 1);
-
-                    long long reconnectDelay = 0;
-                    if (!useExponentialBackOff) {
-                        reconnectDelay = initialReconnectDelay;
-                    } else {
-                        reconnectDelay = (long) Math::pow((double)backOffMultiplier, (double)service->getFailureCount());
-                        reconnectDelay = Math::min(reconnectDelay, maxReconnectDelay);
-                    }
-
-                    service->setNextRecoveryTime(System::currentTimeMillis() + reconnectDelay);
-                    return true;
-                }
-            }
-            return false;
-        }
-    };
-
-    class ServiceAddedRunnable : public Runnable {
-    private:
-
-        AbstractDiscoveryAgent* agent;
-        Pointer<DiscoveredBrokerData> event;
-
-    public:
-
-        ServiceAddedRunnable(AbstractDiscoveryAgent* agent, Pointer<DiscoveredBrokerData> event) :
-            Runnable(), agent(agent), event(event) {
-        }
-        virtual ~ServiceAddedRunnable() {}
-
-        virtual void run() {
-            DiscoveryListener* listener = agent->getDiscoveryListener();
-            if (listener != NULL) {
-                listener->onServiceAdd(event.get());
-            }
-        }
-    };
-
-    class ServiceRemovedRunnable : public Runnable {
-    private:
-
-        AbstractDiscoveryAgent* agent;
-        Pointer<DiscoveredBrokerData> event;
-
-    public:
-
-        ServiceRemovedRunnable(AbstractDiscoveryAgent* agent, Pointer<DiscoveredBrokerData> event) :
-            Runnable(), agent(agent), event(event) {}
-        virtual ~ServiceRemovedRunnable() {}
-
-        virtual void run() {
-            DiscoveryListener* listener = agent->getDiscoveryListener();
-            if (listener != NULL) {
-                listener->onServiceRemove(event.get());
-            }
-        }
-    };
-
-}}}
-
-////////////////////////////////////////////////////////////////////////////////
-AbstractDiscoveryAgent::AbstractDiscoveryAgent() : DiscoveryAgent(), impl(new AbstractDiscoveryAgentImpl) {
-}
-
-////////////////////////////////////////////////////////////////////////////////
-AbstractDiscoveryAgent::~AbstractDiscoveryAgent() {
-    try {
-        delete this->impl;
-    }
-    DECAF_CATCHALL_NOTHROW()
-}
-
-////////////////////////////////////////////////////////////////////////////////
-bool AbstractDiscoveryAgent::isStarted() const {
-    return impl->started.get();
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void AbstractDiscoveryAgent::start() {
-    if (impl->started.compareAndSet(false, true)) {
-        doStart();
-
-        if (impl->worker == NULL) {
-            impl->worker.reset(new Thread(this));
-            impl->worker->start();
-        }
-
-        doAdvertizeSelf();
-    }
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void AbstractDiscoveryAgent::stop() {
-    // Changing the isStarted flag will signal the thread that it needs to shut down.
-    if (impl->started.compareAndSet(true, false)) {
-        doStop();
-
-        if (impl->worker == NULL) {
-            impl->worker->join(WORKER_KILL_TIME_SECONDS);
-
-            if (!impl->worker->isAlive()) {
-                impl->worker->interrupt();
-                impl->worker->join(WORKER_KILL_TIME_SECONDS);
-            }
-
-            impl->worker.reset(NULL);
-        }
-
-        impl->executor->shutdown();
-        impl->executor->awaitTermination(1, TimeUnit::MINUTES);
-    }
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void AbstractDiscoveryAgent::run() {
-
-    Thread::currentThread()->setName("Discovery Agent Thread.");
-
-    while (impl->started.get()) {
-        doTimeKeepingServices();
-        try {
-            doDiscovery();
-        } catch (InterruptedException& ex) {
-            return;
-        } catch (Exception& ignore) {
-        }
-    }
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void AbstractDiscoveryAgent::registerService(const std::string& name) {
-    impl->selfService = name;
-    if (impl->started.get()) {
-        try {
-            doAdvertizeSelf();
-        } catch (Exception& e) {
-            // If a the advertise fails, chances are all subsequent sends will fail
-            // too.. No need to keep reporting the same error over and over.
-            if (impl->reportAdvertizeFailed) {
-                impl->reportAdvertizeFailed = false;
-            }
-        }
-    }
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void AbstractDiscoveryAgent::serviceFailed(const activemq::commands::DiscoveryEvent& event) {
-
-    Pointer<DiscoveredBrokerData> service;
-    synchronized(&impl->discoveredServicesLock) {
-        try {
-            service = impl->discoveredServices.get(event.getServiceName());
-        } catch (NoSuchElementException& ex) {}
-    }
-
-    if (service != NULL && impl->markFailed(service)) {
-        fireServiceRemovedEvent(service);
-    }
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void AbstractDiscoveryAgent::setDiscoveryListener(DiscoveryListener* listener) {
-    this->impl->listener = listener;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-DiscoveryListener* AbstractDiscoveryAgent::getDiscoveryListener() const {
-    return this->impl->listener;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void AbstractDiscoveryAgent::setDiscoveryURI(const URI& discoveryURI) {
-    impl->discoveryUri = discoveryURI;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-URI AbstractDiscoveryAgent::getDiscoveryURI() const {
-    return impl->discoveryUri;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void AbstractDiscoveryAgent::setServiceName(const std::string& name) {
-    impl->selfService = name;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-std::string AbstractDiscoveryAgent::getServiceName() const {
-    return impl->selfService;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void AbstractDiscoveryAgent::setKeepAliveInterval(long long interval) {
-    impl->keepAliveInterval = interval;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-long long AbstractDiscoveryAgent::getKeepAliveInterval() const {
-    return impl->keepAliveInterval;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void AbstractDiscoveryAgent::setInitialReconnectDelay(long long initialReconnectDelay) {
-    impl->initialReconnectDelay = initialReconnectDelay;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-long long AbstractDiscoveryAgent::getInitialReconnectDelay() const {
-    return impl->initialReconnectDelay;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void AbstractDiscoveryAgent::setMaxReconnectAttempts(int maxReconnectAttempts) {
-    impl->maxReconnectAttempts = maxReconnectAttempts;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-int AbstractDiscoveryAgent::getMaxReconnectAttempts() const {
-    return impl->maxReconnectAttempts;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void AbstractDiscoveryAgent::setMaxReconnectDelay(long long maxReconnectDelay) {
-    impl->maxReconnectDelay = maxReconnectDelay;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-long long AbstractDiscoveryAgent::getMaxReconnectDelay() const {
-    return impl->maxReconnectDelay;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void AbstractDiscoveryAgent::setUseExponentialBackOff(bool useExponentialBackOff) {
-    impl->useExponentialBackOff = useExponentialBackOff;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-bool AbstractDiscoveryAgent::isUseExponentialBackOff() const {
-    return impl->useExponentialBackOff;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void AbstractDiscoveryAgent::setBackOffMultiplier(long long multiplier) {
-    impl->backOffMultiplier = multiplier;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-long long AbstractDiscoveryAgent::getBackOffMultiplier() const {
-    return impl->backOffMultiplier;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void AbstractDiscoveryAgent::setGroup(const std::string& group) {
-    impl->group = group;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-std::string AbstractDiscoveryAgent::getGroup() const {
-    return impl->group;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void AbstractDiscoveryAgent::fireServiceRemovedEvent(Pointer<DiscoveredBrokerData> event) {
-    if (impl->listener != NULL && impl->started.get()) {
-        // Have the listener process the event async so that
-        // he does not block this thread since we are doing time sensitive
-        // processing of events.
-        impl->getExecutor().execute(new ServiceRemovedRunnable(this, event));
-    }
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void AbstractDiscoveryAgent::fireServiceAddedEvent(Pointer<DiscoveredBrokerData> event) {
-    if (impl->listener != NULL && impl->started.get()) {
-        // Have the listener process the event async so that
-        // he does not block this thread since we are doing time sensitive
-        // processing of events.
-        impl->getExecutor().execute(new ServiceAddedRunnable(this, event));
-    }
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void AbstractDiscoveryAgent::processLiveService(const std::string& brokerName, const std::string& service) {
-
-    if (getServiceName().empty() || service != getServiceName()) {
-        Pointer<DiscoveredBrokerData> remoteBroker;
-        synchronized(&impl->discoveredServicesLock) {
-            try {
-                remoteBroker = impl->discoveredServices.get(service);
-            } catch (NoSuchElementException& ignored) {
-            }
-        }
-
-        if (remoteBroker == NULL) {
-            remoteBroker.reset(new DiscoveredBrokerData(brokerName, service));
-            impl->discoveredServices.put(service, remoteBroker);
-            fireServiceAddedEvent(remoteBroker);
-            doAdvertizeSelf();
-        } else {
-            impl->updateHeartBeat(remoteBroker);
-            if (impl->isTimeForRecovery(remoteBroker)) {
-                fireServiceAddedEvent(remoteBroker);
-            }
-        }
-    }
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void AbstractDiscoveryAgent::processDeadService(const std::string& service) {
-
-    if (service != getServiceName()) {
-
-        Pointer<DiscoveredBrokerData> remoteBroker;
-        synchronized(&impl->discoveredServicesLock) {
-            try {
-                remoteBroker = impl->discoveredServices.get(service);
-            } catch (NoSuchElementException& ignored) {
-            }
-        }
-
-        if (remoteBroker != NULL && !remoteBroker->isFailed()) {
-            fireServiceRemovedEvent(remoteBroker);
-        }
-    }
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void AbstractDiscoveryAgent::doTimeKeepingServices() {
-
-    if (impl->started.get()) {
-        long long currentTime = System::currentTimeMillis();
-        if (currentTime < impl->lastAdvertizeTime ||
-            ((currentTime - impl->keepAliveInterval) > impl->lastAdvertizeTime)) {
-
-            doAdvertizeSelf();
-            impl->lastAdvertizeTime = currentTime;
-        }
-        doExpireOldServices();
-    }
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void AbstractDiscoveryAgent::doExpireOldServices() {
-    long long expireTime = System::currentTimeMillis() -
-        (impl->keepAliveInterval * HEARTBEAT_MISS_BEFORE_DEATH);
-
-    std::vector< Pointer<DiscoveredBrokerData> > services;
-    synchronized(&impl->discoveredServicesLock) {
-        services = impl->discoveredServices.values().toArray();
-    }
-
-    std::vector< Pointer<DiscoveredBrokerData> >::iterator iter = services.begin();
-    for (; iter != services.end(); ++iter) {
-        Pointer<DiscoveredBrokerData> service = *iter;
-        if (service->getLastHeartBeatTime() < expireTime) {
-            processDeadService(service->getServiceName());
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/activemq-cpp/blob/e237191d/activemq-cpp/src/main/activemq/transport/discovery/AbstractDiscoveryAgent.h
----------------------------------------------------------------------
diff --git a/activemq-cpp/src/main/activemq/transport/discovery/AbstractDiscoveryAgent.h b/activemq-cpp/src/main/activemq/transport/discovery/AbstractDiscoveryAgent.h
deleted file mode 100644
index 098f0aa..0000000
--- a/activemq-cpp/src/main/activemq/transport/discovery/AbstractDiscoveryAgent.h
+++ /dev/null
@@ -1,272 +0,0 @@
-/*
- * 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_TRANSPORT_DISCOVERY_ABSTRACTDISCOVERYAGENT_H_
-#define _ACTIVEMQ_TRANSPORT_DISCOVERY_ABSTRACTDISCOVERYAGENT_H_
-
-#include <activemq/util/Config.h>
-
-#include <activemq/transport/discovery/DiscoveryAgent.h>
-#include <activemq/transport/discovery/DiscoveredBrokerData.h>
-
-#include <decaf/lang/Runnable.h>
-#include <decaf/lang/Pointer.h>
-
-namespace activemq {
-namespace transport {
-namespace discovery {
-
-    class AbstractDiscoveryAgentImpl;
-
-    /**
-     * Abstract base class that provides all the basic implementation needed to create
-     * a DiscoveryAgent instance without needing to implement a lot of boilerplate code.
-     *
-     * @since 3.9.0
-     */
-    class AMQCPP_API AbstractDiscoveryAgent : public DiscoveryAgent, public decaf::lang::Runnable {
-    private:
-
-        AbstractDiscoveryAgentImpl* impl;
-
-    public:
-
-        static const int DEFAULT_INITIAL_RECONNECT_DELAY;
-        static const int DEFAULT_BACKOFF_MULTIPLIER;
-        static const int DEFAULT_MAX_RECONNECT_DELAY;
-        static const int WORKER_KILL_TIME_SECONDS;
-        static const int HEARTBEAT_MISS_BEFORE_DEATH;
-        static const int DEFAULT_KEEPALIVE_INTERVAL;
-
-    private:
-
-        AbstractDiscoveryAgent(const AbstractDiscoveryAgent&);
-        AbstractDiscoveryAgent& operator= (const AbstractDiscoveryAgent&);
-
-    public:
-
-        AbstractDiscoveryAgent();
-        virtual ~AbstractDiscoveryAgent();
-
-        virtual void start();
-        virtual void stop();
-
-        virtual void registerService(const std::string& name);
-        virtual void serviceFailed(const activemq::commands::DiscoveryEvent& event);
-
-        virtual void setDiscoveryListener(DiscoveryListener* listener);
-        virtual DiscoveryListener* getDiscoveryListener() const;
-
-        virtual void setDiscoveryURI(const decaf::net::URI& discoveryURI);
-        virtual decaf::net::URI getDiscoveryURI() const;
-
-        /**
-         * @return true if this agent is currently started.
-         */
-        bool isStarted() const;
-
-        /**
-         * Sets the service that is publish by this agent if it supports publishing.
-         *
-         * @param name
-         *      The service name to publish, typically the URI.
-         */
-        void setServiceName(const std::string& name);
-
-        /**
-         * Gets the configured service to publish, not all agents can publish so this value
-         * may not mean that an actual service advertisement is ever done.
-         *
-         * @return the configured service to publish.
-         */
-        std::string getServiceName() const;
-
-        /**
-         * Sets the keep alive interval used to control how long an service that has not been
-         * seen is kept in the list of discovered services before being idle to long.  Also this
-         * value controls how often this service will advertise itself if it supports that.
-         *
-         * @param interval
-         *      Time in milliseconds for the keep alive interval.
-         */
-        void setKeepAliveInterval(long long interval);
-
-        /**
-         * Gets the keep alive interval used to control how long an service that has not been
-         * seen is kept in the list of discovered services before being idle to long.  Also this
-         * value controls how often this service will advertise itself if it supports that.
-         *
-         * @return Time in milliseconds for the keep alive interval.
-         */
-        long long getKeepAliveInterval() const;
-
-        /**
-         * Sets the agents reconnect backoff multiplier.
-         *
-         * @param multiplier
-         *      The back multiplier to use when calculating the next recovery time.
-         */
-        void setBackOffMultiplier(long long multiplier);
-
-        /**
-         * Gets the configured backoff multiplier for calculating the next recovery time.
-         *
-         * @return the configured backoff multiplier for calculating the next recovery time.
-         */
-        long long getBackOffMultiplier() const;
-
-        /**
-         * Sets the initial amount of time the agent should wait before attempt a reconnect on
-         * a discovered service.
-         *
-         * @param initialReconnectDelay
-         *      The time to wait before the initial reconnect attempt in milliseconds.
-         */
-        void setInitialReconnectDelay(long long initialReconnectDelay);
-
-        /**
-         * Gets the initial amount of time the agent should wait before attempt a reconnect on
-         * a discovered service.
-         *
-         * @return The time to wait before the initial reconnect attempt in milliseconds.
-         */
-        long long getInitialReconnectDelay() const;
-
-        /**
-         * Sets the maximum number of reconnect attempts that occur before a service is considered to
-         * be failed and removed.
-         *
-         * @param maxReconnectAttempts
-         *      The maximum number of reconnect attempts allowed or zero for no limit.
-         */
-        void setMaxReconnectAttempts(int maxReconnectAttempts);
-
-        /**
-         * Returns the maximum number of reconnect attempts that will be attempted before a
-         * service is considered to be failed.
-         *
-         * @return the maximum number of allowed reconnect attempts.
-         */
-        int getMaxReconnectAttempts() const;
-
-        /**
-         * The maximum time that a reconnect delay is allowed to grow to, in Milliseconds.
-         *
-         * @param maxReconnectDelay
-         *      The maximum time in milliseconds to limit the reconnect delays.
-         */
-        void setMaxReconnectDelay(long long maxReconnectDelay);
-
-        /**
-         * Returns the maximum time allowed between reconnect attempts.  This limits the amount
-         * of time that reconnect will wait when exponential backoff is enabled.
-         *
-         * @return the maximum reconnect delay in milliseconds.
-         */
-        long long getMaxReconnectDelay() const;
-
-        /**
-         * Sets whether reconnect attempts are delayed exponentially until a new connection is made
-         * or the maximum number of attempts is exceeded.  Using an exponential back-off can
-         * reduce CPU overhead but can also lead to a longer time to reconnect to a service that
-         * is known to have short drop outs.
-         *
-         * @param useExponentialBackOff
-         *     When true it indicates that the delay between reconnect attempts grows exponentially.
-         */
-        void setUseExponentialBackOff(bool useExponentialBackOff);
-
-        /**
-         * Returns true if successive attempts to reconnect to a discovered service are delayed
-         * by an exponentially growing time factor.
-         *
-         * @return whether exponential back-off is enabled.
-         */
-        bool isUseExponentialBackOff() const;
-
-        /**
-         * Sets the discovery group that this agent is assigned.  The default value for this
-         * group is "default".
-         *
-         * @param group
-         *      The assigned group for the discovery agent.
-         */
-        void setGroup(const std::string& group);
-
-        /**
-         * Returns the assigned group for this discovery agent.
-         *
-         * @return the assigned group for this discovery agent.
-         */
-        std::string getGroup() const;
-
-    protected:
-
-        /**
-         * Default implementation of the DiscoveryAgent's background worker thread processing.
-         *
-         * In general there is no need for an agent to override this method, however some agents
-         * may require special handling of their discovery mechanisms so it is allowable for this
-         * method to be overridden.  Implementors of this method must ensure that the run method
-         * will return quickly once the started value becomes false or the Thread is interrupted.
-         */
-        virtual void run();
-
-        virtual void processLiveService(const std::string& brokerName, const std::string& service);
-        virtual void processDeadService(const std::string& service);
-
-        virtual void fireServiceAddedEvent(decaf::lang::Pointer<DiscoveredBrokerData> event);
-        virtual void fireServiceRemovedEvent(decaf::lang::Pointer<DiscoveredBrokerData> event);
-
-    protected:
-
-        /**
-         * The real agent class must implement this method to perform any necessary resource allocation
-         * prior to the completion of the start call.
-         */
-        virtual void doStart() = 0;
-
-        /**
-         * The real agent class must implement this method to perform any necessary resource cleanup
-         * prior to the completion of the stop call.
-         */
-        virtual void doStop() = 0;
-
-        /**
-         * Optional method that allows the agent to perform an advertisement of this clients
-         * service.  Not all agents can do this so this method should be a no-op if this is
-         * not supported.
-         */
-        virtual void doAdvertizeSelf() = 0;
-
-        /**
-         * Performs the actual discovery operation for this agent.  This method is called in the
-         * worker thread context of the AbstractDiscoveryAgent and should not block forever.  The
-         * method will be called repeatedly to allow the agent to continually probe for new services.
-         */
-        virtual void doDiscovery() = 0;
-
-    private:
-
-        void doExpireOldServices();
-        void doTimeKeepingServices();
-
-    };
-
-}}}
-
-#endif /* _ACTIVEMQ_TRANSPORT_DISCOVERY_ABSTRACTDISCOVERYAGENT_H_ */

http://git-wip-us.apache.org/repos/asf/activemq-cpp/blob/e237191d/activemq-cpp/src/main/activemq/transport/discovery/AbstractDiscoveryAgentFactory.cpp
----------------------------------------------------------------------
diff --git a/activemq-cpp/src/main/activemq/transport/discovery/AbstractDiscoveryAgentFactory.cpp b/activemq-cpp/src/main/activemq/transport/discovery/AbstractDiscoveryAgentFactory.cpp
deleted file mode 100644
index 6d9e33b..0000000
--- a/activemq-cpp/src/main/activemq/transport/discovery/AbstractDiscoveryAgentFactory.cpp
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * 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.
- */
-
-#include <activemq/transport/discovery/AbstractDiscoveryAgentFactory.h>
-
-#include <activemq/util/URISupport.h>
-#include <activemq/exceptions/ActiveMQException.h>
-
-#include <decaf/lang/Boolean.h>
-#include <decaf/lang/Integer.h>
-#include <decaf/lang/Long.h>
-
-using namespace decaf;
-using namespace decaf::net;
-using namespace decaf::util;
-using namespace decaf::lang;
-using namespace activemq;
-using namespace activemq::util;
-using namespace activemq::exceptions;
-using namespace activemq::transport;
-using namespace activemq::transport::discovery;
-
-////////////////////////////////////////////////////////////////////////////////
-AbstractDiscoveryAgentFactory::~AbstractDiscoveryAgentFactory() {
-}
-
-////////////////////////////////////////////////////////////////////////////////
-Pointer<DiscoveryAgent> AbstractDiscoveryAgentFactory::createAgent(const URI& agentURI) {
-
-    try {
-
-        Pointer<AbstractDiscoveryAgent> agent = this->doCreateAgent();
-
-        agent->setDiscoveryURI(agentURI);
-        Properties options = URISupport::parseParameters(agentURI);
-        doConfigureAgent(agent, options);
-
-        return agent;
-    }
-    AMQ_CATCH_RETHROW(ActiveMQException)
-    AMQ_CATCH_EXCEPTION_CONVERT(Exception, ActiveMQException)
-    AMQ_CATCHALL_THROW(ActiveMQException)
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void AbstractDiscoveryAgentFactory::doConfigureAgent(Pointer<AbstractDiscoveryAgent> agent, const Properties& options) {
-
-    try {
-
-        agent->setKeepAliveInterval(
-            Long::parseLong(options.getProperty("keepAliveInterval", "500")));
-        agent->setMaxReconnectDelay(
-            Long::parseLong(options.getProperty("maxReconnectDelay", "30000")));
-        agent->setUseExponentialBackOff(
-            Boolean::parseBoolean(options.getProperty("useExponentialBackOff", "true")));
-        agent->setBackOffMultiplier(
-            Long::parseLong(options.getProperty("backOffMultiplier", "2")));
-        agent->setMaxReconnectAttempts(
-            Integer::parseInt(options.getProperty("maxReconnectAttempts", "-1")));
-        agent->setInitialReconnectDelay(
-            Long::parseLong(options.getProperty("initialReconnectDelay", "10")));
-        agent->setGroup(options.getProperty("group", "default"));
-        agent->setGroup(options.getProperty("service", ""));
-    }
-    AMQ_CATCH_RETHROW(ActiveMQException)
-    AMQ_CATCH_EXCEPTION_CONVERT(Exception, ActiveMQException)
-    AMQ_CATCHALL_THROW(ActiveMQException)
-}

http://git-wip-us.apache.org/repos/asf/activemq-cpp/blob/e237191d/activemq-cpp/src/main/activemq/transport/discovery/AbstractDiscoveryAgentFactory.h
----------------------------------------------------------------------
diff --git a/activemq-cpp/src/main/activemq/transport/discovery/AbstractDiscoveryAgentFactory.h b/activemq-cpp/src/main/activemq/transport/discovery/AbstractDiscoveryAgentFactory.h
deleted file mode 100644
index 76dfa4a..0000000
--- a/activemq-cpp/src/main/activemq/transport/discovery/AbstractDiscoveryAgentFactory.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * 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_TRANSPORT_DISCOVERY_ABSTRACTDISCOVERYAGENTFACTORY_H_
-#define _ACTIVEMQ_TRANSPORT_DISCOVERY_ABSTRACTDISCOVERYAGENTFACTORY_H_
-
-#include <activemq/util/Config.h>
-
-#include <decaf/lang/Pointer.h>
-#include <decaf/util/Properties.h>
-#include <decaf/net/URI.h>
-
-#include <activemq/transport/discovery/DiscoveryAgentFactory.h>
-#include <activemq/transport/discovery/AbstractDiscoveryAgent.h>
-
-namespace activemq {
-namespace transport {
-namespace discovery {
-
-    class AMQCPP_API AbstractDiscoveryAgentFactory : public DiscoveryAgentFactory {
-    public:
-
-        virtual ~AbstractDiscoveryAgentFactory();
-
-        /**
-         * Provides the implementation of the createAgent method, subclasses should implement the
-         * doCreateAgent method to do the actual agent creation and override the doConfigureAgent if
-         * they have additional URI options that need to be applied before returning the newly
-         * created agent instance.
-         *
-         * @param agentURI
-         *      The URI that describes the agent and any requested configuration changes.
-         *
-         * @return a new DiscoveryAgent instance with all URI options applied.
-         */
-        virtual decaf::lang::Pointer<DiscoveryAgent> createAgent(const decaf::net::URI& agentURI);
-
-    protected:
-
-        /**
-         * Subclasses are required to implement this method and return the correct Agent instance.
-         *
-         * After this method is called by createAgent the configuration method will be invoked to
-         * allow the URI options to be applied.
-         *
-         * @return a Pointer to the newly created discovery agent instance.
-         *
-         * @throws ActiveMQException if an error occurs while creating the agent.
-         */
-        virtual decaf::lang::Pointer<AbstractDiscoveryAgent> doCreateAgent() = 0;
-
-    protected:
-
-        /**
-         * Called from createAgent after the new agent instance has been created.  The default
-         * implementation of this method will configure all the known AbstractDiscoveryAgent
-         * options using the URI options given.  Subclasses can override this method to apply
-         * addition URI options specific to the agent type being created but should also call
-         * this method to ensure that all options are applied.
-         *
-         * @param agent
-         *      The AbstractDiscoveryAgent instance that is to be configured.
-         * @param options
-         *      The Properties object that contians all agent options parsed from the URI.
-         *
-         * @throws ActiveMQException if an error occurs while applying the options.
-         */
-        virtual void doConfigureAgent(decaf::lang::Pointer<AbstractDiscoveryAgent> agent,
-                                      const decaf::util::Properties& options);
-
-    };
-
-}}}
-
-#endif /* _ACTIVEMQ_TRANSPORT_DISCOVERY_ABSTRACTDISCOVERYAGENTFACTORY_H_ */

http://git-wip-us.apache.org/repos/asf/activemq-cpp/blob/e237191d/activemq-cpp/src/main/activemq/transport/discovery/DiscoveredBrokerData.cpp
----------------------------------------------------------------------
diff --git a/activemq-cpp/src/main/activemq/transport/discovery/DiscoveredBrokerData.cpp b/activemq-cpp/src/main/activemq/transport/discovery/DiscoveredBrokerData.cpp
deleted file mode 100644
index 8657760..0000000
--- a/activemq-cpp/src/main/activemq/transport/discovery/DiscoveredBrokerData.cpp
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * 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.
- */
-
-#include "DiscoveredBrokerData.h"
-
-using namespace activemq;
-using namespace activemq::commands;
-using namespace activemq::transport;
-using namespace activemq::transport::discovery;
-
-////////////////////////////////////////////////////////////////////////////////
-DiscoveredBrokerData::DiscoveredBrokerData() : DiscoveryEvent(),
-                                               lastHeartBeatTime(0),
-                                               nextRecoveryTime(0),
-                                               failureCount(0),
-                                               failed(false) {
-}
-
-////////////////////////////////////////////////////////////////////////////////
-DiscoveredBrokerData::DiscoveredBrokerData(const std::string& brokerName, const std::string& service) :
-    DiscoveryEvent(),
-    lastHeartBeatTime(0),
-    nextRecoveryTime(0),
-    failureCount(0),
-    failed(false) {
-
-    setBrokerName(brokerName);
-    setServiceName(service);
-}
-
-////////////////////////////////////////////////////////////////////////////////
-DiscoveredBrokerData::~DiscoveredBrokerData() {
-}

http://git-wip-us.apache.org/repos/asf/activemq-cpp/blob/e237191d/activemq-cpp/src/main/activemq/transport/discovery/DiscoveredBrokerData.h
----------------------------------------------------------------------
diff --git a/activemq-cpp/src/main/activemq/transport/discovery/DiscoveredBrokerData.h b/activemq-cpp/src/main/activemq/transport/discovery/DiscoveredBrokerData.h
deleted file mode 100644
index 6aaf6e7..0000000
--- a/activemq-cpp/src/main/activemq/transport/discovery/DiscoveredBrokerData.h
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * 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_TRANSPORT_DISCOVERY_DISCOVEREDBROKERDATA_H_
-#define _ACTIVEMQ_TRANSPORT_DISCOVERY_DISCOVEREDBROKERDATA_H_
-
-#include <activemq/util/Config.h>
-#include <activemq/commands/DiscoveryEvent.h>
-
-namespace activemq {
-namespace transport {
-namespace discovery {
-
-    /**
-     * Enhanced DiscoveryEvent object used to store additional data about discovered
-     * broker services.
-     *
-     * @since 3.9.0
-     */
-    class AMQCPP_API DiscoveredBrokerData : public activemq::commands::DiscoveryEvent {
-    private:
-
-        long long lastHeartBeatTime;
-        long long nextRecoveryTime;
-        int failureCount;
-        bool failed;
-
-    public:
-
-        DiscoveredBrokerData();
-        DiscoveredBrokerData(const std::string& brokerName, const std::string& service);
-
-        virtual ~DiscoveredBrokerData();
-
-        /**
-         * Gets the time of the last heart best from this Broker
-         *
-         * @return the time of the last received heart beat event from this Broker
-         */
-        long long getLastHeartBeatTime() const {
-            return this->lastHeartBeatTime;
-        }
-
-        /**
-         * Sets the time of the last received heart beat event from this Broker.
-         *
-         * @param lastHeartBeatTime
-         *      Time since last heart beat was received.
-         */
-        void setLastHeartBeatTime(long long lastHeartBeatTime) {
-            this->lastHeartBeatTime = lastHeartBeatTime;
-        }
-
-        /**
-         * @return true is this service has been marked as failed.
-         */
-        bool isFailed() const {
-            return failed;
-        }
-
-        /**
-         * Marks this service as failed.
-         *
-         * @param failed
-         *      Set to true to mark this broker as failed.
-         */
-        void setFailed(bool failed) {
-            this->failed = failed;
-        }
-
-        /**
-         * Gets the number of times that there was a failure contacting this broker.
-         *
-         * @return count of the number of failures of this service.
-         */
-        int getFailureCount() const {
-            return failureCount;
-        }
-
-        /**
-         * Sets the number of failures that are recorded for this service.
-         *
-         * @param failureCount
-         *      The new value of the failure count for this service.
-         */
-        void setFailureCount(int failureCount) {
-            this->failureCount = failureCount;
-        }
-
-        /**
-         * Gets the set time for the next recovery attempt on this service.
-         *
-         * @return the next set time that this service can have a recovery attempt.
-         */
-        long long getNextRecoveryTime() const {
-            return nextRecoveryTime;
-        }
-
-        /**
-         * Sets the next recovery time value for this service.
-         *
-         * @param recoveryTime
-         *      The next time a recovery of this service should be attempted.
-         */
-        void setNextRecoveryTime(long long nextRecoveryTime) {
-            this->nextRecoveryTime = nextRecoveryTime;
-        }
-    };
-
-}}}
-
-#endif /* _ACTIVEMQ_TRANSPORT_DISCOVERY_DISCOVEREDBROKERDATA_H_ */

http://git-wip-us.apache.org/repos/asf/activemq-cpp/blob/e237191d/activemq-cpp/src/main/activemq/transport/discovery/DiscoveryAgent.cpp
----------------------------------------------------------------------
diff --git a/activemq-cpp/src/main/activemq/transport/discovery/DiscoveryAgent.cpp b/activemq-cpp/src/main/activemq/transport/discovery/DiscoveryAgent.cpp
deleted file mode 100644
index d356690..0000000
--- a/activemq-cpp/src/main/activemq/transport/discovery/DiscoveryAgent.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * 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.
- */
-
-#include "DiscoveryAgent.h"
-
-using namespace activemq;
-using namespace activemq::transport;
-using namespace activemq::transport::discovery;
-
-////////////////////////////////////////////////////////////////////////////////
-DiscoveryAgent::~DiscoveryAgent() {
-}

http://git-wip-us.apache.org/repos/asf/activemq-cpp/blob/e237191d/activemq-cpp/src/main/activemq/transport/discovery/DiscoveryAgent.h
----------------------------------------------------------------------
diff --git a/activemq-cpp/src/main/activemq/transport/discovery/DiscoveryAgent.h b/activemq-cpp/src/main/activemq/transport/discovery/DiscoveryAgent.h
deleted file mode 100644
index db1165d..0000000
--- a/activemq-cpp/src/main/activemq/transport/discovery/DiscoveryAgent.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * 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_TRANSPORT_DISCOVERY_DISCOVERYAGENT_H_
-#define _ACTIVEMQ_TRANSPORT_DISCOVERY_DISCOVERYAGENT_H_
-
-#include <activemq/util/Config.h>
-#include <activemq/util/Service.h>
-#include <decaf/net/URI.h>
-#include <decaf/util/Properties.h>
-
-#include <activemq/commands/DiscoveryEvent.h>
-
-namespace activemq {
-namespace transport {
-namespace discovery {
-
-    class DiscoveryListener;
-
-    class AMQCPP_API DiscoveryAgent : public activemq::util::Service {
-    public:
-
-        virtual ~DiscoveryAgent();
-
-        /**
-         * Sets the URI that was used to create this discovery agent.  This URI can
-         * be used to configure the discovery agent.
-         */
-        virtual void setDiscoveryURI(const decaf::net::URI& discoveryURI) = 0;
-
-        /**
-         * Sets the URI that was used to create this discovery agent.  This URI can
-         * be used to configure the discovery agent.
-         */
-        virtual decaf::net::URI getDiscoveryURI() const = 0;
-
-        /**
-         * Sets the discovery listener which will be notified on the add or remove of
-         * a discovered service.
-         *
-         * @param listener
-         *      Pointer to a listener instance that will be notified, or null to reset.
-         */
-        virtual void setDiscoveryListener(DiscoveryListener* listener) = 0;
-
-        /**
-         * Register a service with this DiscoveryAgent.  If the agent supports advertisement
-         * then the new service will be broadcast.
-         *
-         * @param service
-         *      The service to register and advertise.
-         *
-         * @throws IOException if an error occurs.
-         */
-        virtual void registerService(const std::string& name) = 0;
-
-        /**
-         * A process actively using a service may see it go down before the DiscoveryAgent
-         * notices the service's failure.  That process can use this method to notify the
-         * DiscoveryAgent of the failure so that other listeners of this DiscoveryAgent can
-         * also be made aware of the failure.
-         *
-         * @paran event
-         *      A DiscoveryEvent that contains information on the failed service.
-         *
-         * @throws IOException if an error occurs processing the failure event.
-         */
-        virtual void serviceFailed(const activemq::commands::DiscoveryEvent& event) = 0;
-
-        /**
-         * Returns a descriptive string that represents this discovery agent.
-         *
-         * @return a string that descibes this discovery agent.
-         */
-        virtual std::string toString() const = 0;
-
-    };
-
-}}}
-
-#endif /* _ACTIVEMQ_TRANSPORT_DISCOVERY_DISCOVERYAGENT_H_ */

http://git-wip-us.apache.org/repos/asf/activemq-cpp/blob/e237191d/activemq-cpp/src/main/activemq/transport/discovery/DiscoveryAgentFactory.cpp
----------------------------------------------------------------------
diff --git a/activemq-cpp/src/main/activemq/transport/discovery/DiscoveryAgentFactory.cpp b/activemq-cpp/src/main/activemq/transport/discovery/DiscoveryAgentFactory.cpp
deleted file mode 100644
index ccef7d5..0000000
--- a/activemq-cpp/src/main/activemq/transport/discovery/DiscoveryAgentFactory.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * 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.
- */
-
-#include "DiscoveryAgentFactory.h"
-
-using namespace activemq;
-using namespace activemq::transport;
-using namespace activemq::transport::discovery;
-
-////////////////////////////////////////////////////////////////////////////////
-DiscoveryAgentFactory::~DiscoveryAgentFactory() {
-}

http://git-wip-us.apache.org/repos/asf/activemq-cpp/blob/e237191d/activemq-cpp/src/main/activemq/transport/discovery/DiscoveryAgentFactory.h
----------------------------------------------------------------------
diff --git a/activemq-cpp/src/main/activemq/transport/discovery/DiscoveryAgentFactory.h b/activemq-cpp/src/main/activemq/transport/discovery/DiscoveryAgentFactory.h
deleted file mode 100644
index 302e476..0000000
--- a/activemq-cpp/src/main/activemq/transport/discovery/DiscoveryAgentFactory.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * 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_TRANSPORT_DISCOVERY_DISCOVERYAGENTFACTORY_H_
-#define _ACTIVEMQ_TRANSPORT_DISCOVERY_DISCOVERYAGENTFACTORY_H_
-
-#include <activemq/util/Config.h>
-
-#include <decaf/lang/Pointer.h>
-#include <decaf/net/URI.h>
-
-#include <activemq/transport/discovery/DiscoveryAgent.h>
-
-namespace activemq {
-namespace transport {
-namespace discovery {
-
-    /**
-     * Factory class for creating discovery agents.  All agents are required to
-     * provide a factory class that can be registered in the DiscoveryAgentRegistry.
-     *
-     * @since 3.9.0
-     */
-    class AMQCPP_API DiscoveryAgentFactory {
-    public:
-
-        virtual ~DiscoveryAgentFactory();
-
-        /**
-         * Creates and returns a new DiscoveryAgentFactory instance that can be used to
-         * create the agent referred to in the given URI.  The factory should apply all
-         * configuration options to the agent prior to returning it.
-         *
-         * @param agentURI
-         *      The URI that defines the agent to create along with it configuration options.
-         *
-         * @return a new DiscoveryAgent instance for the given URI.
-         *
-         * @throws IOException if an error occurs creating the given agent.
-         */
-        virtual decaf::lang::Pointer<DiscoveryAgent> createAgent(const decaf::net::URI& agentURI) = 0;
-
-    };
-
-}}}
-
-#endif /* _ACTIVEMQ_TRANSPORT_DISCOVERY_DISCOVERYAGENTFACTORY_H_ */

http://git-wip-us.apache.org/repos/asf/activemq-cpp/blob/e237191d/activemq-cpp/src/main/activemq/transport/discovery/DiscoveryAgentRegistry.cpp
----------------------------------------------------------------------
diff --git a/activemq-cpp/src/main/activemq/transport/discovery/DiscoveryAgentRegistry.cpp b/activemq-cpp/src/main/activemq/transport/discovery/DiscoveryAgentRegistry.cpp
deleted file mode 100644
index 17bb845..0000000
--- a/activemq-cpp/src/main/activemq/transport/discovery/DiscoveryAgentRegistry.cpp
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * 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.
- */
-
-#include "DiscoveryAgentRegistry.h"
-
-#include <activemq/exceptions/ActiveMQException.h>
-#include <activemq/transport/discovery/DiscoveryAgentFactory.h>
-
-using namespace std;
-using namespace activemq;
-using namespace activemq::exceptions;
-using namespace activemq::transport;
-using namespace activemq::transport::discovery;
-using namespace decaf;
-using namespace decaf::util;
-using namespace decaf::lang;
-using namespace decaf::lang::exceptions;
-
-////////////////////////////////////////////////////////////////////////////////
-namespace {
-    DiscoveryAgentRegistry* theOnlyInstance;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-DiscoveryAgentRegistry::DiscoveryAgentRegistry() : registry() {
-}
-
-////////////////////////////////////////////////////////////////////////////////
-DiscoveryAgentRegistry::~DiscoveryAgentRegistry() {
-    try {
-        this->unregisterAllFactories();
-    }
-    AMQ_CATCHALL_NOTHROW()
-}
-
-////////////////////////////////////////////////////////////////////////////////
-DiscoveryAgentFactory* DiscoveryAgentRegistry::findFactory(const std::string& name) const {
-
-    if (!this->registry.containsKey(name)) {
-        throw NoSuchElementException(__FILE__, __LINE__,
-            "No Matching Factory Registered for format := %s", name.c_str());
-    }
-
-    return this->registry.get(name);
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void DiscoveryAgentRegistry::registerFactory(const std::string& name, DiscoveryAgentFactory* factory) {
-
-    if (name == "") {
-        throw IllegalArgumentException(__FILE__, __LINE__, "DiscoveryAgentFactory name cannot be the empty string");
-    }
-
-    if (factory == NULL) {
-        throw NullPointerException(__FILE__, __LINE__, "Supplied DiscoveryAgentFactory pointer was NULL");
-    }
-
-    this->registry.put(name, factory);
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void DiscoveryAgentRegistry::unregisterFactory(const std::string& name) {
-    if (this->registry.containsKey(name)) {
-        delete this->registry.get(name);
-        this->registry.remove(name);
-    }
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void DiscoveryAgentRegistry::unregisterAllFactories() {
-
-    Pointer<Iterator<DiscoveryAgentFactory*> > iterator(this->registry.values().iterator());
-    while (iterator->hasNext()) {
-        delete iterator->next();
-    }
-
-    this->registry.clear();
-}
-
-////////////////////////////////////////////////////////////////////////////////
-std::vector<std::string> DiscoveryAgentRegistry::getAgentNames() const {
-    return this->registry.keySet().toArray();
-}
-
-////////////////////////////////////////////////////////////////////////////////
-DiscoveryAgentRegistry& DiscoveryAgentRegistry::getInstance() {
-    return *theOnlyInstance;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void DiscoveryAgentRegistry::initialize() {
-    theOnlyInstance = new DiscoveryAgentRegistry();
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void DiscoveryAgentRegistry::shutdown() {
-    theOnlyInstance->unregisterAllFactories();
-    delete theOnlyInstance;
-    theOnlyInstance = NULL;
-}

http://git-wip-us.apache.org/repos/asf/activemq-cpp/blob/e237191d/activemq-cpp/src/main/activemq/transport/discovery/DiscoveryAgentRegistry.h
----------------------------------------------------------------------
diff --git a/activemq-cpp/src/main/activemq/transport/discovery/DiscoveryAgentRegistry.h b/activemq-cpp/src/main/activemq/transport/discovery/DiscoveryAgentRegistry.h
deleted file mode 100644
index bf680b7..0000000
--- a/activemq-cpp/src/main/activemq/transport/discovery/DiscoveryAgentRegistry.h
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * 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_TRANSPORT_DISCOVERY_DISCOVERYAGENTREGISTRY_H_
-#define _ACTIVEMQ_TRANSPORT_DISCOVERY_DISCOVERYAGENTREGISTRY_H_
-
-#include <activemq/util/Config.h>
-
-#include <string>
-#include <vector>
-
-#include <decaf/util/StlMap.h>
-
-namespace activemq {
-namespace library {
-    class ActiveMQCPP;
-}
-namespace transport {
-namespace discovery {
-
-    class DiscoveryAgentFactory;
-
-    /**
-     * Registry of all Discovery Agent Factories that are available to the client
-     * at runtime.  New Agents must have a factory registered here before an attempt
-     * to create a DiscoveryTansport which uses that agent.
-     *
-     * @since 3.9.0
-     */
-    class AMQCPP_API DiscoveryAgentRegistry {
-    private:
-
-        decaf::util::StlMap<std::string, DiscoveryAgentFactory*> registry;
-
-    private:
-
-        DiscoveryAgentRegistry();
-        DiscoveryAgentRegistry(const DiscoveryAgentRegistry& registry);
-        DiscoveryAgentRegistry& operator=(const DiscoveryAgentRegistry& registry);
-
-    public:
-
-        virtual ~DiscoveryAgentRegistry();
-
-        /**
-         * Gets a Registered DiscoveryAgentFactory from the Registry and returns it
-         * if there is not a registered format factory with the given name an exception
-         * is thrown.
-         *
-         * @param name
-         *        The name of the Factory to find in the Registry.
-         *
-         * @return the Factory registered under the given name.
-         *
-         * @throws NoSuchElementException if no factory is registered with that name.
-         */
-        DiscoveryAgentFactory* findFactory(const std::string& name) const;
-
-        /**
-         * Registers a new DiscoveryAgentFactory with this Registry.  If a Factory with the
-         * given name is already registered it is overwritten with the new one.  Once a
-         * factory is added to the Registry its lifetime is controlled by the Registry, it
-         * will be deleted once the Registry has been deleted.
-         *
-         * @param name
-         *        The name of the new Factory to register.
-         * @param factory
-         *        The new Factory to add to the Registry.
-         *
-         * @throws IllegalArgumentException is name is the empty string.
-         * @throws NullPointerException if the Factory is Null.
-         */
-        void registerFactory(const std::string& name, DiscoveryAgentFactory* factory);
-
-        /**
-         * Unregisters the Factory with the given name and deletes that instance of the
-         * Factory.
-         *
-         * @param name
-         *        Name of the Factory to unregister and destroy
-         */
-        void unregisterFactory(const std::string& name);
-
-        /**
-         * Removes all Factories and deletes the instances of the Factory objects.
-         */
-        void unregisterAllFactories();
-
-        /**
-         * Retrieves a list of the names of all the Registered Agents in this
-         * Registry.
-         *
-         * @return stl vector of strings with all the Agent names registered.
-         */
-        std::vector<std::string> getAgentNames() const;
-
-    public:
-
-        /**
-         * Gets the single instance of the TransportRegistry
-         * @return reference to the single instance of this Registry
-         */
-        static DiscoveryAgentRegistry& getInstance();
-
-    private:
-
-        static void initialize();
-        static void shutdown();
-
-        friend class activemq::library::ActiveMQCPP;
-
-    };
-
-}}}
-
-#endif /* _ACTIVEMQ_TRANSPORT_DISCOVERY_DISCOVERYAGENTREGISTRY_H_ */

http://git-wip-us.apache.org/repos/asf/activemq-cpp/blob/e237191d/activemq-cpp/src/main/activemq/transport/discovery/DiscoveryListener.cpp
----------------------------------------------------------------------
diff --git a/activemq-cpp/src/main/activemq/transport/discovery/DiscoveryListener.cpp b/activemq-cpp/src/main/activemq/transport/discovery/DiscoveryListener.cpp
deleted file mode 100644
index a260fe7..0000000
--- a/activemq-cpp/src/main/activemq/transport/discovery/DiscoveryListener.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * 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.
- */
-
-#include "DiscoveryListener.h"
-
-using namespace activemq;
-using namespace activemq::transport;
-using namespace activemq::transport::discovery;
-
-////////////////////////////////////////////////////////////////////////////////
-DiscoveryListener::~DiscoveryListener() {
-}

http://git-wip-us.apache.org/repos/asf/activemq-cpp/blob/e237191d/activemq-cpp/src/main/activemq/transport/discovery/DiscoveryListener.h
----------------------------------------------------------------------
diff --git a/activemq-cpp/src/main/activemq/transport/discovery/DiscoveryListener.h b/activemq-cpp/src/main/activemq/transport/discovery/DiscoveryListener.h
deleted file mode 100644
index 461d8a3..0000000
--- a/activemq-cpp/src/main/activemq/transport/discovery/DiscoveryListener.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * 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_TRANSPORT_DISCOVERY_DISCOVERYLISTENER_H_
-#define _ACTIVEMQ_TRANSPORT_DISCOVERY_DISCOVERYLISTENER_H_
-
-#include <activemq/util/Config.h>
-
-#include <activemq/commands/DiscoveryEvent.h>
-
-namespace activemq {
-namespace transport {
-namespace discovery {
-
-    class AMQCPP_API DiscoveryListener {
-    public:
-
-        virtual ~DiscoveryListener();
-
-        /**
-         * Called when an discovery agent becomes aware of a new service.
-         *
-         * @param event
-         *      A DiscoveryEvent that contains information on the newly discovered service.
-         */
-        virtual void onServiceAdd(const activemq::commands::DiscoveryEvent* event) = 0;
-
-        /**
-         * Called when an discovery agent determines that a service is no longer available.
-         *
-         * @param event
-         *      A DiscoveryEvent that contains information on the removed service.
-         */
-        virtual void onServiceRemove(const activemq::commands::DiscoveryEvent* event) = 0;
-
-    };
-
-}}}
-
-#endif /* _ACTIVEMQ_TRANSPORT_DISCOVERY_DISCOVERYLISTENER_H_ */

http://git-wip-us.apache.org/repos/asf/activemq-cpp/blob/e237191d/activemq-cpp/src/main/activemq/transport/discovery/DiscoveryTransport.cpp
----------------------------------------------------------------------
diff --git a/activemq-cpp/src/main/activemq/transport/discovery/DiscoveryTransport.cpp b/activemq-cpp/src/main/activemq/transport/discovery/DiscoveryTransport.cpp
deleted file mode 100644
index 731957e..0000000
--- a/activemq-cpp/src/main/activemq/transport/discovery/DiscoveryTransport.cpp
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
- * 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.
- */
-
-#include "DiscoveryTransport.h"
-
-#include <activemq/util/URISupport.h>
-#include <activemq/util/Suspendable.h>
-#include <activemq/exceptions/ActiveMQException.h>
-
-#include <decaf/util/HashMap.h>
-#include <decaf/util/StlMap.h>
-#include <decaf/util/Properties.h>
-#include <decaf/util/concurrent/Mutex.h>
-#include <decaf/net/URISyntaxException.h>
-#include <decaf/lang/exceptions/NullPointerException.h>
-
-using namespace decaf;
-using namespace decaf::util;
-using namespace decaf::util::concurrent;
-using namespace decaf::io;
-using namespace decaf::net;
-using namespace decaf::lang;
-using namespace decaf::lang::exceptions;
-using namespace activemq;
-using namespace activemq::commands;
-using namespace activemq::exceptions;
-using namespace activemq::util;
-using namespace activemq::transport;
-using namespace activemq::transport::discovery;
-
-////////////////////////////////////////////////////////////////////////////////
-const std::string DiscoveryTransport::DISCOVERED_OPTION_PREFIX = "discovered.";
-
-////////////////////////////////////////////////////////////////////////////////
-namespace activemq {
-namespace transport {
-namespace discovery {
-
-    class DiscoveryTransportData {
-    public:
-
-        Pointer<CompositeTransport> next;
-        Pointer<DiscoveryAgent> agent;
-        StlMap<std::string, URI> serviceURIs;
-        Properties parameters;
-        Mutex lock;
-
-    private:
-
-        DiscoveryTransportData(const DiscoveryTransportData&);
-        DiscoveryTransportData& operator= (const DiscoveryTransportData&);
-
-    public:
-
-        DiscoveryTransportData() : next(), agent(), serviceURIs(), parameters(), lock() {}
-    };
-
-}}}
-
-////////////////////////////////////////////////////////////////////////////////
-DiscoveryTransport::DiscoveryTransport(Pointer<CompositeTransport> next) :
-    TransportFilter(next), impl(new DiscoveryTransportData) {
-}
-
-////////////////////////////////////////////////////////////////////////////////
-DiscoveryTransport::~DiscoveryTransport() {
-    try {
-        this->close();
-    }
-    AMQ_CATCHALL_NOTHROW()
-    try {
-        delete this->impl;
-    }
-    AMQ_CATCHALL_NOTHROW()
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void DiscoveryTransport::start() {
-    if (this->impl->agent == NULL) {
-        throw IllegalStateException(__FILE__, __LINE__, "discoveryAgent not configured");
-    }
-
-    // lets pass into the agent the broker name and connection details
-    this->impl->agent->setDiscoveryListener(this);
-    this->impl->agent->start();
-
-    TransportFilter::start();
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void DiscoveryTransport::stop() {
-
-    try {
-        IOException error;
-        bool hasException = false;
-
-        try {
-            this->impl->agent->stop();
-        } catch (IOException& ex) {
-            error = ex;
-            error.setMark(__FILE__, __LINE__);
-            hasException = true;
-        }
-
-        try {
-            TransportFilter::stop();
-        } catch (IOException& ex) {
-            if (!hasException) {
-                error = ex;
-                error.setMark(__FILE__, __LINE__);
-                hasException = true;
-            }
-        }
-
-        if (hasException) {
-            throw error;
-        }
-    }
-    AMQ_CATCH_RETHROW(IOException)
-    AMQ_CATCH_EXCEPTION_CONVERT(Exception, IOException)
-    AMQ_CATCHALL_THROW(IOException)
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void DiscoveryTransport::doClose() {
-    try {
-        this->impl->next.reset(NULL);
-    }
-    AMQ_CATCH_RETHROW(IOException)
-    AMQ_CATCH_EXCEPTION_CONVERT(Exception, IOException)
-    AMQ_CATCHALL_THROW(IOException)
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void DiscoveryTransport::setDiscoveryAgent(decaf::lang::Pointer<DiscoveryAgent> agent) {
-    if (agent == NULL) {
-        throw NullPointerException(__FILE__, __LINE__, "DiscoveryAgent required to be non-null");
-    }
-
-    this->impl->agent = agent;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-Pointer<DiscoveryAgent> DiscoveryTransport::getDiscoveryAgent() const {
-    return this->impl->agent;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void DiscoveryTransport::setParameters(const Properties& properties) {
-    this->impl->parameters = properties;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-Properties DiscoveryTransport::getParameters() const {
-    return this->impl->parameters;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void DiscoveryTransport::onServiceAdd(const DiscoveryEvent* event) {
-    std::string url = event->getServiceName();
-    if (!url.empty()) {
-        try {
-            URI uri(url);
-            uri = URISupport::applyParameters(uri, this->impl->parameters, DISCOVERED_OPTION_PREFIX);
-            synchronized(&this->impl->lock) {
-                this->impl->serviceURIs.put(event->getServiceName(), uri);
-            }
-            LinkedList<URI> uris;
-            uris.add(uri);
-            this->impl->next->addURI(false, uris);
-        } catch (URISyntaxException& e) {
-        }
-    }
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void DiscoveryTransport::onServiceRemove(const DiscoveryEvent* event) {
-    try {
-        URI uri;
-        synchronized(&this->impl->lock) {
-            uri = this->impl->serviceURIs.get(event->getServiceName());
-        }
-        LinkedList<URI> uris;
-        uris.add(uri);
-        this->impl->next->removeURI(false, uris);
-    } catch (NoSuchElementException& e) {}
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void DiscoveryTransport::transportInterrupted() {
-
-    Pointer<Suspendable> suspendable;
-    try {
-        suspendable = this->impl->next.dynamicCast<Suspendable>();
-        suspendable->resume();
-    } catch (ClassCastException& e) {
-        // Not a Suspendable instance.
-    } catch (Exception& e) {
-        // Failed to Resume
-    }
-
-    TransportFilter::transportInterrupted();
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void DiscoveryTransport::transportResumed() {
-    Pointer<Suspendable> suspendable;
-    try {
-        suspendable = this->impl->next.dynamicCast<Suspendable>();
-        suspendable->suspend();
-    } catch (ClassCastException& e) {
-        // Not a Suspendable instance.
-    } catch (Exception& e) {
-        // Failed to Suspend
-    }
-
-    TransportFilter::transportResumed();
-}