#ifndef KartenServer_H #define KartenServer_H #include #include #include #include #include #include "Datenbank.h" #include "Updater.h" using namespace Framework; using namespace Network; class KSKlient; class KartenServer : public Thread { private: Server* server; SSLServer* aServer; InitDatei* ini; KSDatenbank* db; CRITICAL_SECTION cs; RCArray< KSKlient >* klients; Text* fehler; Updater* updater; int updateKarte; int id; bool nichtPausiert; int empfangen; int gesendet; bool end; public: // Konstruktor KartenServer(InitDatei* zIni); // Destruktor virtual ~KartenServer(); // nicht constant void runn(); void thread(); void close(); bool serverStarten(); bool serverPause(); bool serverFortsetzen(); bool serverBeenden(); bool setMaxKarten(int mk); bool absturzKlient(int klientId); bool removeKlient(KSKlient* zKlient); void addGesendet(int bytes); void addEmpfangen(int bytes); void karteUpdateStart(int karteId); void karteUpdateEnde(); // conatant bool istAn() const; Server* zServer() const; KSDatenbank* zDB() const; InitDatei* zIni() const; bool hatClients() const; int getId() const; const char* getLetzterFehler() const; bool wirdKarteGeupdatet(int id) const; }; class KSAKlient : public Thread { private: SSLSKlient* klient; Text* name; Text* passwort; int adminId; KartenServer* ks; public: // Konstruktor KSAKlient(SSLSKlient* klient, KartenServer* ks); // Destruktor virtual ~KSAKlient(); // nicht constant void thread(); void errorZuKlient(const char* nachricht) const; // sendet eine Fehlernachricht zum AKlient }; class KSKlient : public Thread { private: SKlient* klient; unsigned int klientNummer; KartenServer* ks; void suchDateien(const char* pf, RCArray< Text >* zDL, const char* rem); public: // Konstruktor KSKlient(SKlient* klient, KartenServer* ks); // Destruktor virtual ~KSKlient(); // nicht constant void absturz(); void thread(); // constant void errorZuKlient(const char* nachricht) const; // sendet eine Fehlernachricht zum Klient int getKlientNummer() const; }; #endif