|
@@ -8,6 +8,7 @@
|
|
|
#include <sys/resource.h>
|
|
|
#include <Text.h>
|
|
|
#include <Zeit.h>
|
|
|
+#include <AsynchronCall.h>
|
|
|
|
|
|
#include "Server.h"
|
|
|
|
|
@@ -15,8 +16,11 @@ FactoryCraftServer* mserver = 0;
|
|
|
|
|
|
void exit()
|
|
|
{
|
|
|
- std::cout << "Der Server wird beendet...\n";
|
|
|
- if (mserver) mserver->close();
|
|
|
+ if (mserver)
|
|
|
+ {
|
|
|
+ std::cout << "Der Server wurde unerwartet beendet. Es wird versucht den spielfortschritt zu speichern.\n";
|
|
|
+ mserver->close();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
int main()
|
|
@@ -81,12 +85,26 @@ int main()
|
|
|
signal(SIGFPE, exit);
|
|
|
signal(SIGINT, exit);
|
|
|
|
|
|
+ new Framework::AsynchronCall("Commander", []() {
|
|
|
+ while (mserver)
|
|
|
+ {
|
|
|
+ std::string line;
|
|
|
+ std::getline(std::cin, line);
|
|
|
+ if (Text(line.c_str()) == Text("exit"))
|
|
|
+ {
|
|
|
+ std::cout << "Der Server wird beended und der Spielfortschritt wird gespeichert.\n";
|
|
|
+ mserver->close();
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
std::cout << "Der Server läuft. Startforgang beendet.\n";
|
|
|
mserver->run();
|
|
|
mserver->release();
|
|
|
mserver = 0;
|
|
|
dat->release();
|
|
|
- std::cout << "Der Server ist heruntergefahren.\n";
|
|
|
+ std::cout << "Der Server ist erfolgreich heruntergefahren.\n";
|
|
|
file.close();
|
|
|
std::cout.rdbuf(sbuf);
|
|
|
Framework::releaseFramework();
|