123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- #include "EditorKlient.h"
- #include <Klient.h>
- using namespace Network;
- // Inhalt der EditorKlient Klasse aus EditorKlient.h
- // Konstruktor
- // k: Der zu verwendende Klient
- EditorKlient::EditorKlient( EditorKlientV *k )
- {
- klient = k;
- ref = 1;
- }
- // Destruktor
- EditorKlient::~EditorKlient()
- {
- klient->release();
- }
- // Initialisiert den Server
- // return: 1, falls erfolgreich
- // 2, falls bereits eine Sitzung existiert
- // 0, sonnst
- int EditorKlient::init()
- {
- klient->lock();
- error = "";
- Klient *k = klient->zKlient();
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\xF", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x0", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->getNachrichtEncrypted( &ret, 1 );
- return ret;
- }
- }
- }
- if( ret == 3 )
- {
- char l = 0;
- k->getNachrichtEncrypted( &l, 1 );
- char *err = new char[ l + 1 ];
- err[ l ] = 0;
- k->getNachrichtEncrypted( err, l );
- error = err;
- delete[] err;
- ret = 0;
- }
- klient->unlock();
- return ret;
- }
- // Verwirft die vorhandene Sitzung und erstellt eine neue
- bool EditorKlient::sitzungVerwerfen()
- {
- klient->lock();
- error = "";
- Klient *k = klient->zKlient();
- k->sendeEncrypted( "\x7", 1 );
- char ret = 0;
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\xF", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- if( ret == 1 )
- {
- k->sendeEncrypted( "\x1", 1 );
- k->getNachrichtEncrypted( &ret, 1 );
- }
- }
- if( ret == 3 )
- {
- char l = 0;
- k->getNachrichtEncrypted( &l, 1 );
- char *err = new char[ l + 1 ];
- err[ l ] = 0;
- k->getNachrichtEncrypted( err, l );
- error = err;
- delete[] err;
- ret = 0;
- }
- klient->unlock();
- return ret == 1;
- }
- // Gibt den Letzten Fehler zurück
- char *EditorKlient::getLastError() const
- {
- return error;
- }
- // Reference Counting
- EditorKlient *EditorKlient::getThis()
- {
- ref++;
- return this;
- }
- EditorKlient *EditorKlient::release()
- {
- if( !--ref )
- delete this;
- return 0;
- }
|