EditorKlient.cpp 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. #include "EditorKlient.h"
  2. // Inhalt der EditorKlient Klasse aus EditorKlient.h
  3. // Konstruktor
  4. // k: Der zu verwendende Klient
  5. EditorKlient::EditorKlient( EditorKlientV *k )
  6. {
  7. klient = k;
  8. ref = 1;
  9. }
  10. // Destruktor
  11. EditorKlient::~EditorKlient()
  12. {
  13. klient->release();
  14. }
  15. // Initialisiert den Server
  16. // return: 1, falls erfolgreich
  17. // 2, falls bereits eine Sitzung existiert
  18. // 0, sonnst
  19. int EditorKlient::init()
  20. {
  21. klient->lock();
  22. error = "";
  23. Klient *k = klient->zKlient();
  24. k->sendeEncrypted( "\x7", 1 );
  25. char ret = 0;
  26. k->getNachrichtEncrypted( &ret, 1 );
  27. if( ret == 1 )
  28. {
  29. k->sendeEncrypted( "\xF", 1 );
  30. k->getNachrichtEncrypted( &ret, 1 );
  31. if( ret == 1 )
  32. {
  33. k->sendeEncrypted( "\x0", 1 );
  34. k->getNachrichtEncrypted( &ret, 1 );
  35. }
  36. }
  37. if( ret == 3 )
  38. {
  39. char l = 0;
  40. k->getNachrichtEncrypted( &l, 1 );
  41. char *err = new char[ l + 1 ];
  42. err[ l ] = 0;
  43. k->getNachrichtEncrypted( err, l );
  44. error = err;
  45. delete[] err;
  46. ret = 0;
  47. }
  48. klient->unlock();
  49. return ret;
  50. }
  51. // Gibt den Letzten Fehler zurück
  52. char *EditorKlient::getLastError() const
  53. {
  54. return error;
  55. }
  56. // Reference Counting
  57. EditorKlient *EditorKlient::getThis()
  58. {
  59. ref++;
  60. return this;
  61. }
  62. EditorKlient *EditorKlient::release()
  63. {
  64. if( !--ref )
  65. delete this;
  66. return 0;
  67. }