diff options
author | Remko Tronçon <git@el-tramo.be> | 2009-07-15 18:07:44 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2009-07-15 18:07:44 (GMT) |
commit | f061668e3c1d5eac01b85303e2c81df2bc560e9a (patch) | |
tree | de56afe6d93cb36425f7c2e458575d27bd9105a4 /Swiften/EventLoop | |
parent | 0930cd940963be0edfe7c80b4925babca0e01443 (diff) | |
download | swift-contrib-f061668e3c1d5eac01b85303e2c81df2bc560e9a.zip swift-contrib-f061668e3c1d5eac01b85303e2c81df2bc560e9a.tar.bz2 |
Make stream stack layers reference counted.
Diffstat (limited to 'Swiften/EventLoop')
-rw-r--r-- | Swiften/EventLoop/MainEventLoop.h | 2 | ||||
-rw-r--r-- | Swiften/EventLoop/UnitTest/EventLoopTest.cpp | 18 | ||||
-rw-r--r-- | Swiften/EventLoop/UnitTest/SimpleEventLoopTest.cpp | 4 |
3 files changed, 14 insertions, 10 deletions
diff --git a/Swiften/EventLoop/MainEventLoop.h b/Swiften/EventLoop/MainEventLoop.h index 0046546..fbb7079 100644 --- a/Swiften/EventLoop/MainEventLoop.h +++ b/Swiften/EventLoop/MainEventLoop.h @@ -19,7 +19,7 @@ namespace Swift { * If the owner is destroyed, all events should be removed from the * loop using removeEventsFromOwner(). */ - static void postEvent(boost::function<void ()> event, boost::shared_ptr<EventOwner> owner = 0); + static void postEvent(boost::function<void ()> event, boost::shared_ptr<EventOwner> owner = boost::shared_ptr<EventOwner>()); static void removeEventsFromOwner(boost::shared_ptr<EventOwner> owner); diff --git a/Swiften/EventLoop/UnitTest/EventLoopTest.cpp b/Swiften/EventLoop/UnitTest/EventLoopTest.cpp index c64d1ad..9475ac9 100644 --- a/Swiften/EventLoop/UnitTest/EventLoopTest.cpp +++ b/Swiften/EventLoop/UnitTest/EventLoopTest.cpp @@ -3,6 +3,7 @@ #include <boost/thread.hpp> #include <boost/bind.hpp> +#include "Swiften/EventLoop/EventOwner.h" #include "Swiften/EventLoop/SimpleEventLoop.h" #include "Swiften/Base/sleep.h" @@ -25,8 +26,8 @@ class EventLoopTest : public CppUnit::TestFixture void testPost() { SimpleEventLoop testling; - testling.postEvent(boost::bind(&EventLoopTest::logEvent, this, 1), 0); - testling.postEvent(boost::bind(&EventLoopTest::logEvent, this, 2), 0); + testling.postEvent(boost::bind(&EventLoopTest::logEvent, this, 1)); + testling.postEvent(boost::bind(&EventLoopTest::logEvent, this, 2)); testling.stop(); testling.run(); @@ -37,12 +38,14 @@ class EventLoopTest : public CppUnit::TestFixture void testRemove() { SimpleEventLoop testling; + boost::shared_ptr<MyEventOwner> eventOwner1(new MyEventOwner()); + boost::shared_ptr<MyEventOwner> eventOwner2(new MyEventOwner()); - testling.postEvent(boost::bind(&EventLoopTest::logEvent, this, 1), &testling); - testling.postEvent(boost::bind(&EventLoopTest::logEvent, this, 2), this); - testling.postEvent(boost::bind(&EventLoopTest::logEvent, this, 3), &testling); - testling.postEvent(boost::bind(&EventLoopTest::logEvent, this, 4), this); - testling.removeEventsFromOwner(this); + testling.postEvent(boost::bind(&EventLoopTest::logEvent, this, 1), eventOwner1); + testling.postEvent(boost::bind(&EventLoopTest::logEvent, this, 2), eventOwner2); + testling.postEvent(boost::bind(&EventLoopTest::logEvent, this, 3), eventOwner1); + testling.postEvent(boost::bind(&EventLoopTest::logEvent, this, 4), eventOwner2); + testling.removeEventsFromOwner(eventOwner2); testling.stop(); testling.run(); @@ -52,6 +55,7 @@ class EventLoopTest : public CppUnit::TestFixture } private: + struct MyEventOwner : public EventOwner {}; void logEvent(int i) { events_.push_back(i); } diff --git a/Swiften/EventLoop/UnitTest/SimpleEventLoopTest.cpp b/Swiften/EventLoop/UnitTest/SimpleEventLoopTest.cpp index a39aa9a..b6c2da8 100644 --- a/Swiften/EventLoop/UnitTest/SimpleEventLoopTest.cpp +++ b/Swiften/EventLoop/UnitTest/SimpleEventLoopTest.cpp @@ -32,7 +32,7 @@ class SimpleEventLoopTest : public CppUnit::TestFixture void testPostFromMainThread() { SimpleEventLoop testling; - testling.postEvent(boost::bind(&SimpleEventLoopTest::incrementCounterAndStop, this, &testling), 0); + testling.postEvent(boost::bind(&SimpleEventLoopTest::incrementCounterAndStop, this, &testling)); testling.run(); CPPUNIT_ASSERT_EQUAL(1, counter_); @@ -42,7 +42,7 @@ class SimpleEventLoopTest : public CppUnit::TestFixture void runIncrementingThread(SimpleEventLoop* loop) { for (unsigned int i = 0; i < 10; ++i) { Swift::sleep(1); - loop->postEvent(boost::bind(&SimpleEventLoopTest::incrementCounter, this), 0); + loop->postEvent(boost::bind(&SimpleEventLoopTest::incrementCounter, this)); } loop->stop(); } |