#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; Server *aServer; InitDatei *ini; KSDatenbank *db; CRITICAL_SECTION cs; RCArray< KSKlient > *klients; Text *fehler; Updater *updater; int updateKarte; int klientAnzahl; int id; bool nichtPausiert; int empfangen; int gesendet; bool end; int ref; 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; char *getLetzterFehler() const; bool wirdKarteGeupdatet( int id ) const; // Reference Counting KartenServer *getThis(); KartenServer *release(); }; class KSAKlient : public Thread { private: SKlient *klient; Text *name; Text *passwort; int adminId; KartenServer *ks; public: // Konstruktor KSAKlient( SKlient *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; int ref; 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; // Reference Counting KSKlient *getThis(); KSKlient *release(); }; #endif