Browse Source

Abstrakte Client Klassen fertiggestellt

Kolja Strohm 6 years ago
parent
commit
7920549a12
1 changed files with 315 additions and 5 deletions
  1. 315 5
      Include/KSGNetwork.h

+ 315 - 5
Include/KSGNetwork.h

@@ -1,11 +1,22 @@
 #pragma once
 
 #include <Array.h>
+#include <Thread.h>
 
 namespace Framework
 {
     class Text;
     class Datei;
+    class KSGTDatei;
+    class FBalken;
+    class Zeit;
+    class Bild;
+    class Model2DData;
+}
+
+namespace GSL
+{
+    class GSLSoundV;
 }
 
 namespace Network
@@ -199,15 +210,71 @@ namespace KSGClient
     };
 
     // Wird benutzt, um die Verbindung mit den Servern aufrecht zu erhalten. Bei einem Verbindungsabbruch wird der Client automatisch abgemeldet
-    class ErhaltungServerClient
+    class ErhaltungServerClient : protected Framework::Thread
     {
-
+    protected:
+        // DBeantwortet Ping - Anfragen des Servers. Falls diese 60 Sekunden lang unbeantwortet bleiben, wird der Client vom Serversystem abgemeldet
+        virtual void thread() = 0;
+    public:
+        // verbindet ich mit dem Erhaltung Server
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool verbinde() = 0;
+        // Meldet sich beim Server ab und trennt die Verbindung
+        virtual void abmelden() = 0;
+        // Trennt die Verbindung zum Server
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        //  Sollte erst nach einem erfolgreichen Aufruf von verbinde aufgerufen werden
+        virtual bool trenne() = 0;
+        // Erhöht den Reference Counter um 1 un gibt this zurück
+        virtual ErhaltungServerClient *getThis() = 0;
+        // Verringert den Reference Counter um 1 und gibt 0 zurück.
+        //  Falls der Reference Counter nach dem Aufruf auf 0 ist löscht sich das Objekt selbst 
+        virtual ErhaltungServerClient *release() = 0;
     };
 
     // Wird benutzt, um aktualisierte Spieldateien herunterzuladen
     class PatchServerClient
     {
-
+    public:
+        // verbindet ich mit dem Patch Server
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool verbinde() = 0;
+        // Gibt eine Tabelle von Dateigruppen zurück.
+        //  Gibt bei misserfolg 0 zurück
+        virtual Framework::KSGTDatei *getDateiGruppenListe() = 0;
+        // Gibt eine Tabelle von Dateien zurück.
+        //  gruppe: Die Id der Dateigruppe, zu der die Dateien gehöhren sollen
+        //  Gibt bei misserfolg 0 zurück
+        virtual Framework::KSGTDatei *getDateiListe( int gruppe ) = 0;
+        // Gibt die Größe einer Datei in bytes zurück
+        //  gruppe: Die Id der Dateigruppe der Datei
+        //  pfad: Der Pfad der Datei
+        virtual __int64 getDateiGröße( int gruppe, const char *pfad ) = 0;
+        // Lädt eine Datei herunter
+        //  gruppe: Die Dateigruppe der Datei
+        //  start: Der Index des bytes, bei dem der download begonnen werden soll (Enthält im Falle eines Abbruchs die Position, von welcher aus als nächstes heruntergeladen werden muss)
+        //  pfad: Der Pfad der Datei
+        //  zielPfad: Der Pfad, an den die Datei gespeichert werden soll
+        //  zFb: Ein Fortschrittsbalken, der automatisch aktualisiert wird
+        //  abbruch: Wenn diese Variable während des Vorgangs auf 1 gesetzt wird, so wird das Herunterladen abgebrochen.
+        //  maxbps: Die Anzahl der bytes pro Sekunde, die maximal übertragen werden sollen
+        virtual bool downloadDatei( int gruppe, __int64 *start, const char *pfad, const char *zielPfad, Framework::FBalken *zFb, bool *abbruch, int maxbps ) = 0;
+        // Trennt die Verbindung zum Server
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        //  Sollte erst nach einem erfolgreichen Aufruf von verbinde aufgerufen werden
+        virtual bool trenne( bool abmelden ) = 0;
+        // Gibt 1 zurück, falls der Client verbunden ist, 0 sonst
+        virtual bool istVerbunden() const = 0;
+        // Gibt die Anzahl von übertragenen Bytes seit dem letzten Aufruf zurück
+        virtual int getDownload() const = 0;
+        // gibt den Letzten Fehlertext zuück
+        //  sollte erst aufgerufen werden, nachdem eine andere aufgerufene Methode fehlgeschlagen ist
+        virtual char *getLetzterFehler() const = 0;
+        // Erhöht den Reference Counter um 1 un gibt this zurück
+        virtual PatchServerClient *getThis() = 0;
+        // Verringert den Reference Counter um 1 und gibt 0 zurück.
+        //  Falls der Reference Counter nach dem Aufruf auf 0 ist löscht sich das Objekt selbst 
+        virtual PatchServerClient *release() = 0;
     };
 
     // Wird verwendet um News Oberflächen abzufragen (KSG Script Seiten)
