Prozess.cpp 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. #include "Prozess.h"
  2. // Inhalt der Klasse Prozess aus Prozess.h
  3. // Konstruktor
  4. Prozess::Prozess( EditorKlientV *klient, int aktion, Array< void* > *args, ProzessReturn *r )
  5. : Thread()
  6. {
  7. this->k = klient;
  8. ak = aktion;
  9. this->args = args;
  10. ret = r;
  11. ref = 1;
  12. start();
  13. }
  14. // Destruktor
  15. Prozess::~Prozess()
  16. {
  17. args->release();
  18. k->release();
  19. }
  20. // nicht constant
  21. void Prozess::thread()
  22. {
  23. k->lock();
  24. Klient *c = k->zKlient();
  25. c->sendeEncrypted( "\x7", 1 );
  26. char ret = 0;
  27. c->getNachrichtEncrypted( &ret, 1 );
  28. if( ret == 1 )
  29. {
  30. c->sendeEncrypted( "\xF", 1 );
  31. char ret = 0;
  32. c->getNachrichtEncrypted( &ret, 1 );
  33. if( ret == 1 )
  34. {
  35. switch( ak )
  36. {
  37. case 0:
  38. init();
  39. break;
  40. case 1:
  41. sitzungWiederherstellen();
  42. break;
  43. case 2:
  44. sitzungVerwerfen();
  45. break;
  46. }
  47. }
  48. }
  49. if( ret == 3 )
  50. {
  51. char byte = 0;
  52. c->getNachrichtEncrypted( &byte, 1 );
  53. char *f = new char[ byte + 1 ];
  54. f[ byte ] = 0;
  55. c->getNachrichtEncrypted( f, byte );
  56. Text fehler = f;
  57. delete[] f;
  58. Array< void* > args;
  59. args.add( (void*)&fehler );
  60. if( this->ret )
  61. this->ret->prozessEnd( ak, 0, args );
  62. }
  63. k->unlock();
  64. run = 0;
  65. }
  66. // Reference Counting
  67. Prozess *Prozess::getThis()
  68. {
  69. ref++;
  70. return this;
  71. }
  72. Prozess *Prozess::release()
  73. {
  74. ref--;
  75. if( !ref )
  76. delete this;
  77. return 0;
  78. }
  79. // privat
  80. void Prozess::init() // aktion = 0
  81. {
  82. }
  83. void Prozess::sitzungWiederherstellen() // aktion = 1
  84. {
  85. }
  86. void Prozess::sitzungVerwerfen() // aktion = 2
  87. {
  88. }