Răsfoiți Sursa

Abstrakte ChatServerClient Klasse hinzugefügt

Kolja Strohm 6 ani în urmă
părinte
comite
205091bd7c
1 a modificat fișierele cu 106 adăugiri și 2 ștergeri
  1. 106 2
      Include/KSGNetwork.h

+ 106 - 2
Include/KSGNetwork.h

@@ -128,6 +128,25 @@ namespace KSGClient
         virtual AccountActivityInfo *release() = 0;
     };
 
+    struct ChatServerNachricht
+    {
+    protected:
+        int ref; // Reference Counter
+
+    public:
+        char type; // Typ der Nachricht
+        Framework::Text *message; // Text der Nachricht
+        int account; // Beteiligter Account
+        int gruppe; // Beteiligte Gruppe
+        int chatroom; // Beteiligter Chatraum
+        Framework::Array< int > *ids; // Liste mit Account Ids
+        // Erhöht den Reference Counter um 1 un gibt this zurück
+        virtual ChatServerNachricht *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 ChatServerNachricht *release() = 0;
+    };
+
     // Wird benutzt, um die Verbindung mit den Servern aufrecht zu erhalten. Bei einem Verbindungsabbruch wird der Client automatisch abgemeldet
     class ErhaltungServerClient
     {
@@ -471,7 +490,7 @@ namespace KSGClient
         // 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; // Erhält die Verbindung aufrecht
+        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
@@ -492,7 +511,92 @@ namespace KSGClient
     //  Kann nur von eingeloggten Clients verwendet werden
     class ChatServerClient
     {
-
+    public:
+        // verbindet sich mit dem zugewiesenen Chat Server
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool verbinde() = 0;
+        // sendet eine Chat Nachricht zu einem Account
+        //  zuAccount: Id des Ziel Accounts
+        //  nachricht: Die Nachricht
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool chatNachricht( int zuAccount, const char *nachricht ) = 0;
+        // ändert den angezeigten Account Namen
+        //  name: der neue Name
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool accountNameÄndern( const char *name ) = 0;
+        // beendet die Freundschaft mit einem Account
+        //  accountId: Die Id des Accounts
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool freundschaftBeenden( int accountId ) = 0;
+        // sendet eine Freundesanfragezu einem Account
+        //  accountId: Die Id des Accounts
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool freundesAnfrage( int accountId ) = 0;
+        // beantwortet eine Freundesanfrage
+        //  accountId: Die Id des Accounts
+        //  ja: 1:=annehmen,0:=ablehnen
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool freundesAnfrageBeantworten( int accountId, bool ja ) = 0;
+        // erstellt ein chatroom
+        //  name: Der Name des Chatrooms
+        //  Gibt bei erfolg die Id des Chatrooms zurück, 0 sonst
+        virtual int chatroomErstellen( const char *name ) = 0;
+        // Sendet eine Einladung zum Chatroom
+        //  accountId: Die Id des Accounts der eingeladen werden soll
+        //  chatroomId: Die Id des Chatrooms
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool chatroomEinladung( int accountId, int chatroomId ) = 0;
+        // Einladung zum Chatroom wird abgelehnt
+        //  accountId: Die Id des Accounts
+        //  chatroomId: Die Id des Chatrooms
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool chatroomEinladungAblehnen( int accountId, int chatroomId ) = 0;
+        // betritt ein chatroom
+        //  chatroomId: Die Id des Chatrooms
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool chatroomBetreten( int chatroomId ) = 0;
+        // chatroom Nachricht senden
+        //  chatroomId: Die Id des Chatrooms
+        //  nachricht: Die Nachricht die gesendet werden soll
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool chatroomNachricht( int chatroomId, const char *nachricht ) = 0;
+        // verlässt chatroom
+        //  chatroomId: Die Id des Chatrooms
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool chatroomVerlassen( int chatroomId ) = 0;
+        // kickt Account aus Chatroom (nur wenn als admin des Chatrooms eingeloggt)
+        //  chatroomId: Die Id des Chatrooms
+        //  accountId: Die Id des Accounts
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool chatroomKick( int chatroomId, int accountId ) = 0;
+        // fragt nach allen freunden
+        //  Die Liste der Freunde kann über getNextMessage empfangen werden
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool freundesListeAnfragen() = 0;
+        // fragt nach allen chatnachrichten, die gesendet wurden, während der Account in den der Client eingeloggt ist, offline war
+        //  Die einzelnen Nachrichten können über getNextMessage empfangen werden
+        //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
+        virtual bool chatNachrichtAnfrage() = 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;
+        // Wartet auf eine Nachricht vom Chatserver und gibt diese zurück.
+        virtual ChatServerNachricht *getNextMessage() = 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 ChatServerClient *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 ChatServerClient *release() = 0;
     };
 
     // Wird verwendet um Spiele oder Karten zu kaufen