summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMatthias Schiffer <matthias@gamezock.de>2008-06-27 12:48:28 +0200
committerMatthias Schiffer <matthias@gamezock.de>2008-06-27 12:48:28 +0200
commitb143406a05a1698df5b88b0d4298362a9c8c080b (patch)
treeeccf462dcc655073ae6833107fdecc8b5e22bf73 /src
parent86c1806046dea0bf7c2525d0aa591cdae9b3d330 (diff)
downloadmad-b143406a05a1698df5b88b0d4298362a9c8c080b.tar
mad-b143406a05a1698df5b88b0d4298362a9c8c080b.zip
Korrekte Behandlung des Poll-Timeouts
Diffstat (limited to 'src')
-rw-r--r--src/Core/ConnectionManager.cpp2
-rw-r--r--src/Core/ConnectionManager.h4
-rw-r--r--src/mad-core.cpp4
-rw-r--r--src/madc.cpp8
4 files changed, 10 insertions, 8 deletions
diff --git a/src/Core/ConnectionManager.cpp b/src/Core/ConnectionManager.cpp
index ba78a98..b338f62 100644
--- a/src/Core/ConnectionManager.cpp
+++ b/src/Core/ConnectionManager.cpp
@@ -90,6 +90,8 @@ ConnectionManager::ConnectionManager() {
catch(Net::Exception &e) {
// TODO: Log error
}
+
+ refreshPollfds();
}
ConnectionManager::~ConnectionManager() {
diff --git a/src/Core/ConnectionManager.h b/src/Core/ConnectionManager.h
index b252910..cbfc812 100644
--- a/src/Core/ConnectionManager.h
+++ b/src/Core/ConnectionManager.h
@@ -59,8 +59,8 @@ class ConnectionManager {
ConnectionManager();
virtual ~ConnectionManager();
- void wait(int timeout) {
- poll(pollfds.data(), pollfds.size(), timeout);
+ bool wait(int timeout) {
+ return (poll(pollfds.data(), pollfds.size(), timeout) > 0);
}
void run();
diff --git a/src/mad-core.cpp b/src/mad-core.cpp
index 461f595..c46b932 100644
--- a/src/mad-core.cpp
+++ b/src/mad-core.cpp
@@ -26,8 +26,8 @@ int main() {
Mad::Core::ConnectionManager connectionManager;
while(true) {
- connectionManager.run();
- connectionManager.wait(10000);
+ if(connectionManager.wait(10000))
+ connectionManager.run();
}
Mad::Net::Connection::deinit();
diff --git a/src/madc.cpp b/src/madc.cpp
index 8104d0b..aaf7197 100644
--- a/src/madc.cpp
+++ b/src/madc.cpp
@@ -33,8 +33,8 @@ int main() {
while(connection.isConnecting()) {
struct pollfd fd = connection.getPollfd();
- poll(&fd, 1, 10000);
- connection.sendReceive(fd.revents);
+ if(poll(&fd, 1, 10000) > 0)
+ connection.sendReceive(fd.revents);
}
connection.send(Mad::Net::Packet(0x0001, 0xABCD));
@@ -42,8 +42,8 @@ int main() {
while(!connection.sendQueueEmpty()) {
struct pollfd fd = connection.getPollfd();
- poll(&fd, 1, 10000);
- connection.sendReceive(fd.revents);
+ if(poll(&fd, 1, 10000) > 0)
+ connection.sendReceive(fd.revents);
}
}
catch(Mad::Net::Exception &e) {