SpielServer.h 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. #ifndef SpielServer_H
  2. #define SpielServer_H
  3. #include <Server.h>
  4. #include <Thread.h>
  5. #include <Datei.h>
  6. #include <Text.h>
  7. #include "SSKlientV.h"
  8. #include <InitDatei.h>
  9. #ifdef WIN32
  10. #include "SpielErstellt/SpielErstellt.h"
  11. #include "Spiel/Spiel.h"
  12. #include "../Datenbank/Datenbank.h"
  13. #include "Historie/HistorieSender.h"
  14. #else
  15. #include "SpielErstellt.h"
  16. #include "Spiel.h"
  17. #include "Datenbank.h"
  18. #include "HistorieSender.h"
  19. #endif
  20. using namespace Framework;
  21. using namespace Network;
  22. class SSKlient;
  23. class SpielServer : public Thread
  24. {
  25. private:
  26. HistorieSender *historieS;
  27. Server *server;
  28. SSLServer *aServer;
  29. InitDatei *ini;
  30. SSDatenbank *db;
  31. CRITICAL_SECTION cs;
  32. SpielFinden *startSpielThread;
  33. RCArray< SpielErstellt > *erstellt;
  34. int spielErstelltAnzahl;
  35. RCArray< Spiel > *spiele;
  36. int spielAnzahl;
  37. RCArray< SSKlient > *klients;
  38. Array< int > *spielHistorieId;
  39. Text *fehler;
  40. int klientAnzahl;
  41. int klientAnzahl2;
  42. int id;
  43. bool nichtPausiert;
  44. int empfangen;
  45. int gesendet;
  46. bool end;
  47. public:
  48. // Konstruktor
  49. SpielServer( InitDatei *zIni );
  50. // Destruktor
  51. virtual ~SpielServer();
  52. // nicht constant
  53. void lock();
  54. void unlock();
  55. void runn();
  56. virtual void thread();
  57. void close();
  58. bool serverStarten();
  59. bool serverPause();
  60. bool serverFortsetzen();
  61. bool serverBeenden();
  62. bool setMaxSpiele( int ms );
  63. void addSpielErstellt( SpielErstellt *erstellt );
  64. void SpielErstelltAbbruch( int spielErstelltId );
  65. void removeSpielErstellt( int id );
  66. bool registerKlient( SSKlient *klient );
  67. bool absturzKlient( int klientId );
  68. bool verteileKlient( SSKlient *klient );
  69. void unregisterKlient( SSKlient *zKlient );
  70. void klientsMM( SSKlient *k );
  71. void addSpiel( Spiel *spiel );
  72. void removeSpiel( int spielId );
  73. void addGesendet( int bytes );
  74. void addEmpfangen( int bytes );
  75. void addSpielHistorieId( int id );
  76. bool hatSpielHistorieId( int id );
  77. void removeSpielHistorieId( int id );
  78. // conatant
  79. bool istAn() const;
  80. Server *zServer() const;
  81. SSDatenbank *zDB() const;
  82. InitDatei *zInit() const;
  83. bool hatClients() const;
  84. int getId() const;
  85. char *getLetzterFehler() const;
  86. char *getIp() const;
  87. int getPort() const;
  88. };
  89. class SSAKlient : public Thread
  90. {
  91. private:
  92. SSLSKlient *klient;
  93. Text *name;
  94. Text *passwort;
  95. int adminId;
  96. SpielServer *ss;
  97. int version;
  98. public:
  99. // Konstruktor
  100. SSAKlient( SSLSKlient *klient, SpielServer *ss );
  101. // Destruktor
  102. virtual ~SSAKlient();
  103. // nicht constant
  104. void thread();
  105. void sendeVerzeichnisAnKlient( char *pfad, int );
  106. void errorZuKlient( const char *nachricht ) const; // sendet eine Fehlernachricht zum AKlient
  107. };
  108. class SSKlient : public SSKlientV
  109. {
  110. private:
  111. SKlient *empfangen;
  112. SKlient *senden;
  113. unsigned int klientNummer;
  114. SpielServer *ss;
  115. int accountId;
  116. bool termThread;
  117. bool verbunden;
  118. SpielErstellt *zErstellt;
  119. Spiel *zSpiel;
  120. CRITICAL_SECTION cs;
  121. public:
  122. // Konstruktor
  123. SSKlient( SKlient *klient, SpielServer *ss );
  124. // Destruktor
  125. virtual ~SSKlient();
  126. // nicht constant
  127. void lock();
  128. void unlock();
  129. void absturz();
  130. void setSpielErstellt( SpielErstellt *zErstellt );
  131. void setSpiel( Spiel *zSpiel );
  132. virtual void nichtTrennen();
  133. void spielGefunden( int karteId );
  134. void zeitVerbleibend( char sekunden );
  135. void erstellungAbgebrochen( char *grund );
  136. void backInWarteschlange( char st, char min, char sec );
  137. void erstellungFortsetzen();
  138. void erstellungInitialisierung( SpielerTeamStruktur *sts );
  139. void erstellungAddSpieler( int accountId );
  140. void erstellungRemoveSpieler( int accountId );
  141. void erstellungSpielerTeam( int accountId, int spielerNummer );
  142. void erstellungChatNachricht( char *nachricht );
  143. void spielLadenBeginn();
  144. void spielLadenSpielerAdd( int accId, int spielerNumer );
  145. void spielLadenSetSpielerProzent( int accId, int prozent );
  146. void spielLadenSetSpielerPing( int accId, int ping );
  147. virtual double ping();
  148. void spielLadenFertig();
  149. virtual void spielNachricht( short len, char *bytes );
  150. virtual void statistikNachricht( short len, char *bytes );
  151. bool keepAlive();
  152. virtual void trenne();
  153. void setSenden( SSKlient *klient );
  154. virtual void thread();
  155. virtual void errorZuKlientEmpfang( const char *nachricht ); // sendet eine Fehlernachricht zum Klient
  156. virtual void errorZuKlientSende( const char *nachricht );
  157. // const
  158. virtual int getAccountId() const;
  159. int getKlientNummer() const;
  160. SKlient *getKlient() const;
  161. };
  162. #endif