Prozess.cpp 1.8 KB

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