From 9f66fbe2099558c08b2f10c03262c4ad220f0ec3 Mon Sep 17 00:00:00 2001 From: Philip Rauwolf Date: Wed, 7 Aug 2013 14:54:45 +0200 Subject: [PATCH] Fixed Demo Mainloop Conflicts: src/test/DemoMainLoop.h --- src/test/DBusProxyTest.cpp | 8 ++++++++ src/test/DemoMainLoop.h | 32 +++++++++++++++----------------- 2 files changed, 23 insertions(+), 17 deletions(-) diff --git a/src/test/DBusProxyTest.cpp b/src/test/DBusProxyTest.cpp index a45f6f2..3fc2c23 100644 --- a/src/test/DBusProxyTest.cpp +++ b/src/test/DBusProxyTest.cpp @@ -8,6 +8,10 @@ #define _GLIBCXX_USE_NANOSLEEP #endif +#ifndef COMMONAPI_INTERNAL_COMPILATION +#define COMMONAPI_INTERNAL_COMPILATION +#endif + #include #include #include @@ -18,6 +22,10 @@ #include #include +#ifndef COMMONAPI_INTERNAL_COMPILATION +#define COMMONAPI_INTERNAL_COMPILATION +#endif + #include "DBusTestUtils.h" #include diff --git a/src/test/DemoMainLoop.h b/src/test/DemoMainLoop.h index 4cbf47a..335c102 100644 --- a/src/test/DemoMainLoop.h +++ b/src/test/DemoMainLoop.h @@ -9,7 +9,11 @@ #define DEMO_MAIN_LOOP_H_ +#if !defined (COMMONAPI_INTERNAL_COMPILATION) +#define COMMONAPI_INTERNAL_COMPILATION +#endif #include +#undef COMMONAPI_INTERNAL_COMPILATION #include #include @@ -63,7 +67,10 @@ class MainLoop { } /** - * The given timeout will be overridden if a timeout-event is present that defines an earlier ready time. + * \brief Runs the mainloop indefinitely until stop() is called. + * + * Runs the mainloop indefinitely until stop() is called. The given timeout (milliseconds) + * will be overridden if a timeout-event is present that defines an earlier ready time. */ void run(const int64_t& timeoutInterval = TIMEOUT_INFINITE) { running_ = true; @@ -142,7 +149,7 @@ class MainLoop { (*fileDescriptor).revents = 0; } - auto numReadyFileDescriptors = ::poll(&(managedFileDescriptors_[0]), managedFileDescriptors_.size(), currentMinimalTimeoutInterval_); + size_t numReadyFileDescriptors = ::poll(&(managedFileDescriptors_[0]), managedFileDescriptors_.size(), currentMinimalTimeoutInterval_); // If no FileDescriptors are ready, poll returned because of a timeout that has expired. // The only case in which this is not the reason is when the timeout handed in "prepare" @@ -170,14 +177,14 @@ class MainLoop { bool check() { //The first file descriptor always is the loop's wakeup-descriptor. All others need to be linked to a watch. for (auto fileDescriptor = managedFileDescriptors_.begin() + 1; fileDescriptor != managedFileDescriptors_.end(); ++fileDescriptor) { - for(auto registeredWatchIterator = registeredWatches_.begin(); + for (auto registeredWatchIterator = registeredWatches_.begin(); registeredWatchIterator != registeredWatches_.end(); registeredWatchIterator++) { const auto& correspondingWatchPriority = registeredWatchIterator->first; const auto& correspondingWatchPair = registeredWatchIterator->second; if (std::get<0>(correspondingWatchPair) == fileDescriptor->fd && fileDescriptor->revents) { - watchesToDispatch_.insert( { correspondingWatchPriority, {std::get<1>(correspondingWatchPair), fileDescriptor->revents} } ); + watchesToDispatch_.insert( { correspondingWatchPriority, {std::get<1>(correspondingWatchPair)} } ); } } } @@ -201,18 +208,9 @@ class MainLoop { for (auto watchIterator = watchesToDispatch_.begin(); watchIterator != watchesToDispatch_.end(); watchIterator++) { - Watch* watch = std::get<0>(watchIterator->second); - const unsigned int flags = std::get<1>(watchIterator->second); - const auto& dependentSources = watch->getDependentDispatchSources(); + Watch* watch = watchIterator->second; + const unsigned int flags = 7; watch->dispatch(flags); - - for (auto dependentSourceIterator = dependentSources.begin(); - dependentSourceIterator != dependentSources.end(); - dependentSourceIterator++) { - if((*dependentSourceIterator)->check()) { - sourcesToDispatch_.insert( {watchIterator->first, *dependentSourceIterator} ); - } - } } breakLoop_ = false; @@ -276,7 +274,7 @@ class MainLoop { watchIterator != registeredWatches_.end(); watchIterator++) { - if(watchIterator->second.first == watch->getAssociatedFileDescriptor().fd) { + if(watchIterator->second.second == watch) { registeredWatches_.erase(watchIterator); break; } @@ -313,7 +311,7 @@ class MainLoop { std::multimap registeredTimeouts_; std::set> sourcesToDispatch_; - std::set>> watchesToDispatch_; + std::set> watchesToDispatch_; std::set> timeoutsToDispatch_; DispatchSourceListenerSubscription dispatchSourceListenerSubscription_; -- 2.7.4