NetworkServer.h 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. /*
  2. * NetworkServer.h, part of VCMI engine
  3. *
  4. * Authors: listed in file AUTHORS in main folder
  5. *
  6. * License: GNU General Public License v2.0 or later
  7. * Full text of license available in license.txt file, in main folder
  8. *
  9. */
  10. #pragma once
  11. #include "NetworkDefines.h"
  12. VCMI_LIB_NAMESPACE_BEGIN
  13. class NetworkConnection;
  14. class DLL_LINKAGE NetworkServer : boost::noncopyable
  15. {
  16. std::shared_ptr<NetworkService> io;
  17. std::shared_ptr<NetworkAcceptor> acceptor;
  18. std::set<std::shared_ptr<NetworkConnection>> connections;
  19. void connectionAccepted(std::shared_ptr<NetworkSocket>, const boost::system::error_code & ec);
  20. void startAsyncAccept();
  21. protected:
  22. virtual void onNewConnection(std::shared_ptr<NetworkConnection>) = 0;
  23. virtual void onPacketReceived(std::shared_ptr<NetworkConnection>, const std::vector<uint8_t> & message) = 0;
  24. void sendPacket(const std::shared_ptr<NetworkConnection> &, const std::vector<uint8_t> & message);
  25. public:
  26. virtual ~NetworkServer() = default;
  27. void start(uint16_t port);
  28. void run();
  29. };
  30. VCMI_LIB_NAMESPACE_END