diff options
author | Matthias Schiffer <matthias@gamezock.de> | 2008-10-10 15:04:28 +0200 |
---|---|---|
committer | Matthias Schiffer <matthias@gamezock.de> | 2008-10-10 15:04:28 +0200 |
commit | fcab8098d6a9a385e0e5edfb26f4abf615da77ca (patch) | |
tree | 7ae3ff0d47bab59a409ccebb036e339894493b80 /src/madc.cpp | |
parent | 535a6e799ee98e745c85c655c5db3279fd25c1bc (diff) | |
download | mad-fcab8098d6a9a385e0e5edfb26f4abf615da77ca.tar mad-fcab8098d6a9a385e0e5edfb26f4abf615da77ca.zip |
FdManager hinzugef?gt und Verbindungsklassen angepasst
Diffstat (limited to 'src/madc.cpp')
-rw-r--r-- | src/madc.cpp | 36 |
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; |