Client.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #ifndef CLIENT_H
  2. #define CLIENT_H
  3. #include "network/ENet.h"
  4. #include "utils/StringBuffer.h"
  5. class Client final {
  6. typedef enet_uint16 Port;
  7. typedef StringBuffer<256> Error;
  8. private:
  9. ENetHost* client;
  10. ENetPeer* connection;
  11. Error error;
  12. public:
  13. Client();
  14. Client(const Client&) = delete;
  15. Client(Client&&) = delete;
  16. ~Client();
  17. Client& operator=(const Client&) = delete;
  18. Client& operator=(Client&&) = delete;
  19. bool hasError() const;
  20. const Error& getError() const;
  21. bool connect(const char* server, Port port, int timeout);
  22. void disconnect();
  23. template<typename T>
  24. void consumeEvents(T& consumer) {
  25. (void)consumer;
  26. ENetEvent e;
  27. while(enet_host_service(client, &e, 0) > 0) {
  28. switch(e.type) {
  29. case ENET_EVENT_TYPE_CONNECT: std::cout << "1\n"; break;
  30. case ENET_EVENT_TYPE_RECEIVE: std::cout << "2\n"; break;
  31. case ENET_EVENT_TYPE_DISCONNECT_TIMEOUT:
  32. case ENET_EVENT_TYPE_DISCONNECT: std::cout << "3\n"; break;
  33. case ENET_EVENT_TYPE_NONE: std::cout << "4\n"; return;
  34. }
  35. }
  36. }
  37. };
  38. #endif