From 58c5d4eefdf1cdee0651f7c74ffd1501adbdc9c3 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Wed, 8 Oct 2008 23:08:21 +0200 Subject: fsinfo-Befehl implementiert --- .../RequestHandlers/FSInfoRequestHandler.cpp | 57 ++++++++++++++++++++++ src/Common/RequestHandlers/FSInfoRequestHandler.h | 50 +++++++++++++++++++ src/Common/RequestHandlers/Makefile.am | 4 +- src/Common/RequestHandlers/Makefile.in | 7 +-- 4 files changed, 113 insertions(+), 5 deletions(-) create mode 100644 src/Common/RequestHandlers/FSInfoRequestHandler.cpp create mode 100644 src/Common/RequestHandlers/FSInfoRequestHandler.h (limited to 'src/Common/RequestHandlers') diff --git a/src/Common/RequestHandlers/FSInfoRequestHandler.cpp b/src/Common/RequestHandlers/FSInfoRequestHandler.cpp new file mode 100644 index 0000000..5d71277 --- /dev/null +++ b/src/Common/RequestHandlers/FSInfoRequestHandler.cpp @@ -0,0 +1,57 @@ +/* + * FSInfoRequestHandler.cpp + * + * Copyright (C) 2008 Matthias Schiffer + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#include "FSInfoRequestHandler.h" +#include "../Logger.h" +#include +#include +#include + +namespace Mad { +namespace Common { +namespace RequestHandlers { + +void FSInfoRequestHandler::handlePacket(Net::Connection *con, const Net::Packet &packet) { + if(packet.getType() != Net::Packet::FS_INFO) { + Logger::log(Logger::ERROR, "Received an unexpected packet."); + con->send(Net::Packets::ErrorPacket(Net::Packet::ERROR, packet.getRequestId(), Exception(Exception::UNEXPECTED_PACKET))); + + signalFinished().emit(); + return; + } + + // TODO Require authentication + + connection = con; + requestId = packet.getRequestId(); + + if(!SystemBackend::getFSInfo(sigc::mem_fun(this, &FSInfoRequestHandler::fsInfoHandler))) { + con->send(Net::Packets::ErrorPacket(Net::Packet::ERROR, packet.getRequestId(), Exception(Exception::NOT_IMPLEMENTED))); + signalFinished().emit(); + } +} + +void FSInfoRequestHandler::fsInfoHandler(const std::vector &info) { + connection->send(Net::Packets::FSInfoPacket(Net::Packet::OK, requestId, info)); + signalFinished().emit(); +} + +} +} +} diff --git a/src/Common/RequestHandlers/FSInfoRequestHandler.h b/src/Common/RequestHandlers/FSInfoRequestHandler.h new file mode 100644 index 0000000..8de89ce --- /dev/null +++ b/src/Common/RequestHandlers/FSInfoRequestHandler.h @@ -0,0 +1,50 @@ +/* + * FSInfoRequestHandler.h + * + * Copyright (C) 2008 Matthias Schiffer + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#ifndef MAD_COMMON_REQUESTHANDLERS_FSINFOREQUESTHANDLER_H_ +#define MAD_COMMON_REQUESTHANDLERS_FSINFOREQUESTHANDLER_H_ + +#include "../RequestHandler.h" +#include "../SystemBackend.h" + +#include + +namespace Mad { +namespace Common { +namespace RequestHandlers { + +class FSInfoRequestHandler : public RequestHandler { + private: + Net::Connection *connection; + uint16_t requestId; + + void fsInfoHandler(const std::vector &info); + + protected: + virtual void handlePacket(Net::Connection *connection, const Net::Packet &packet); + + public: + FSInfoRequestHandler() {} +}; + +} +} +} + +#endif /* MAD_COMMON_REQUESTHANDLERS_FSINFOREQUESTHANDLER_H_ */ diff --git a/src/Common/RequestHandlers/Makefile.am b/src/Common/RequestHandlers/Makefile.am index 4a266e8..0572641 100644 --- a/src/Common/RequestHandlers/Makefile.am +++ b/src/Common/RequestHandlers/Makefile.am @@ -1,5 +1,5 @@ noinst_LTLIBRARIES = librequesthandlers.la -librequesthandlers_la_SOURCES = DisconnectRequestHandler.cpp StatusRequestHandler.cpp +librequesthandlers_la_SOURCES = DisconnectRequestHandler.cpp FSInfoRequestHandler.cpp StatusRequestHandler.cpp -noinst_HEADERS = DisconnectRequestHandler.h StatusRequestHandler.h +noinst_HEADERS = DisconnectRequestHandler.h FSInfoRequestHandler.h StatusRequestHandler.h diff --git a/src/Common/RequestHandlers/Makefile.in b/src/Common/RequestHandlers/Makefile.in index 8139c28..a332620 100644 --- a/src/Common/RequestHandlers/Makefile.in +++ b/src/Common/RequestHandlers/Makefile.in @@ -49,7 +49,7 @@ CONFIG_CLEAN_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) librequesthandlers_la_LIBADD = am_librequesthandlers_la_OBJECTS = DisconnectRequestHandler.lo \ - StatusRequestHandler.lo + FSInfoRequestHandler.lo StatusRequestHandler.lo librequesthandlers_la_OBJECTS = $(am_librequesthandlers_la_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/src depcomp = $(SHELL) $(top_srcdir)/depcomp @@ -188,8 +188,8 @@ target_alias = @target_alias@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_LTLIBRARIES = librequesthandlers.la -librequesthandlers_la_SOURCES = DisconnectRequestHandler.cpp StatusRequestHandler.cpp -noinst_HEADERS = DisconnectRequestHandler.h StatusRequestHandler.h +librequesthandlers_la_SOURCES = DisconnectRequestHandler.cpp FSInfoRequestHandler.cpp StatusRequestHandler.cpp +noinst_HEADERS = DisconnectRequestHandler.h FSInfoRequestHandler.h StatusRequestHandler.h all: all-am .SUFFIXES: @@ -242,6 +242,7 @@ distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DisconnectRequestHandler.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FSInfoRequestHandler.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StatusRequestHandler.Plo@am__quote@ .cpp.o: -- cgit v1.2.3