/* GNU General Public License version 3 notice Copyright (C) 2012 Mihawk . All rights reserved. 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 ACTIVECLIENT_H #define ACTIVECLIENT_H #include #include #include "ServerQuery.h" class QHostAddress; class QTimer; class QTime; class Client; class App; class ActiveClient: public QObject { Q_OBJECT public: ActiveClient(App* app, QObject *parent = 0); virtual ~ActiveClient(); Client* client(); void run(); void setAddress(const QHostAddress &address, quint16 port); const QString serverAddressString(); quint8 playerCount() const; void setReplyHash(const QString& hash); //this activates the 5 seconds reply timer too const QString& replyHash() const; void incrementReplyCounters(int userCount, int channelCount, int playerCount, int serverCount); bool isWaitingReply() const; private slots: void queryFinished(); void queryError(ServerQuery::Error err); private: App* myApp; Client* myClient; ServerQuery* myQuery; QTime* myDisconnectTime; /* Count server reply while timer is active */ QString myReplyHash; QTimer* myBroadcastReplyTimer; QTimer* myQueryTimer; quint32 myQueryInterval; int myUniqueUserCount; int myUniqueChannelCount; int myUniqueServerCount; int myUniquePlayerCount; bool myReplyTimerWasActive; }; #endif // ACTIVECLIENT_H