summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Smith <git@kismith.co.uk>2010-03-19 09:17:18 (GMT)
committerKevin Smith <git@kismith.co.uk>2010-03-19 15:10:33 (GMT)
commit580d3d49ea3df7bb1c00cb1052203d17ccaa9a8e (patch)
treec823ef404a7a70c261248c41530827caab07fc52 /Swift/Controllers/EventController.cpp
parent5d9a6702c244eb4ab30ce96465d9deceedfe955a (diff)
downloadswift-580d3d49ea3df7bb1c00cb1052203d17ccaa9a8e.zip
swift-580d3d49ea3df7bb1c00cb1052203d17ccaa9a8e.tar.bz2
Start of event viewer.
Creates a basic event viewer framework, and plugs it into the Swift controllers, so that messages are displayed (in a very ugly way). Still a long way to go.
Diffstat (limited to 'Swift/Controllers/EventController.cpp')
-rw-r--r--Swift/Controllers/EventController.cpp17
1 files changed, 11 insertions, 6 deletions
diff --git a/Swift/Controllers/EventController.cpp b/Swift/Controllers/EventController.cpp
index 5141cc1..3849aa7 100644
--- a/Swift/Controllers/EventController.cpp
+++ b/Swift/Controllers/EventController.cpp
@@ -3,18 +3,23 @@
#include <boost/bind.hpp>
#include <algorithm>
+
namespace Swift {
-void EventController::handleIncomingEvent(boost::shared_ptr<MessageEvent> event) {
- if (event->isReadable()) {
- events_.push_back(event);
- event->onRead.connect(boost::bind(&EventController::handleEventRead, this, event));
+EventController::EventController() {
+}
+
+void EventController::handleIncomingEvent(boost::shared_ptr<Event> sourceEvent) {
+ boost::shared_ptr<MessageEvent> messageEvent = boost::dynamic_pointer_cast<MessageEvent>(sourceEvent);
+ if (messageEvent && messageEvent->isReadable()) {
+ events_.push_back(sourceEvent);
+ messageEvent->onConclusion.connect(boost::bind(&EventController::handleEventConcluded, this, messageEvent));
onEventQueueLengthChange(events_.size());
- onEventQueueEventAdded(event);
+ onEventQueueEventAdded(sourceEvent);
}
}
-void EventController::handleEventRead(boost::shared_ptr<MessageEvent> event) {
+void EventController::handleEventConcluded(boost::shared_ptr<Event> event) {
events_.erase(std::remove(events_.begin(), events_.end(), event), events_.end());
onEventQueueLengthChange(events_.size());
}