FactoryClient.cpp 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #include "FactoryClient.h"
  2. using namespace Network;
  3. FactoryClient::FactoryClient()
  4. {
  5. client = 0;
  6. connected = 0;
  7. reader = 0;
  8. }
  9. FactoryClient::~FactoryClient()
  10. {
  11. if( client )
  12. disconnect();
  13. }
  14. bool FactoryClient::connect( Text ip, short port, int accountId, Text secret )
  15. {
  16. if( client )
  17. disconnect();
  18. client = new SSLKlient();
  19. if( !client->verbinde( port, ip ) )
  20. return false;
  21. connected = 1;
  22. if( !client->sende( "\1", 1 ) )
  23. return false;
  24. if( !client->sende( (char *)&accountId, 4 ) )
  25. return false;
  26. unsigned char len = (unsigned char)secret.getLength();
  27. if( !client->sende( (char *)&len, 1 ) )
  28. return false;
  29. if( !client->sende( secret, len ) )
  30. return false;
  31. char result = 0;
  32. if( !client->getNachricht( &result, 1 ) || result != 1 )
  33. return false;
  34. reader = new NetworkReader( client );
  35. return true;
  36. }
  37. void FactoryClient::disconnect()
  38. {
  39. if( client )
  40. {
  41. if( connected )
  42. client->sende( "\2", 1 );
  43. delete reader;
  44. client->trenne();
  45. client->release();
  46. client = 0;
  47. }
  48. }
  49. NetworkReader *FactoryClient::getNextMessage()
  50. {
  51. if( !client )
  52. return 0;
  53. if( !client->hatNachricht( 0 ) )
  54. return 0;
  55. char type = 0;
  56. if( !client->getNachricht( &type, 1 ) )
  57. return 0;
  58. if( type == 1 )
  59. {
  60. client->trenne();
  61. client->release();
  62. client = 0;
  63. return 0;
  64. }
  65. if( !client->hatNachricht( 0 ) )
  66. return 0;
  67. return reader;
  68. }