#include "HistorieSender.h" #ifdef WIN32 #include "../SpielServer.h" #else #include "SpielServer.h" #endif #include // Inhalt der HistorieSender Klasse aus HistorieSender.h // Konstruktor HistorieSender::HistorieSender(SpielServer* zSS) : Thread() { this->zSS = zSS; beenden = 0; } // Destruktor HistorieSender::~HistorieSender() {} // nicht constant void HistorieSender::setEnde() { beenden = 1; } void HistorieSender::thread() { Datei* d = new Datei(); d->setDatei("../spiel log"); while (!beenden) { Sleep(10000); int anz = d->getUnterdateiAnzahl(); RCArray< Text >* list = d->getDateiListe(); int min = 0; for (int i = 0; i < anz; i++) { if (!list->z(i)) continue; Text pf(d->zPfad()->getText()); pf += "/"; pf += list->z(i)->getText(); pf += "/fertig"; if (!DateiExistiert(pf)) continue; if (!min || min > (int)*list->z(i)) min = (int)*list->z(i); } list->release(); if (min) { short port = 0; Text* ip = new Text(); if (zSS->zDB()->suchHistorieServer(&port, ip)) { Klient* k = new Klient(); unsigned char key[20] = { 207, 30, 72, 46, 30, 50, 56, 213, 82, 107, 14, 201, 149, 58, 110, 138, 228, 241, 52, 54 }; k->setSendeKey((char*)key, 20); k->setEmpfangKey((char*)key, 20); if (k->verbinde(port, *ip)) { zSS->addSpielHistorieId(min); unsigned char ret = 0; k->sendeEncrypted("\5", 1); k->getNachrichtEncrypted((char*)&ret, 1); if (ret == 1) { int server = zSS->getId(); k->sendeEncrypted((char*)&server, 4); k->sendeEncrypted((char*)&min, 4); k->getNachrichtEncrypted((char*)&ret, 1); if (ret == 1) DateiRemove(Text("../spiel log/") += min); } if (ret == 3) { k->getNachrichtEncrypted((char*)&ret, 1); char* err = new char[ret]; k->getNachrichtEncrypted(err, ret); delete[] err; } k->sendeEncrypted("\3", 1); k->getNachrichtEncrypted((char*)&ret, 1); k->trenne(); k->release(); zSS->removeSpielHistorieId(min); } } ip->release(); } } d->release(); run = 0; }