diff options
author | Matthias Schiffer <matthias@gamezock.de> | 2009-02-24 22:03:34 +0100 |
---|---|---|
committer | Matthias Schiffer <matthias@gamezock.de> | 2009-02-24 22:03:34 +0100 |
commit | f85b6d5ab264910f272e69ce5997cebec54886ce (patch) | |
tree | 06b801d5b11c2d8a2dfae16b698ebaf0b74f429b /src/Net/Packets | |
parent | 8d629ca48e9b5530416127e2e52c945fe1f9ee52 (diff) | |
download | mad-f85b6d5ab264910f272e69ce5997cebec54886ce.tar mad-f85b6d5ab264910f272e69ce5997cebec54886ce.zip |
Requests Status, DaemonStatus und UserList in XmlRequests umgewandelt
Diffstat (limited to 'src/Net/Packets')
-rw-r--r-- | src/Net/Packets/HostStatusPacket.cpp | 75 | ||||
-rw-r--r-- | src/Net/Packets/HostStatusPacket.h | 123 | ||||
-rw-r--r-- | src/Net/Packets/Makefile.am | 4 | ||||
-rw-r--r-- | src/Net/Packets/Makefile.in | 9 | ||||
-rw-r--r-- | src/Net/Packets/UserListPacket.cpp | 85 | ||||
-rw-r--r-- | src/Net/Packets/UserListPacket.h | 79 |
6 files changed, 5 insertions, 370 deletions
diff --git a/src/Net/Packets/HostStatusPacket.cpp b/src/Net/Packets/HostStatusPacket.cpp deleted file mode 100644 index f998c2c..0000000 --- a/src/Net/Packets/HostStatusPacket.cpp +++ /dev/null @@ -1,75 +0,0 @@ -/* - * HostStatusPacket.cpp - * - * Copyright (C) 2008 Matthias Schiffer <matthias@gamezock.de> - * - * 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 <http://www.gnu.org/licenses/>. - */ - -#include "HostStatusPacket.h" - -#include <cstdio> -#include <cstring> -#include <string> - - -namespace Mad { -namespace Net { -namespace Packets { - -HostStatusPacket::HostStatusPacket(Type type, uint16_t requestId, uint32_t uptime, uint32_t idleTime, - uint32_t totalMem, uint32_t freeMem, uint32_t totalSwap, uint32_t freeSwap, - uint32_t currentLoad, uint32_t nProcesses, float loadAvg1val, float loadAvg5val, float loadAvg15val) -: Packet(type, requestId), loadAvg1(loadAvg1val), loadAvg5(loadAvg5val), loadAvg15(loadAvg15val) -{ - char buf[20]; - std::snprintf(buf, sizeof(buf), "%.2f %.2f %.2f", loadAvg1, loadAvg5, loadAvg15); - - setLength(sizeof(CoreStatusData) + strlen(buf)); - coreStatusData = (CoreStatusData*)&rawData->data; - - coreStatusData->uptime = htonl(uptime); - coreStatusData->idleTime = htonl(idleTime); - - coreStatusData->totalMem = htonl(totalMem); - coreStatusData->freeMem = htonl(freeMem); - coreStatusData->totalSwap = htonl(totalSwap); - coreStatusData->freeSwap = htonl(freeSwap); - - coreStatusData->currentLoad = htonl(currentLoad); - coreStatusData->nProcesses = htonl(nProcesses); - - std::memcpy(coreStatusData->charData, buf, strlen(buf)); -} - -HostStatusPacket& HostStatusPacket::operator=(const Packet &p) { - Packet::operator=(p); - if(getLength() < sizeof(CoreStatusData)) - setLength(sizeof(CoreStatusData)); - coreStatusData = (CoreStatusData*)&rawData->data; - - parsePacket(); - - return *this; -} - -void HostStatusPacket::parsePacket() { - coreStatusData = (CoreStatusData*)&rawData->data; - - std::sscanf(std::string((char*)coreStatusData->charData, getLength()-sizeof(coreStatusData)).c_str(), "%f %f %f", &loadAvg1, &loadAvg5, &loadAvg15); -} - -} -} -} diff --git a/src/Net/Packets/HostStatusPacket.h b/src/Net/Packets/HostStatusPacket.h deleted file mode 100644 index fa0910c..0000000 --- a/src/Net/Packets/HostStatusPacket.h +++ /dev/null @@ -1,123 +0,0 @@ -/* - * HostStatusPacket.h - * - * Copyright (C) 2008 Matthias Schiffer <matthias@gamezock.de> - * - * 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 <http://www.gnu.org/licenses/>. - */ - -#ifndef MAD_NET_PACKETS_HOSTSTATUSPACKET_H_ -#define MAD_NET_PACKETS_HOSTSTATUSPACKET_H_ - -#include "../Packet.h" - -namespace Mad { -namespace Net { -namespace Packets { - -class HostStatusPacket : public Packet { - protected: - struct CoreStatusData { - uint32_t uptime; - uint32_t idleTime; - - uint32_t totalMem; - uint32_t freeMem; - uint32_t totalSwap; - uint32_t freeSwap; - - uint32_t currentLoad; - uint32_t nProcesses; - - uint8_t charData[0]; - }; - - CoreStatusData *coreStatusData; - - float loadAvg1, loadAvg5, loadAvg15; - - void parsePacket(); - - public: - HostStatusPacket(Type type, uint16_t requestId, uint32_t uptime = 0, uint32_t idleTime = 0, - uint32_t totalMem = 0, uint32_t freeMem = 0, uint32_t totalSwap = 0, uint32_t freeSwap = 0, - uint32_t currentLoad = 0, uint32_t nProcesses = 0, float loadAvg1val = 0, float loadAvg5val = 0, float loadAvg15val = 0); - - HostStatusPacket(const Packet &p) : Packet(p) { - if(getLength() < sizeof(CoreStatusData)) - setLength(sizeof(CoreStatusData)); - - parsePacket(); - } - - HostStatusPacket(const HostStatusPacket &p) : Packet(p) { - parsePacket(); - } - - HostStatusPacket& operator=(const Packet &p); - - HostStatusPacket& operator=(const HostStatusPacket &p) { - return (*this = (Packet)p); - } - - uint32_t getUptime() const { - return ntohl(coreStatusData->uptime); - } - - uint32_t getIdleTime() const { - return ntohl(coreStatusData->idleTime); - } - - uint32_t getTotalMem() const { - return ntohl(coreStatusData->totalMem); - } - - uint32_t getFreeMem() const { - return ntohl(coreStatusData->freeMem); - } - - uint32_t getTotalSwap() const { - return ntohl(coreStatusData->totalSwap); - } - - uint32_t getFreeSwap() const { - return ntohl(coreStatusData->freeSwap); - } - - uint32_t getCurrentLoad() const { - return ntohl(coreStatusData->currentLoad); - } - - uint32_t getProcessNumber() const { - return ntohl(coreStatusData->nProcesses); - } - - float getLoadAverage1() const { - return loadAvg1; - } - - float getLoadAverage5() const { - return loadAvg5; - } - - float getLoadAverage15() const { - return loadAvg15; - } -}; - -} -} -} - -#endif /* MAD_NET_PACKETS_HOSTSTATUSPACKET_H_ */ diff --git a/src/Net/Packets/Makefile.am b/src/Net/Packets/Makefile.am index b8ebfc0..6f950c9 100644 --- a/src/Net/Packets/Makefile.am +++ b/src/Net/Packets/Makefile.am @@ -1,4 +1,4 @@ noinst_LTLIBRARIES = libpackets.la -libpackets_la_SOURCES = ErrorPacket.cpp FSInfoPacket.cpp HostListPacket.cpp HostStatePacket.cpp HostStatusPacket.cpp LogPacket.cpp UserListPacket.cpp +libpackets_la_SOURCES = ErrorPacket.cpp FSInfoPacket.cpp HostListPacket.cpp HostStatePacket.cpp LogPacket.cpp -noinst_HEADERS = ErrorPacket.h FSInfoPacket.h HostListPacket.h HostStatePacket.h HostStatusPacket.h LogPacket.h UserListPacket.h +noinst_HEADERS = ErrorPacket.h FSInfoPacket.h HostListPacket.h HostStatePacket.h LogPacket.h diff --git a/src/Net/Packets/Makefile.in b/src/Net/Packets/Makefile.in index 47641fb..2fb4fca 100644 --- a/src/Net/Packets/Makefile.in +++ b/src/Net/Packets/Makefile.in @@ -51,8 +51,7 @@ CONFIG_CLEAN_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libpackets_la_LIBADD = am_libpackets_la_OBJECTS = ErrorPacket.lo FSInfoPacket.lo \ - HostListPacket.lo HostStatePacket.lo HostStatusPacket.lo \ - LogPacket.lo UserListPacket.lo + HostListPacket.lo HostStatePacket.lo LogPacket.lo libpackets_la_OBJECTS = $(am_libpackets_la_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/config/depcomp @@ -218,8 +217,8 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_LTLIBRARIES = libpackets.la -libpackets_la_SOURCES = ErrorPacket.cpp FSInfoPacket.cpp HostListPacket.cpp HostStatePacket.cpp HostStatusPacket.cpp LogPacket.cpp UserListPacket.cpp -noinst_HEADERS = ErrorPacket.h FSInfoPacket.h HostListPacket.h HostStatePacket.h HostStatusPacket.h LogPacket.h UserListPacket.h +libpackets_la_SOURCES = ErrorPacket.cpp FSInfoPacket.cpp HostListPacket.cpp HostStatePacket.cpp LogPacket.cpp +noinst_HEADERS = ErrorPacket.h FSInfoPacket.h HostListPacket.h HostStatePacket.h LogPacket.h all: all-am .SUFFIXES: @@ -275,9 +274,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FSInfoPacket.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HostListPacket.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HostStatePacket.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HostStatusPacket.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LogPacket.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UserListPacket.Plo@am__quote@ .cpp.o: @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< diff --git a/src/Net/Packets/UserListPacket.cpp b/src/Net/Packets/UserListPacket.cpp deleted file mode 100644 index d7415c3..0000000 --- a/src/Net/Packets/UserListPacket.cpp +++ /dev/null @@ -1,85 +0,0 @@ -/* - * UserListPacket.cpp - * - * Copyright (C) 2009 Matthias Schiffer <matthias@gamezock.de> - * - * 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 <http://www.gnu.org/licenses/>. - */ - -#include "UserListPacket.h" -#include <cstring> -#include <sstream> - -namespace Mad { -namespace Net { -namespace Packets { - -void UserListPacket::assemblePacket() { - std::string str; - - for(std::vector<Common::UserInfo>::iterator user = userList.begin(); user != userList.end(); ++user) - str += user->getUsername() + "\n" + user->getFullName() + "\n"; - - setLength(sizeof(uint32_t) + sizeof(UserData)*userList.size() + str.length()); - - nUsers = (uint32_t*)rawData->data; - userData = (UserData*)(rawData->data + sizeof(uint32_t)); - charData = (char*)(rawData->data + sizeof(uint32_t) + sizeof(UserData)*userList.size()); - - std::memcpy(charData, str.c_str(), str.length()); - - *nUsers = htonl(userList.size()); - - for(size_t i = 0; i < userList.size(); ++i) { - userData[i].uid = htonl((uint32_t)userList[i].getUid()); - userData[i].gid = htonl((uint32_t)userList[i].getGid()); - } -} - -void UserListPacket::parsePacket() { - userList.clear(); - - if(getLength() < sizeof(uint16_t)) - return; - - nUsers = (uint32_t*)rawData->data; - userList.resize(ntohl(*nUsers)); - - if(getLength() < sizeof(uint32_t) + sizeof(UserData)*userList.size()) - setLength(sizeof(uint32_t) + sizeof(UserData)*userList.size()); - - nUsers = (uint32_t*)rawData->data; - userData = (UserData*)(rawData->data + sizeof(uint32_t)); - charData = (char*)(rawData->data + sizeof(uint32_t) + sizeof(UserData)*userList.size()); - - std::istringstream stream(std::string(charData, getLength() - (sizeof(uint32_t)+sizeof(UserData)*userList.size()))); - - for(size_t i = 0; i < userList.size(); ++i) { - userList[i].setUid(ntohl(userData[i].uid)); - userList[i].setGid(ntohl(userData[i].gid)); - - if(!stream.eof()) { - std::string str; - - std::getline(stream, str); - userList[i].setUsername(str); - std::getline(stream, str); - userList[i].setFullName(str); - } - } -} - -} -} -} diff --git a/src/Net/Packets/UserListPacket.h b/src/Net/Packets/UserListPacket.h deleted file mode 100644 index 364a36d..0000000 --- a/src/Net/Packets/UserListPacket.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - * UserListPacket.h - * - * Copyright (C) 2009 Matthias Schiffer <matthias@gamezock.de> - * - * 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 <http://www.gnu.org/licenses/>. - */ - -#ifndef MAD_NET_PACKETS_USERLISTPACKET_H_ -#define MAD_NET_PACKETS_USERLISTPACKET_H_ - -#include "../Packet.h" -#include <Common/UserInfo.h> -#include <vector> - -namespace Mad { -namespace Net { -namespace Packets { - -class UserListPacket : public Packet { - protected: - struct UserData { - uint32_t uid; - uint32_t gid; - }; - - uint32_t *nUsers; - UserData *userData; - char *charData; - - std::vector<Common::UserInfo> userList; - - void assemblePacket(); - void parsePacket(); - - public: - UserListPacket(Type type, uint16_t requestId, const std::vector<Common::UserInfo> &users) : Packet(type, requestId), userList(users) { - assemblePacket(); - } - - UserListPacket(const Packet &p) : Packet(p) { - parsePacket(); - } - - UserListPacket& operator=(const Packet &p) { - Packet::operator=(p); - parsePacket(); - - return *this; - } - - UserListPacket& operator=(const UserListPacket &p) { - Packet::operator=(p); - parsePacket(); - - return *this; - } - - const std::vector<Common::UserInfo>& getUserInfo() const { - return userList; - } -}; - -} -} -} - -#endif /* MAD_NET_PACKETS_USERLISTPACKET_H_ */ |