From 53247faba484516d9c468b7ae7f514f32541295a Mon Sep 17 00:00:00 2001 From: Gordon Sim Date: Fri, 7 Nov 2008 14:08:29 +0000 Subject: * Added some doxygen comments for FailoverManager * Added means for application to alter the order in which urls are tried (or indeed the list of urls to try) git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@712127 13f79535-47bb-0310-9956-ffa450edef68 --- qpid/cpp/examples/failover/resuming_receiver.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'qpid/cpp/examples/failover/resuming_receiver.cpp') diff --git a/qpid/cpp/examples/failover/resuming_receiver.cpp b/qpid/cpp/examples/failover/resuming_receiver.cpp index 3c1df92ed1..d1886ce861 100644 --- a/qpid/cpp/examples/failover/resuming_receiver.cpp +++ b/qpid/cpp/examples/failover/resuming_receiver.cpp @@ -35,13 +35,16 @@ using namespace qpid::framing; using namespace std; -class Listener : public MessageListener, public FailoverManager::Command +class Listener : public MessageListener, + public FailoverManager::Command, + public FailoverManager::ReconnectionStrategy { public: Listener(); void received(Message& message); void execute(AsyncSession& session, bool isRetry); void check(); + void editUrlList(std::vector& urls); private: Subscription subscription; uint count; @@ -90,14 +93,23 @@ void Listener::execute(AsyncSession& session, bool isRetry) subs.run(); } +void Listener::editUrlList(std::vector& urls) +{ + /** + * A more realistic algorithm would be to search through the list + * for prefered hosts and ensure they come first in the list. + */ + if (urls.size() > 1) std::rotate(urls.begin(), urls.begin() + 1, urls.end()); +} + int main(int argc, char ** argv) { ConnectionSettings settings; if (argc > 1) settings.host = argv[1]; if (argc > 2) settings.port = atoi(argv[2]); - FailoverManager connection(settings); Listener listener; + FailoverManager connection(settings, &listener); try { connection.execute(listener); -- cgit v1.2.1