summaryrefslogtreecommitdiffstats
path: root/src/madc.cpp
diff options
context:
space:
mode:
authorMatthias Schiffer <matthias@gamezock.de>2008-10-10 15:04:28 +0200
committerMatthias Schiffer <matthias@gamezock.de>2008-10-10 15:04:28 +0200
commitfcab8098d6a9a385e0e5edfb26f4abf615da77ca (patch)
tree7ae3ff0d47bab59a409ccebb036e339894493b80 /src/madc.cpp
parent535a6e799ee98e745c85c655c5db3279fd25c1bc (diff)
downloadmad-fcab8098d6a9a385e0e5edfb26f4abf615da77ca.tar
mad-fcab8098d6a9a385e0e5edfb26f4abf615da77ca.zip
FdManager hinzugef?gt und Verbindungsklassen angepasst
Diffstat (limited to 'src/madc.cpp')
-rw-r--r--src/madc.cpp36
1 files changed, 11 insertions, 25 deletions
diff --git a/src/madc.cpp b/src/madc.cpp
index a2c7fda..18ed477 100644
--- a/src/madc.cpp
+++ b/src/madc.cpp
@@ -18,6 +18,7 @@
*/
#include "Net/ClientConnection.h"
+#include "Net/FdManager.h"
#include "Net/IPAddress.h"
#include "Common/Logger.h"
#include "Common/Backends/ConsoleLogger.h"
@@ -38,7 +39,6 @@ using namespace Mad;
static Client::CommandParser *parser;
-static struct pollfd fds[2];
static void usage(const std::string &cmd) {
@@ -57,7 +57,7 @@ static void handleCommand(char *cmd) {
if(parser->requestsActive()) {
rl_callback_handler_remove();
- fds[0].events = 0;
+ Net::FdManager::getFdManager()->setFdEvents(STDIN_FILENO, 0);
}
}
@@ -66,7 +66,7 @@ static void activateReadline() {
return;
rl_callback_handler_install("mad> ", handleCommand);
- fds[0].events = POLLIN;
+ Net::FdManager::getFdManager()->setFdEvents(STDIN_FILENO, POLLIN);
}
int main(int argc, char *argv[]) {
@@ -88,12 +88,8 @@ int main(int argc, char *argv[]) {
std::cerr << "Connecting to " << argv[1] << "..." << std::flush;
- while(connection->isConnecting()) {
- struct pollfd fd = connection->getPollfd();
-
- if(poll(&fd, 1, 10000) > 0)
- connection->sendReceive(fd.revents);
- }
+ while(connection->isConnecting())
+ Net::FdManager::getFdManager()->run();
std::cerr << " connected." << std::endl;
@@ -103,32 +99,22 @@ int main(int argc, char *argv[]) {
Client::InformationManager::init(connection);
- while(!Client::InformationManager::getInformationManager()->isInitialised()) {
- struct pollfd fd = connection->getPollfd();
-
- if(poll(&fd, 1, 10000) > 0)
- connection->sendReceive(fd.revents);
- }
+ while(!Client::InformationManager::getInformationManager()->isInitialised())
+ Net::FdManager::getFdManager()->run();
std::cerr << " done." << std::endl << std::endl;
parser = new Mad::Client::CommandParser(connection);
parser->signalFinished().connect(sigc::ptr_fun(activateReadline));
- fds[0].fd = STDIN_FILENO;
+ Net::FdManager::getFdManager()->registerFd(STDIN_FILENO, sigc::hide(sigc::ptr_fun(rl_callback_read_char)));
activateReadline();
- while(connection->isConnected()) {
- fds[1] = connection->getPollfd();
-
- if(poll(fds, 2, 10000) > 0) {
- if(fds[0].revents & POLLIN)
- rl_callback_read_char();
+ while(connection->isConnected())
+ Net::FdManager::getFdManager()->run();
- connection->sendReceive(fds[1].revents);
- }
- }
+ Net::FdManager::getFdManager()->unregisterFd(STDIN_FILENO);
delete parser;