/* * StatusRequestHandler.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_STATUSREQUESTHANDLER_H_ #define MAD_COMMON_REQUESTHANDLERS_STATUSREQUESTHANDLER_H_ #include "../RequestHandler.h" #include namespace Mad { namespace Common { namespace RequestHandlers { class StatusRequestHandler : public RequestHandler { private: Net::Connection *connection; uint16_t requestId; bool needUptime, needMemory, needLoad, sent; unsigned long uptime, idleTime; unsigned long totalMem, freeMem, totalSwap, freeSwap; unsigned long currentLoad, nProcesses; float loadAvg1, loadAvg5, loadAvg15; void uptimeHandler(unsigned long uptime0, unsigned long idleTime0) { uptime = uptime0; idleTime = idleTime0; needUptime = false; send(); } void memoryHandler(unsigned long totalMem0, unsigned long freeMem0, unsigned long totalSwap0, unsigned long freeSwap0) { totalMem = totalMem0; freeMem = freeMem0; totalSwap = totalSwap0; freeSwap = freeSwap0; needMemory = false; send(); } void loadHandler(unsigned long currentLoad0, unsigned long nProcesses0, float loadAvg10, float loadAvg50, float loadAvg150) { currentLoad = currentLoad0; nProcesses = nProcesses0; loadAvg1 = loadAvg10; loadAvg5 = loadAvg50; loadAvg15 = loadAvg150; needLoad = false; send(); } void send(); protected: virtual void handlePacket(Net::Connection *connection, const Net::Packet &packet); public: StatusRequestHandler() : needUptime(true), needMemory(true), needLoad(true), sent(false), uptime(0), idleTime(0), totalMem(0), freeMem(0), totalSwap(0), freeSwap(0), currentLoad(0), nProcesses(0), loadAvg1(0), loadAvg5(0), loadAvg15(0) {} }; } } } #endif /* MAD_COMMON_REQUESTHANDLERS_STATUSREQUESTHANDLER_H_ */