@@ -1054,7 +1121,251 @@ namespace KSGClient
     //  Kann nur von eingeloggten Clients verwendet werden
     class EditorServerClient
     {
-
+    public:
+        // verbindet sich mit dem zugewiesenen Editor Server
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool verbinde() = 0;
+        // Erstellt eine neue Karte
+        //  name: Der Name der Karte
+        //  spielArt: Die Id des Spiels
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool karteErstellen( char *name, int spielArt ) = 0;
+        // lädt eine bestimmte Karte
+        //  id: Die Id der Karte
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool ladeKarte( int id ) = 0;
+        // gibt eine Liste mit Abbildern der geladenen Karte zurück
+        //  name: Enthält nach erfolgreichem Aufruf eine Liste mit Namen der Abbilder
+        //  datum: Enthält nach erfolgreichem Aufruf eine Liste mit dem Datum der Erstellung für jedes Abbild
+        //  Gibt die Anzahl der Abbilder zurück
+        virtual int getAbbildListe( Framework::RCArray< Framework::Text > *name, Framework::RCArray< Framework::Zeit > *datum ) = 0;
+        // Erstellt ein neues Abbild der geladenen Karte
+        //  name: Der Name des Abbildes
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool abbildErstellen( char *name ) = 0;
+        // Löscht ein altes Abbild der geladenen Karte
+        //  name: Der Name des Abbildes
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool abbildLöschen( char *name ) = 0;
+        // Stellt ein altes Abbild der geladenen Karte wieder her
+        //  name: Der Name des Abbildes
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool abbildHerstellen( char *name ) = 0;
+        // Verüffentlich eine neue Version der geladenen Karte
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool veröffentlichen() = 0;
+        // Veröffentlich eine neue Version der Shop Seite der geladenen Karte
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool shopSeiteVeröffentlichen() = 0;
+        // Läht die Vorschau der Shop Seite der geladenen Karte herrunter und speichert sie unter data/tmp/ke/ssv
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool ladeShopSeiteVorschau() = 0;
+        // Erstellt eine neue Shop Seiten Datei
+        //  name: Der Name der Datei
+        //  typ: 0=Ordner, 1=Bild, 2=Text
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool ssDateiErstellen( char *name, int typ ) = 0;
+        // Öffnet einen Ordner der Shop Seite
+        //  name: Der Name des Ordners
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool ssOrdnerÖffnen( char *name ) = 0;
+        // Lädt das ein Bild der Shop Seite und gibt es zurück
+        //  datei: Der Name der Bilddatei
+        //  bild: Der Name des Bildes
+        //  Gibt bei misserfolg 0 zurück
+        virtual Framework::Bild *ssBildLaden( char *datei, char *bild ) = 0;
+        // Löscht eine Datei der Shop Seite
+        //  name: Der Name der Datei
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool ssDateiLöschen( char *name ) = 0;
+        // Läd eine KSGS Datei der Shop Seite und gibt den Quellcode zurück
+        //  datei: Der Name der Datei
+        //  Gibt bei misserfolg 0 zurück
+        virtual Framework::Text *ssTextLaden( char *datei ) = 0;
+        // Spechert eine KSGS Datei der Shop Seite
+        //  datei: Der Name der Datei
+        //  zText: Ein Zeiger auf den neuen Quellcode (ohne erhöhten Reference Counter)
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool ssTextSpeichern( char *datei, Framework::Text *zText ) = 0;
+        // Löscht ein Bild der Shop Seite
+        //  datei: Der Name der Bilddatei
+        //  bild: Der Name des Bildes
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool ssBildLöschen( char *datei, char *bild ) = 0;
+        // Speichert ein Bild einer ShopSeite
+        //  datei: Der name der Bilddatei
+        //  name: Der Name des Bildes
+        //  zBild: Ein Zeiger auf das Bild (ohne erhöhten Reference Counter)
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool ssBildSpeichern( char *datei, char *name, Framework::Bild *zBild ) = 0;
+        // Lädt eine Liste mit Dateien von der Shop Seite
+        //  zList: Enthält nach erfolgreichem Aufruf die Liste mit Dateinamen
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual int ssGetDateiListe( Framework::RCArray< Framework::Text > *zList ) = 0;
+        // Lädt die Bild Liste einer Bild Datei der Shop Seite
+        //  name: Der Name der Bilddatei
+        //  zList: Enthält nach erfolgreichem Aufruf eine Liste mit Bildnamen
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual int ssGetBildListe( char *name, Framework::RCArray< Framework::Text > *zList ) = 0;
+        // Lädt die Shop Daten
+        //  es: Enthält nach erfolgreichem aufruf den Erwerbbarkeits Status (0 = nichts, 1 = nur Testversion, 2 = nur Vollversion, 3 = beides)
+        //  tp: Enthält nach erfolgreichem Aufruf den Preis der Testversion in Kupfer
+        //  vp: Enthält nach erfolgreichem Aufruf den Preis der Vollversion in Kupfer
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool getShopDaten( int &es, int &tp, int &vp ) = 0;
+        // Setzt die Shop Daten
+        //  es: der Erwerbbarkeits Status (0 = nichts, 1 = nur Testversion, 2 = nur Vollversion, 3 = beides)
+        //  tp: der Preis der Testversion in Kupfer
+        //  vp: der Preis der Vollversion in Kupfer
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool setShopDaten( int es, int tp, int vp ) = 0;
+        // gibt die Kartenbeschreibung als KSGScript Quellcode zurück
+        //  Gibt bei misserfolg 0 zurück
+        virtual Framework::Text *beschreibungLaden() = 0;
+        // gibt das Titelbild der Karte zurück
+        //  Gibt bei misserfolg 0 zurück
+        virtual Framework::Bild *titelbildLaden() = 0;
+        // gibt das Minimap Bild der Karte zurück
+        //  Gibt bei misserfolg 0 zurück
+        virtual Framework::Bild *minimapLaden() = 0;
+        // gibt das Ladebild der Karte zurück
+        //  Gibt bei misserfolg 0 zurück
+        virtual Framework::Bild *ladebildLaden() = 0;
+        // speichert den KSGScript Quellcode der Kartenbeschreibung
+        //  zText: Der KSGScript Quellcode (ohne erhöhten reference Counter)
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool beschreibungSpeichern( Framework::Text *zText ) = 0;
+        // speichert das Titelbild der Karte
+        //  zBild: das neue Titelbild
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool titelbildSpeichern( Framework::Bild *zBild ) = 0;
+        // speichert das Minimapbild der Karte
+        //  zBild: das neue Minimapbild
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool minimapSpeichern( Framework::Bild *zBild ) = 0;
+        // speichert das Ladebild der Karte
+        //  zBild: das neue Ladebild
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool ladebildSpeichern( Framework::Bild *zBild ) = 0;
+        // lädt die Spieler Team Daten der Karte
+        //  sts: Enthält nach erfolgreichem Aufruf die Spieler Team Daten
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool ladeTeamDaten( SpielerTeamStruktur *sts ) = 0;
+        // speichert die Team Daten
+        //  sts: die neuen Spieler Team Daten
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool speicherTeamDaten( SpielerTeamStruktur *sts ) = 0;
+        // Erstellt neue Datei im Datei Editor
+        //  typ: 0=ordner 1=bild 2=modell2d 3=sound
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool deNeueDatei( char typ, Framework::Text *zName ) = 0; 
+        // Öffnet Ordner im Datei Editor
+        //  zName: Der Name des Ordners
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool deOrdnerÖffnen( Framework::Text *zName ) = 0;
+        // Gibt ein Bild aus dem Datei Editor zurück
+        //  zDatei: Der Name der Datei (ohne erhöhten Reference Counter)
+        //  zBild: Der Name des Bildes (ohne erhöhten Reference Counter)
+        //  zF: Ein Fortschrittsbalken, der automatisch aktualisiert wird (ohne erhöhten Reference Counter)
+        //  Gibt bei misserfolg 0 zurück
+        virtual Framework::Bild *deBildLaden( Framework::Text *zDatei, Framework::Text *zBild, Framework::FBalken *zF ) = 0;
+        // Löscht eine Datei aus dem Datei Editor
+        //  zName: Der Name der Datei
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool deDateiLöschen( Framework::Text *zName ) = 0;
+        // Löscht Bild aus Datei im Datei Editor
+        //  zDatei: Der Name der Bilddatei (ohne erhöhten Reference Counter)
+        //  zBild: Der Name des Bildes (ohne erhöhten Reference Counter)
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool deBildLöschen( Framework::Text *zDatei, Framework::Text *zBild ) = 0;
+        // Speichert Bild in Datei im Datei Editor
+        //  zDatei: Der Name der Bilddatei (ohne erhöhten Reference Counter)
+        //  zName: Der Name des Bildes (ohne erhöhten Reference Counter)
+        //  zBild: Das neue Bild (ohne erhöhten Reference Counter)
+        //  zF: Ein Fortschrittsbalken, der automatisch aktualisiert wird (ohne erhöhten Reference Counter)
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool deBildSpeichern( Framework::Text *zDatei, Framework::Text *zName, Framework::Bild *zBild, Framework::FBalken *zF ) = 0; // DateienEditor: Speichert Bild
+        // Lädt eine Liste mit Dateien im aktuellen Ordner des Datei Editors
+        //  zNamen: Enthält nach erfolgreichem Aufruf eine Liste mit Dateinamen (ohne erhöhten Reference Counter)
+        //  Gibt die Anzahl der Dateien zurück
+        virtual int deGetDateiListe( Framework::RCArray< Framework::Text > *zNamen ) = 0;
+        // Lädt eine Liste mit Bildern aus einer Bilddatei des Datei Editors
+        //  zNamen: Enthält nach erfolgreichem Aufruf eine Liste mit den Bildnamen (ohne erhöhten Reference Counter)
+        //  Gibt die Anzahl der Bilder zurück
+        virtual int deGetBildListe( Framework::Text *zDatei, Framework::RCArray< Framework::Text > *zNamen ) = 0;
+        // Lädt eine Liste mit 2D Modellen aus einer Modeldatei im Datei Editor
+        //  zDatei: Der Name der Modeldatei (ohne erhöhten Reference Counter)
+        //  zNamen: Enthält nach erfolgreichem Aufruf eine Liste mit den Modelnamen (ohne erhöhten Reference Counter)
+        //  Gibt die Anzahl der Modelle zurück
+        virtual int deGetModelListe( Framework::Text *zDatei, Framework::RCArray< Framework::Text > *zNamen ) = 0;
+        // Lädt eine Liste mit Sounds aus einer Sounddatei im Datei Editor
+        //  zDatei: Der Name der Sounddatei (ohne erhöhten Reference Counter)
+        //  zNamen: Enthält nach erfolgreichem Aufruf eine Liste mit den Soundnamen (ohne erhöhten Reference Counter)
+        //  Gibt die Anzahl der Sounds zurück
+        virtual int deGetSoundListe( Framework::Text *zDatei, Framework::RCArray<  Framework::Text > *zNamen ) = 0;
+        // Löscht ein Model aus einer Modeldatei des Datei Editors
+        //  zDatei: Der Name der Modeldatei (ohne erhöhten Reference Counter)
+        //  zModel: Der Name des Models (ohne erhöhten Reference Counter)
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool deModelLöschen( Framework::Text *zDatei, Framework::Text *zModel ) = 0;
+        // Löscht einen Sound aus einer Sounddatei des Datei Editors
+        //  zDatei: Der Name der Sounddatei (ohne erhöhten Reference Counter)
+        //  zSound: Der Name des Sounds (ohne erhöhten Reference Counter)
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool deSoundLöschen( Framework::Text *zDatei, Framework::Text *zSound ) = 0;
+        // Lädt ein Model aus einer Modeldatei des Datei Editors
+        //  zDatei: Der Name der Modeldatei (ohne erhöhten Reference Counter)
+        //  zModel: Enthält nach erfolgreichem Aufruf das Model (ohne erhöhten Reference Counter)
+        //  zF: Ein Fortschrittsbalken, der automatisch aktualisiert wird (ohne erhöhten Reference Counter)
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual Framework::Model2DData *deModelLaden( Framework::Text *zDatei, Framework::Text *zModel, Framework::FBalken *zF ) = 0;
+        // Lädt einen Sound herunter und gibt ihn zurück
+        //  zDatei: Der Name der Sounddatei (ohne erhöhten Reference Counter)
+        //  zSound: Der Name des Sounds (ohne erhöhten Reference Counter)
+        //  zF: Ein Fortschrittsbalken, der automatisch aktualisiert wird (ohne erhöhten Reference Counter)
+        //  Gibt bei misserfolg 0 zurück
+        virtual GSL::GSLSoundV *deSoundLaden( Framework::Text *zDatei, Framework::Text *zSound, Framework::FBalken *zF ) = 0;
+        // Speichert ein Model in eine Modeldatei des Datei Editors
+        //  zDatei: Der Name der Modeldatei (ohne erhöhten Reference Counter)
+        //  zModel: Der Name des Models (ohne erhöhten Reference Counter)
+        //  zData: Die Daten des Models (ohne erhöhten Reference Counter)
+        //  zF: Ein Fortschrittsbalken, der automatisch aktualisiert wird (ohne erhöhten Reference Counter)
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool deModelSpeichern( Framework::Text *zDatei, Framework::Text *zModel, Framework::Model2DData *zData, Framework::FBalken *zF ) = 0;
+        // Speichert einen Sound in einer Sounddatei des Datei Editors
+        //  zDatei: Der Name der Modeldatei (ohne erhöhten Reference Counter)
+        //  zSound: Der Name des Sounds (ohne erhöhten Reference Counter)
+        //  zData: Die Daten des Sounts (ohne erhöhten Reference Counter)
+        //  zF: Ein Fortschrittsbalken, der automatisch aktualisiert wird (ohne erhöhten Reference Counter)
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool deSoundSpeichern( Framework::Text *zDatei, Framework::Text *zSound, GSL::GSLSoundV *zData, Framework::FBalken *zF ) = 0;
+        // Lädt die Kauf Statistik der geladenen Karte
+        //  verkauft: Enthält nach erfolgreichem Aurfuf eine Liste mit den Anzahlen der Käufe der Karte der letzten 30 Tage
+        //  einkommen: Enthält nach erfolgreichem Aurfuf eine Liste mit den Anzahlen der verdinten Kupfer in den letzten 30 Tagen
+        //  gespielt: Enthält nach erfolgreichem Aurfuf eine Liste mit den Anzahlen der Spielen der letzten 30 Tage
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual int getVerkaufStatistik( Framework::Array< int > *verkauft, Framework::Array< int > *einkommen, Framework::Array< int > *gespielt ) = 0;
+        // Startet den Editor Modus, welcher für jedes Spiel unterschiedlich funktioniert
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool initEditor() = 0;
+        // Erhält die Verbindung aufrecht
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        //  Sollte während einer bestehenden Verbindung etwa einmal alle 60 Sekunden aufgerufen werden, da sonst der Router die Verbindung automatisch trennt
+        virtual bool keepAlive() = 0;
+        // Trennt die Verbindung zum Server
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        //  Sollte erst nach einem erfolgreichen Aufruf von verbinde aufgerufen werden
+        virtual bool trenne() = 0;
+        // Gibt 1 zurück, falls der Client verbunden ist, 0 sonst
+        virtual bool istVerbunden() const = 0;
+        // gibt den Letzten Fehlertext zuück
+        //  sollte erst aufgerufen werden, nachdem eine andere aufgerufene Methode fehlgeschlagen ist
+        virtual char *getLetzterFehler() const = 0;
+        // Erhöht den Reference Counter um 1 un gibt this zurück
+        virtual EditorServerClient *getThis() = 0;
+        // Verringert den Reference Counter um 1 und gibt 0 zurück.
+        //  Falls der Reference Counter nach dem Aufruf auf 0 ist löscht sich das Objekt selbst 
+        virtual EditorServerClient *release() = 0;
     };
 
     // Wird verwendet um Eine Verbindung mit dem Serversystem herzustellen
@@ -1100,7 +1411,6 @@ namespace KSGClient
         virtual bool disconnect() = 0;
         // Meldet den Client vom Server ab. Alle zuvor von diesem Client erzeugten Clients werden durch diesen Vorgang unbrauchbar
         virtual bool unregister() = 0;
-
         // Gibt die dem Client zugewiesene Id zurück.
         //  sollte erst nach dem Aufruf von registerSSL verwendet werden.
         virtual int getClientId() const = 0;