summaryrefslogtreecommitdiffstats
path: root/src/Client/CommandParser.cpp
diff options
context:
space:
mode:
authorMatthias Schiffer <matthias@gamezock.de>2008-09-17 05:33:01 +0200
committerMatthias Schiffer <matthias@gamezock.de>2008-09-17 05:33:01 +0200
commit039c218a7b1f2eae4f8e8305bc8e8bf70a67beab (patch)
tree362a59253abd77b5e41800d73a7c5dacf18617f7 /src/Client/CommandParser.cpp
parenta0cffb5475d35f0a19b95af2ce56bf6c90c82256 (diff)
downloadmad-039c218a7b1f2eae4f8e8305bc8e8bf70a67beab.tar
mad-039c218a7b1f2eae4f8e8305bc8e8bf70a67beab.zip
Interface der Request-Klassen verbessert; muss noch vereinfacht werden
Diffstat (limited to 'src/Client/CommandParser.cpp')
-rw-r--r--src/Client/CommandParser.cpp71
1 files changed, 46 insertions, 25 deletions
diff --git a/src/Client/CommandParser.cpp b/src/Client/CommandParser.cpp
index 3cb5749..407b9c8 100644
--- a/src/Client/CommandParser.cpp
+++ b/src/Client/CommandParser.cpp
@@ -22,6 +22,7 @@
#include "Requests/DaemonListRequest.h"
#include "Requests/DaemonStatusRequest.h"
#include <Common/Exception.h>
+#include <Common/RequestManager.h>
#include <Common/Requests/DisconnectRequest.h>
#include <Net/Packets/HostStatusPacket.h>
#include <Net/Packets/NameListPacket.h>
@@ -144,14 +145,14 @@ void CommandParser::helpCommand(const std::vector<std::string> &args) {
void CommandParser::listHostsCommand(const std::vector<std::string>&) {
activeRequests++;
- Requests::DaemonListRequest::send(connection, sigc::mem_fun(this, &CommandParser::daemonListRequestFinished));
+ Common::RequestManager::getRequestManager()->sendRequest(connection, std::auto_ptr<Common::RequestBase>(new Requests::DaemonListRequest(sigc::mem_fun(this, &CommandParser::daemonListRequestFinished))));
}
void CommandParser::statusCommand(const std::vector<std::string> &args) {
if(args.size() == 1)
- Requests::CoreStatusRequest::send(connection, sigc::mem_fun(this, &CommandParser::coreStatusRequestFinished));
+ Common::RequestManager::getRequestManager()->sendRequest(connection, std::auto_ptr<Common::RequestBase>(new Requests::CoreStatusRequest(sigc::mem_fun(this, &CommandParser::coreStatusRequestFinished))));
else if(args.size() == 2)
- Requests::DaemonStatusRequest::send(connection, sigc::mem_fun(this, &CommandParser::daemonStatusRequestFinished), sigc::mem_fun(this, &CommandParser::errorCallback), args[1]);
+ Common::RequestManager::getRequestManager()->sendRequest(connection, std::auto_ptr<Common::RequestBase>(new Requests::DaemonStatusRequest(args[1], sigc::mem_fun(this, &CommandParser::daemonStatusRequestFinished))));
else {
std::cerr << args[0] << ": Too many arguments." << std::endl;
printUsage("status");
@@ -163,47 +164,67 @@ void CommandParser::statusCommand(const std::vector<std::string> &args) {
void CommandParser::exitCommand(const std::vector<std::string>&) {
activeRequests++;
- disconnect = true;
- Common::Requests::DisconnectRequest::send(connection, sigc::mem_fun(this, &CommandParser::requestFinished));
+ Common::RequestManager::getRequestManager()->sendRequest(connection, std::auto_ptr<Common::RequestBase>(new Common::Requests::DisconnectRequest(sigc::mem_fun(this, &CommandParser::disconnectRequestFinished))));
}
-void CommandParser::coreStatusRequestFinished(const Net::Packets::HostStatusPacket &packet) {
- std::cout << "Server status:" << std::endl;
-
- printHostStatus(packet);
+void CommandParser::coreStatusRequestFinished(const Common::Request<Net::Packets::HostStatusPacket> &request) {
+ try {
+ const Net::Packets::HostStatusPacket &packet = request.getResult();
+ std::cout << "Server status:" << std::endl;
+ printHostStatus(packet);
+ }
+ catch(Common::Exception &exception) {
+ std::cerr << "An error occurred during your request: " << exception.strerror() << "." << std::endl << std::endl;
+ }
requestFinished();
}
-void CommandParser::daemonListRequestFinished(const Net::Packets::NameListPacket &packet) {
- const std::vector<std::string>& hosts = packet.getNameList();
+void CommandParser::daemonListRequestFinished(const Common::Request<Net::Packets::NameListPacket> &request) {
+ try {
+ const std::vector<std::string>& hosts = request.getResult().getNameList();
- if(hosts.empty()) {
- std::cout << "There aren't any active hosts." << std::endl << std::endl;
- }
- else {
- std::cout << "Active hosts:" << std::endl;
+ if(hosts.empty()) {
+ std::cout << "There aren't any active hosts." << std::endl << std::endl;
+ }
+ else {
+ std::cout << "Active hosts:" << std::endl;
- for(std::vector<std::string>::const_iterator host = hosts.begin(); host != hosts.end(); ++host)
- std::cout << "\t" << *host << std::endl;
+ for(std::vector<std::string>::const_iterator host = hosts.begin(); host != hosts.end(); ++host)
+ std::cout << "\t" << *host << std::endl;
- std::cout << std::endl;
+ std::cout << std::endl;
+ }
+ }
+ catch(Common::Exception &exception) {
+ std::cerr << "An error occurred during your request: " << exception.strerror() << "." << std::endl << std::endl;
}
requestFinished();
}
-void CommandParser::daemonStatusRequestFinished(const Net::Packets::HostStatusPacket &packet) {
- std::cout << "Host status:" << std::endl;
-
- printHostStatus(packet);
+void CommandParser::daemonStatusRequestFinished(const Common::Request<Net::Packets::HostStatusPacket> &request) {
+ try {
+ const Net::Packets::HostStatusPacket &packet = request.getResult();
+ std::cout << "Host status:" << std::endl;
+ printHostStatus(packet);
+ }
+ catch(Common::Exception &exception) {
+ std::cerr << "An error occurred during your request: " << exception.strerror() << "." << std::endl << std::endl;
+ }
requestFinished();
}
-void CommandParser::errorCallback(const Common::Exception &exception) {
- std::cerr << "An error occurred during your request: " << exception.strerror() << "." << std::endl << std::endl;
+void CommandParser::disconnectRequestFinished(const Common::Request<> &request) {
+ try {
+ request.getResult();
+ disconnect = true;
+ }
+ catch(Common::Exception &exception) {
+ std::cerr << "An error occurred during your request: " << exception.strerror() << "." << std::endl << std::endl;
+ }
requestFinished();
}