SpielServer.h 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  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. Server *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. int ref;
  48. public:
  49. // Konstruktor
  50. SpielServer( InitDatei *zIni );
  51. // Destruktor
  52. virtual ~SpielServer();
  53. // nicht constant
  54. void lock();
  55. void unlock();
  56. void runn();
  57. virtual void thread();
  58. void close();
  59. bool serverStarten();
  60. bool serverPause();
  61. bool serverFortsetzen();
  62. bool serverBeenden();
  63. bool setMaxSpiele( int ms );
  64. void addSpielErstellt( SpielErstellt *erstellt );
  65. void SpielErstelltAbbruch( int spielErstelltId );
  66. void removeSpielErstellt( int id );
  67. bool registerKlient( SSKlient *klient );
  68. bool absturzKlient( int klientId );
  69. bool verteileKlient( SSKlient *klient );
  70. void unregisterKlient( SSKlient *zKlient );
  71. void klientsMM( SSKlient *k );
  72. void addSpiel( Spiel *spiel );
  73. void removeSpiel( int spielId );
  74. void addGesendet( int bytes );
  75. void addEmpfangen( int bytes );
  76. void addSpielHistorieId( int id );
  77. bool hatSpielHistorieId( int id );
  78. void removeSpielHistorieId( int id );
  79. // conatant
  80. bool istAn() const;
  81. Server *zServer() const;
  82. SSDatenbank *zDB() const;
  83. InitDatei *zInit() const;
  84. bool hatClients() const;
  85. int getId() const;
  86. char *getLetzterFehler() const;
  87. char *getIp() const;
  88. int getPort() const;
  89. // Reference Counting
  90. SpielServer *getThis();
  91. SpielServer *release();
  92. };
  93. class SSAKlient : public Thread
  94. {
  95. private:
  96. SKlient *klient;
  97. Text *name;
  98. Text *passwort;
  99. int adminId;
  100. SpielServer *ss;
  101. int version;
  102. public:
  103. // Konstruktor
  104. SSAKlient( SKlient *klient, SpielServer *ss );
  105. // Destruktor
  106. virtual ~SSAKlient();
  107. // nicht constant
  108. void thread();
  109. void sendeVerzeichnisAnKlient( char *pfad, int );
  110. void errorZuKlient( const char *nachricht ) const; // sendet eine Fehlernachricht zum AKlient
  111. };
  112. class SSKlient : public SSKlientV
  113. {
  114. private:
  115. SKlient *empfangen;
  116. SKlient *senden;
  117. unsigned int klientNummer;
  118. SpielServer *ss;
  119. int accountId;
  120. bool termThread;
  121. bool verbunden;
  122. SpielErstellt *zErstellt;
  123. Spiel *zSpiel;
  124. CRITICAL_SECTION cs;
  125. int ref;
  126. public:
  127. // Konstruktor
  128. SSKlient( SKlient *klient, SpielServer *ss );
  129. // Destruktor
  130. virtual ~SSKlient();
  131. // nicht constant
  132. void lock();
  133. void unlock();
  134. void absturz();
  135. void setSpielErstellt( SpielErstellt *zErstellt );
  136. void setSpiel( Spiel *zSpiel );
  137. virtual void nichtTrennen();
  138. void spielGefunden( int karteId );
  139. void zeitVerbleibend( char sekunden );
  140. void erstellungAbgebrochen( char *grund );
  141. void backInWarteschlange( char st, char min, char sec );
  142. void erstellungFortsetzen();
  143. void erstellungInitialisierung( SpielerTeamStruktur *sts );
  144. void erstellungAddSpieler( int accountId );
  145. void erstellungRemoveSpieler( int accountId );
  146. void erstellungSpielerTeam( int accountId, int spielerNummer );
  147. void erstellungChatNachricht( char *nachricht );
  148. void spielLadenBeginn();
  149. void spielLadenSpielerAdd( int accId, int spielerNumer );
  150. void spielLadenSetSpielerProzent( int accId, int prozent );
  151. void spielLadenSetSpielerPing( int accId, int ping );
  152. virtual double ping();
  153. void spielLadenFertig();
  154. virtual void spielNachricht( short len, char *bytes );
  155. virtual void statistikNachricht( short len, char *bytes );
  156. bool keepAlive();
  157. virtual void trenne();
  158. void setSenden( SSKlient *klient );
  159. virtual void thread();
  160. virtual void errorZuKlientEmpfang( const char *nachricht ); // sendet eine Fehlernachricht zum Klient
  161. virtual void errorZuKlientSende( const char *nachricht );
  162. // const
  163. virtual int getAccountId() const;
  164. int getKlientNummer() const;
  165. SKlient *getKlient() const;
  166. // Reference Counting
  167. virtual SSKlientV *getThis();
  168. virtual SSKlientV *release();
  169. };
  170. #endif